web-dev-qa-db-fra.com

Comment voir la sortie standard des commandes ansible?

Comment puis-je voir stdout pour les commandes ansible-playbook? -v affiche uniquement la sortie ansible, pas les commandes individuelles. Ce serait formidable si je pouvais comprendre comment le faire immédiatement, donc si quelque chose échoue ou se bloque, je peux voir pourquoi.

par exemple.

- name: print to stdout
  action: command echo "hello"

imprimerait

TASK: [print variable] ******************************************************** 

hello
182
QuinnBaetz

Je pense que vous pouvez enregistrer le résultat dans une variable, puis l'imprimer avec le débogage.

- name: print to stdout
  command: echo "hello"
  register: hello

- debug: msg="{{ hello.stdout }}"

- debug: msg="{{ hello.stderr }}"
179
bfschott

Au lieu de stdout je suggère d'utiliser stdout_lines . Pour la sortie multiligne, c'est beaucoup plus agréable, par ex.

- hosts: all
  tasks:
    - name: Run ls.sh and output "ls /"
      script: ls.sh
      register: out

    - debug: var=out.stdout_lines

donne

TASK: [debug var=out.stdout_lines] ******************************************** 
ok: [local] => {
    "var": {
        "out.stdout_lines": [
            "total 61", 
            "lrwxrwxrwx   1 root root     7 Feb 15  2015 bin -> usr/bin", 
            "drwxr-xr-x   6 root root  1024 Aug 24 22:08 boot", 
            "drwxr-xr-x  22 root root  3580 Sep  8 18:41 dev",  
            [...] 
            "drwxr-xr-x   9 root root  4096 Aug 25 19:14 usr", 
            "drwxr-xr-x  13 root root  4096 Feb 25  2015 var"
        ]
    }
}

En ce qui concerne la sortie en temps réel à des fins de débogage, il existe un rapport de bogue fermé https://github.com/ansible/ansible/issues/3887#issuecomment-54672569 discutant les raisons pour lesquelles cela n'est pas possible et ne le sera pas être implémenté.

106
Mars

J'ai trouvé en utilisant le minimalstdout_callback avec ansible-playbook a donné une sortie similaire à l'utilisation de ansible ad-hoc.

Dans votre ansible.cfg (notez que je suis sous OS X donc modifiez le callback_plugins chemin adapté à votre installation)

stdout_callback     = minimal
callback_plugins    = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/plugins/callback

Pour qu'une tâche comme celle-ci

---
- hosts: example
  tasks:
   - name: Say hi
     command: echo "hi ..."

Donne une sortie comme celle-ci, comme le ferait une commande ad hoc

example | SUCCESS | rc=0 >>
hi ...

J'utilise ansible-playbook 2.2.1.0

20
Jason S