web-dev-qa-db-ja.com

ansibleコマンドのstdoutを表示する方法は?

Ansible-playbookコマンドのstdoutを表示するにはどうすればよいですか? -vは、個々のコマンドではなく、ansible出力のみを表示します。これをすぐに実行する方法を理解できればすばらしいので、何かが失敗またはハングした場合、その理由を確認できます。

例えば.

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

印刷する

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

hello
182
QuinnBaetz

結果を変数に登録して、デバッグで印刷できると思います。

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

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

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

stdoutの代わりに、stdout_linesを使用することをお勧めします。複数行出力の場合、これは非常に優れています。

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

デバッグ目的のリアルタイム出力に関しては、クローズされたバグレポートがあります https://github.com/ansible/ansible/issues/3887#issuecomment-54672569 これが不可能であり、できない理由についての議論実装されます。

106
Mars

minimalstdout_callback ansible-playbookを使用すると、アドホックansibleを使用した場合と同様の出力が得られました。

Ansible.cfgで(私はOS Xを使用しているので、callback_pluginsインストールに適したパス)

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

このようなタスク

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

アドホックコマンドのように、このような出力を提供します

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

私はansible-playbook 2.2.1.0を使用しています

20
Jason S