andrewvaughan.prompt
Traduction
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'optionask
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'optionask
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, etPATCH
- 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.
Ansible role that provides functionality for messaging and prompting users for input during tasks.
ansible-galaxy install andrewvaughan.prompt