如何看到命令的标准输出?

我如何看到标准输出剧本命令? -v只显示可靠的输出,而不是单个命令。 如果我能够立即想出如何做到这一点,那将是非常好的,所以如果某件事失败或挂起,我可以看出原因。

例如

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

会打印

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

我认为你可以将结果注册到一个variables,然后用debugging打印。

 - name: print to stdout command: echo "hello" register: hello - debug: msg="{{ hello.stdout }}" - debug: msg="{{ hello.stderr }}" 

我build议使用stdout_lines而不是stdout 。 对于多行输出,这是更好,例如

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

关于实时输出的debugging目的,有一个封闭的错误报告https://github.com/ansible/ansible/issues/3887#issuecomment-54672569讨论为什么这是不可能的,将不会实施的原因。

我发现使用最简单的 stdout_callbackstdout_callback -playbook给出类似的输出来使用ad-hoc ansible。

在你的ansible.cfg(请注意,我在OS X上,所以修改callback_pluginspath,以适应您的安装)

 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