J'ai un jeu Ansible pour PGBouncer qui affiche une sortie d'un module de statistiques intégré à PGBouncer.
Mon problème est que lorsque Ansible imprime la sortie sur le terminal, il modifie les sauts de ligne. Au lieu de voir
----------
| OUTPUT |
----------
Je vois
----------\n| OUTPUT |\n----------
Est-ce que quelqu'un sait comment faire pour que Ansible puisse "imprimer joliment" la sortie?
Il n'y a aucun moyen de faire ce que vous voulez en natif dans Ansible. Vous pouvez le faire comme solution de contournement:
ansible-playbook ... | sed 's/\\n/\n/g'
Si vous voulez une sortie plus conviviale, définissez:
ANSIBLE_STDOUT_CALLBACK=debug
Cela rendra utilisable ansible le module de sortie de débogage (précédemment nommé human_log
) whinch malgré son nom malheureux est moins verbeux et beaucoup plus facile à lire par les humains.
Si vous obtenez une erreur indiquant que ce module n'est pas disponible, mettez à niveau Ansible ou ajoutez ce module localement si vous ne pouvez pas mettre à niveau ansible, cela fonctionnera avec les versions de ansible comme 2.0 ou probablement 1.9.
Une autre option pour configurer ceci consiste à ajouter stdout_callback = debug
à votre ansible.cfg
Vous pouvez utiliser un plugin de rappel . Cela analysera de nouveau votre sortie et sera facilement activé et désactivé.
Trouvé this dans le forum du groupe Ansible Project:
- name: "Example test"
command:
...
register: test
- name: "Example test stdout"
debug:
msg: "{{ test.stdout.split('\n') }}"
- name: "Example test stderr"
debug:
msg: "{{ test.stderr.split('\n') }}"
Nous transformons essentiellement cela en liste en le divisant par nouvelle ligne, puis en imprimant cette liste.
Si vous n'êtes pas en cours d'exécution sur des hôtes parallèles, vous pouvez utiliser le module pause :
- pause:
Prompt: "{{ variable_blob.stdout }}"
Se déplace sans entrée en définissant minutes ou secondes mais l'entrée utilisateur est pas capturé.
Crédit: https://github.com/ansible/ansible/issues/17446#issuecomment-245391682
Remarque: Sur les hôtes parallèles, seule la sortie du premier hôte sera affichée
Si vous voulez le voir dans un format qui imite pratiquement la sortie standard, vous pouvez utiliser le plugin de rappel debug
avec le module debug
dans Ansible 2.7+ comme ceci:
- name: "Test Output"
debug:
msg: "{{ test_result.stdout_lines | join('\n') }}"