Disons que j'exécute ce qui suit.
$ cat test.sh
#!/bin/bash
echo Hello World
exit 0
$ cat Hello.yml
---
- hosts: MyTestHost
tasks:
- name: Hello yourself
script: test.sh
$ ansible-playbook Hello.yml
PLAY [MyTestHost] ****************************************************************
GATHERING FACTS ***************************************************************
ok: [MyTestHost]
TASK: [Hello yourself] ********************************************************
ok: [MyTestHost]
PLAY RECAP ********************************************************************
MyTestHost : ok=2 changed=0 unreachable=0 failed=0
$
Je sais avec certitude que cela a réussi.
Où / comment puis-je voir le "Hello World" renvoyé / imprimé par mon script sur l'hôte distant (MyTestHost)? Ou le code retour / sortie du script?
Mes recherches me montrent qu'il serait possible d'écrire un plugin pour intercepter les rappels d'exécution de module ou quelque chose sur ces lignes et d'écrire un fichier journal. Je préférerais ne pas perdre mon temps avec ça.
Par exemple, quelque chose comme le stdout ci-dessous (notez que j'utilise ansible et non ansible-playbook):
$ ansible plabb54 -i /project/plab/svn/plab-maintenance/ansible/plab_hosts.txt -m script -a ./test.sh
plabb54 | success >> {
"rc": 0,
"stderr": "",
"stdout": "Hello World\n"
}
$
set -x
etset +x
dans un script shell.no_log: True
indicateur pour empêcher une commande ou un playbook de se connecter, mais c'est aussi précis que possible, je crois.logrotate
àlog_path
pour que chaqueansible
course a un fichier différent (avec la commande / PlayBook inclus dans le fichier)?v
s pour obtenir stdout et stderrLa tâche de script de playbook sera générée
stdout
comme la commande non-playbook, il suffit de l'enregistrer dans une variable à l'aide deregister
. Une fois que nous avons cela, le module de débogage peut imprimer sur le flux de sortie du playbook.La sortie devrait ressembler à ceci:
la source
Il existe également un autre moyen de générer un fichier journal.
Avant d'exécuter,
ansible-playbook
exécutez les commandes suivantes pour activer la journalisation:Spécifiez l'emplacement du fichier journal.
Activer le débogage
Pour vérifier ce fichier journal généré.
la source
Plugins officiels
Vous pouvez utiliser les plugins de rappel de sortie . Par exemple, à partir d'Ansible 2.4, vous pouvez utiliser le plugin de rappel de sortie de débogage :
(Alternativement, exécutez
export ANSIBLE_STDOUT_CALLBACK=debug
avant d'exécuter votre playbook)Important: vous devez exécuter
ansible-playbook
avec l' option-v
(--verbose
) pour voir l'effet. Avecstdout_callback = debug
set, la sortie devrait maintenant ressembler à ceci:Il existe d'autres modules en plus du
debug
module si vous souhaitez que la sortie soit formatée différemment. Il y ajson
,yaml
,unixy
,dense
,minimal
, etc. ( liste complète ).Par exemple, avec
stdout_callback = yaml
, la sortie ressemblera à ceci:Plugins tiers
Si aucun des plugins officiels n'est satisfaisant, vous pouvez essayer le
human_log
plugin. Il existe plusieurs versions:https://github.com/n0ts/ansible-human_log
https://gist.github.com/cliffano/9868180
la source
En utilisant des plugins de rappel, vous pouvez avoir la sortie stdout de vos commandes sous une forme lisible avec le play: gist: human_log.py
la source
Aide en ligne de commande Ansible, telle que
ansible-playbook --help
montre comment augmenter la verbosité de sortie en définissant le mode verbeux (-v) sur plus de verbosité (-vvv) ou sur la verbosité de débogage de connexion (-vvvv). Cela devrait vous donner certains des détails que vous recherchez dans stdout, que vous pouvez ensuite enregistrer.la source