Como ver stdout de comandos ansible?

128

Como eu vejo stdout para comandos ansible-playbook? -v mostra apenas uma saída ansible, não os comandos individuais. Seria ótimo se eu pudesse descobrir como fazer isso imediatamente, então se algo falhar ou trava eu posso ver o porquê.

por exemplo,

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

imprimiria

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

hello
    
por QuinnBaetz 06.09.2013 / 23:01

3 respostas

130

Acho que você pode registrar o resultado em uma variável e, em seguida, imprimir com a depuração.

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

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

- debug: msg="{{ hello.stderr }}"
    
por 14.09.2013 / 15:01
77

Em vez de stdout , sugiro usar stdout_lines . Para a saída multilinha, isso é muito mais agradável, por exemplo,

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

    - debug: var=out.stdout_lines

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"
        ]
    }
}

Em relação à saída em tempo real para fins de depuração, há um relatório de bug fechado link discutir as razões pelas quais isso não é possível e não será implementado.

    
por 08.09.2015 / 20:12
13

Eu encontrei usando o mínimo stdout_callback com o ansible-playbook deu um resultado semelhante ao uso de anúncios ad-hoc.

Em seu ansible.cfg (Observe que estou no OS X, então modifique o caminho callback_plugins para adequar sua instalação)

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

Para que uma tarefa como essa

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

Dá saída como essa, como um comando ad-hoc faria

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

Estou usando o ansible-playbook 2.2.1.0

    
por 06.04.2017 / 10:12