Ansible - message d'Impression - debug: msg=“ligne1 \n {{ var2 }} \n line3 avec var3 = {{ var3 }}”
Dans Ansible (1.9.4) ou 2.0.0
J'ai couru l'action suivante:
- debug: msg="line1 \n {{ var2 }} \n line3 with var3 = {{ var3 }}"
$ cat rôles/setup_jenkins_slave/tâches/main.yml
- debug: msg="Installing swarm slave = {{ slave_name }} at {{ slaves_dir }}/{{ slave_name }}"
tags:
- koba
- debug: msg="1 == Slave properties = fsroot[ {{ slave_fsroot }} ], master[ {{ slave_master }} ], connectingToMasterAs[ {{ slave_user }} ], description[ {{ slave_desc }} ], No.Of.Executors[ {{ slave_execs }} ], LABELs[ {{ slave_labels }} ], mode[ {{ slave_mode }} ]"
tags:
- koba
- debug: msg="print(2 == Slave properties = \n\nfsroot[ {{ slave_fsroot }} ],\n master[ {{ slave_master }} ],\n connectingToMasterAs[ {{ slave_user }} ],\n description[ {{ slave_desc }} ],\n No.Of.Executors[ {{ slave_execs }} ],\n LABELs[ {{ slave_labels }} ],\n mode[ {{ slave_mode }} ])"
tags:
- koba
Mais ce n'est pas l'impression que la variable avec de nouvelles lignes (pour la 3ème action de débogage)?
Vous devez vous connecter pour publier un commentaire.
debug module de support de tableau, de sorte que vous pouvez le faire comme ceci:
La sortie:
Ou vous pouvez utiliser la méthode à partir de cette réponse:
En YAML, comment puis-je rompre une chaîne de caractères sur plusieurs lignes?
Le moyen le plus pratique que j'ai trouvé pour l'impression de texte multi-ligne avec le debug est:
Il divise le message dans un tableau et de débogage de tirages pour chaque ligne comme une chaîne de caractères. La sortie est:
Grâce à jhutar.
La suppression de la dernière chaîne vide de
apt
avec[:-1]
Ci-dessus
debug:
ligne de résultats à nice les sauts de ligne, en raison de.split('\n')
, et une suppression de la dernière chaîne vide grâce à[:-1]
; qui est Python de manipulation de chaîne, bien sûr.Je creuse un peu sur @Bruce P répondre sur la tuyauterie de sortie à travers la sed, et c'est ce que je suis venu jusqu'à :
si quelqu'un est intéressé.
C'est discuté ici. En bref, vous avez besoin pour votre pipe de sortie à travers la sed pour convertir le
\n
à un retour à la ligne, ou vous devez écrire un rappel plugin pour le faire pour vous.Comme une solution de contournement, j'ai utilisé with_items et il a travaillé pour moi.
Pause module:
Le plus commode et simple de la façon que j'ai trouvée pour afficher un message de mise en forme (ex: de nouvelles lignes, onglets ...) est d'utiliser le "pause module" au lieu de "debug" module:
Vous pouvez également inclure une variable qui contient la mise en forme (les nouvelles lignes, les onglets...) à l'intérieur de l'invite et il sera affiché comme prévu:
-
Astuce:
lorsque vous voulez afficher la sortie d'une commande, et au lieu d'exécuter une tâche supplémentaire pour exécuter la commande et enregistrer la sortie, vous pouvez utiliser directement le tuyau de recherche à l'intérieur de l'invite de commandes et de faire le travail d'un seul coup:
-
Notes supplémentaires concernant la pause module:
Si vous avez plusieurs hôtes, être à l'esprit que la "pause" tâche sera exécutée
qu'une seule fois contre le premier hôte dans la liste des hôtes.
Cela signifie que si la variable que vous souhaitez afficher n'existe que dans
une partie de l'accueil et le premier hôte ne contient pas de variable
ensuite, vous obtiendrez un message d'erreur.
Pour éviter un tel problème, utiliser {{ hostvars['my_host']['ma_var'] }}
au lieu de {{ ma_var }}
Combinaison de "pause", "si" conditionnel peut ignorer la tâche!, pourquoi?
Parce que la tâche sera exécuté qu'une fois contre le premier hôte qui
pourraient ne pas se conformer à l'énoncé de "quand" les conditions.
Pour éviter cela, n'utilisez pas de conditions qui limitent le nombre de
les hôtes! comme vous n'avez pas besoin qu'il soit, parce que tu sais que la tâche sera
exécuter une seule fois de toute façon, également utiliser hostvars indiqué ci-dessus pour vous assurer
vous obtenez le besoin de variable quel que soit le ramassé de l'hôte est.
Exemple:
Incorrect:
Cet exemple va sauter la pause tâche, car il permettra de choisir seulement le premier hôte "host1" et puis commence à évaluer les conditions, si elle conclut que "host1" en ne se conformant pas à la deuxième condition, il va ignorer la tâche.
Correct:
Un autre exemple d'affichage des messages dont le contenu dépend de l'hôte:
Vous pouvez utiliser
stdout_lines
de registre variable: