web-dev-qa-db-fra.com

Afficher la sortie avec Ansible

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?

44
mjallday

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'
15
jarv

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

73
sorin

Vous pouvez utiliser un plugin de rappel . Cela analysera de nouveau votre sortie et sera facilement activé et désactivé.

13
xddsg

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.

12
jhutar

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

1
wolfman-rack

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') }}"
0
daveystones