65 votes

Afficher la sortie avec Ansible

J'ai un Jeu Ansible pour PGBouncer qui affiche des données provenant d'un module de statistiques intégré à PGBouncer.

Mon problème est que lorsqu'Ansible imprime la sortie dans le terminal, les nouvelles lignes sont tronquées. Au lieu de voir

----------
| OUTPUT |
----------

Je vois.

----------\n| OUTPUT |\n----------

Quelqu'un sait-il comment faire en sorte qu'Ansible "imprime" la sortie ?

139voto

user712092 Points 351

Si vous voulez une sortie plus conviviale, définissez :

ANSIBLE_STDOUT_CALLBACK=debug

Cela permettra à ansible d'utiliser 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 pour les humains.

Si vous obtenez une erreur disant que ce module n'est pas disponible, mettez à jour Ansible ou ajoutez ce module localement si vous ne pouvez pas mettre à jour ansible, il fonctionnera avec les versions supérieures d'ansible comme 2.0 ou probablement même 1.9.

Une autre option pour configurer ceci est d'ajouter stdout_callback = debug à votre ansible.cfg

19voto

jarv Points 1243

Il n'y a pas de moyen de faire ce que vous voulez nativement dans Ansible. Vous pouvez le faire en tant que solution de rechange :

ansible-playbook ... | sed 's/\\n/\n/g'

18voto

Tomas Jansson Points 8021

Trouvé este 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 le transformons en liste en le séparant par une nouvelle ligne, puis nous imprimons cette liste.

14voto

xddsg Points 3144

Vous pouvez utiliser un plugin de rappel . Cette fonction permet de ré-analyser votre sortie et peut être facilement activée ou désactivée.

0voto

daveystones Points 21

Si vous voulez le voir dans un format qui imite pratiquement la sortie standard, vous pouvez utiliser la fonction debug avec le plugin de rappel debug dans Ansible 2.7+ comme ceci :

- name: "Test Output"
  debug:
    msg: "{{ test_result.stdout_lines | join('\n') }}"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X