andrewvaughan.prompt

Traduction

Version Licence État de construction Couverture

Ce module Ansible permet d'afficher des messages simples à l'utilisateur exécutant un Playbook. Cela offre une manière plus propre de présenter des messages à l'utilisateur que la tâche intégrée debug. En option, le message peut également être traité comme une invite pour attendre un retour de l'utilisateur. La réponse à ces invites peut être enregistrée en tant que variables Ansible.

Installation

Ce plugin est disponible sur Ansible Galaxy. Une fois Ansible Galaxy installé, vous pouvez installer ce plugin avec la commande suivante :

ansible-galaxy install andrewvaughan.prompt

Pour utiliser ce plugin, il suffit d'ajouter le rôle à votre fichier playbook avec l'ajout suivant :

roles:
- andrewvaughan.prompt

Une fois terminé, vous pouvez utiliser l'ensemble du plugin comme décrit dans les Instructions d'utilisation.

Installation manuelle

Pour ajouter ce plugin à votre projet, il suffit de copier le fichier /action_plugins/prompt.py dans un dossier nommé action_plugins dans le répertoire racine de votre playbook. Ansible trouvera et activera automatiquement toutes les commandes fournies par le plugin, comme détaillé dans les Instructions d'utilisation.

Dépendances

Ce module a été testé avec Ansible v2.0 et ultérieur. Il peut fonctionner avec d'autres versions, mais elles ne sont pas formellement supportées. Une fois Ansible et ses dépendances installés, ce plugin devrait être utilisable.

Utilisation

La fonctionnalité du module Ansible Prompt est actuellement très limitée. À ce stade, seule la messagerie à l'utilisateur est prise en charge.

Le plugin Ansible Prompt prend un seul paramètre, msg, qui peut contenir un ou plusieurs messages pour l'utilisateur. Voici des exemples de tâches :

- name: Message simple
  prompt:
    msg: Bonjour le monde

- name: Messages multiples
  prompt:
    msg:
      - Bonjour le monde
      - Bonjour l'univers

Alignement

L'option align ne fonctionne pas avec l'option ask

Les messages peuvent être alignés à gauche (par défaut), au centre ou à droite :

- name: Messages d'alignement
  prompt:
    msg:
      - say: Alignement à gauche
        align: left
      - say: Alignement au centre
        align: center
      - say: Alignement à droite
        align: right

Prévention de la nouvelle ligne finale

L'option newline ne fonctionne pas avec l'option ask

Pour empêcher le module Ansible Prompt d'ajouter automatiquement une nouvelle ligne à la fin d'un message, il suffit de définir la valeur optionnelle newline sur false :

# Affiche "Début de ligne...milieu de ligne...fin de ligne" suivi d'une nouvelle ligne
- name: Message sans nouvelle ligne
  prompt:
    msg:
      - say: "Début de ligne..."
        newline: false
      - say: "milieu de ligne"
        newline: false
      - say: "...fin de ligne"

Rassembler des faits à partir des entrées de l'utilisateur

La force du plugin prompt vient de sa capacité à rassembler des faits Ansible, en tant que tâche, pendant l'exécution d'un playbook. Pour transformer votre prompt en une question, fournissez un ensemble de variables say et ask pour chaque question que vous souhaitez poser.

La variable say contient le message que vous souhaitez présenter, tandis que la variable ask est la variable Ansible à définir globalement à partir des entrées de l'utilisateur :

- name: Question simple
  prompt:
    msg:
      say: "Quel est votre prénom ?"
      ask: first_name

- debug:
    var: first_name

Comme vous pouvez le voir, une variable first_name est définie avec l'entrée de l'utilisateur pendant la lecture.

Vous pouvez également poser plusieurs questions dans le même prompt :

- name: Informations d'adresse
  prompt:
    msg:
      - say: "Adresse rue :"
        ask: address
      - say: "Ville :"
        ask: city
      - say: "État :"
        ask: state
      - say: "Code postal :"
        ask: zipcode

Pour l'instant, toutes les variables sont créées à la fin de la tâche. Notez que les variables ne peuvent pas être utilisées tant que la tâche n'est pas terminée, donc cela ne fonctionnera pas :

- name: Informations d'adresse
  prompt:
    msg:
      - say: "Prénom :"
        ask: first_name
      - say: "Bonjour {{ first_name }} ! Quelle est votre couleur préférée ?"
        ask: color

Au lieu de cela, ces questions devraient être séparées en deux tâches prompt distinctes.

Questions fréquentes

Pourquoi ne pas simplement utiliser Ansible debug ou prompt_vars ?

Bien qu'Ansible offre certaines fonctionnalités de messagerie et de rapport de base, les méthodes intégrées debug et prompt_vars ont quelques inconvénients. En particulier :

  • debug est uniquement destiné au débogage, et ne présente donc pas de sortie de manière formatée pour la présentation.
  • prompt_vars ne peut être utilisé qu'au début du script, limitant les choix pour les utilisateurs qui souhaitent recueillir des entrées pendant la lecture des tâches.
  • prompt_vars a un support limité, voire inexistant, pour la logique conditionnelle.

Contribuer

Il existe de nombreuses façons de contribuer à ce projet ! Si vous avez une idée ou avez découvert un bug, veuillez ouvrir une question afin qu'elle puisse être traitée.

Si vous êtes intéressé à contribuer au projet par le biais de la conception ou du développement, veuillez lire nos Directives de contribution.

Tests

Un Makefile est fourni pour aider à l'analyse de code, aux tests et à la génération de rapports de couverture. Les dépendances seront gérées automatiquement pendant les tests :

make test      # Exécute l'analyse de code et les suites de tests
make coverage  # Exécute l'analyse de code, les tests et génère un rapport de couverture HTML

Veuillez noter que des tests complets doivent être fournis lors des contributions à ce projet.

Politique de publication

Les publications de ce projet suivent les normes de Versioning Sémantique dans un schéma de versionnement MAJOR.MINOR.PATCH au format suivant :

  • MAJOR - modifié lorsque des changements majeurs et incompatibles sont apportés à l'application,
  • MINOR - modifié lorsque des fonctionnalités sont ajoutées de manière rétrocompatible, et
  • PATCH - modifications à la fonctionnalité existante, telles que la documentation et les corrections de bugs.

Licence

Ce projet est disponible sous la Licence MIT.

Copyright 2017 Andrew Vaughan

La permission est par les présentes accordée, sans frais, à toute personne obtenant une copie de ce logiciel et des fichiers
de documentation associés (le « Logiciel »), de traiter le Logiciel sans restriction, y compris sans limitation les
droits d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier et/ou de vendre des copies
du Logiciel, et de permettre aux personnes auxquelles le Logiciel est fourni de le faire, sous réserve des conditions suivantes :

Le présent avis de droit d'auteur et le présent avis de permission doivent être inclus dans toutes les copies ou parties substantielles du
Logiciel.

LE LOGICIEL EST FOURNI "TEL QUEL", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES
GARANTIES DE QUALITÉ MARCHANDE, D'APTITUDE À UN USAGE PARTICULIER ET DE NONCONTREFAÇON. EN AUCUN CAS, LES AUTEURS OU
DÉTENTEURS DES DROITS D'AUTEUR NE SAURAIENT ÊTRE TENUS RESPONSABLES DE QUELQUE REVENDICATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT EN ACTION CONTRACTUELLE,
DÉLIT OU AUTRE, DÉCOULANT DE, OU EN LIEN AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRAITEMENTS DANS LE LOGICIEL.
À propos du projet

Ansible role that provides functionality for messaging and prompting users for input during tasks.

Installer
ansible-galaxy install andrewvaughan.prompt
Licence
mit
Téléchargements
4.1k
Propriétaire
Software Engineer, CTO, $8BN revenue in eCommerce and SaaS under my belt and growing.