如果任何Ansible任务失败,则输出错误,playbook将显示换行符'\ n'。对于追溯,跨越多行,这使得它很难阅读。
有没有办法让ansible-playbook显示来自shell
,pip
,git
以及其他类似任务的非转义错误输出?
答案 0 :(得分:21)
在 ansible.cfg 文件的默认部分添加 stdout_callback = debug 和 stderr_callback = debug 。
[defaults]
(...)
stdout_callback=debug
stderr_callback=debug
这是由ansible>支持的。 2.0
答案 1 :(得分:5)
YAML输出从Ansible 2.5开始可用。
将这些行添加到ansible.cfg
的[defaults]
部分:
stdout_callback = yaml
stderr_callback = yaml
如果您习惯了默认输出,这将会改变您的生活!
在other output options,minimal
和debug
中也提供了不错的JSON输出。
答案 2 :(得分:4)
Ansible Callbacks 回调是更有趣的插件类型之一。向Ansible添加额外的回调插件允许在响应事件时添加新行为。
Human-Readable Ansible Playbook Log Output Using Callback Plugin
答案 3 :(得分:0)
如果是针对任何特定任务,可以使用debug
模块。要查看shell或任何命令的输出,首先使用以下命令在变量中注册:
....
register: shell_output
- name: View Clear Output
debug:
var: shell_output
此输出也可以在json中解析。使用shell_output_to_json
。
答案 4 :(得分:0)
以下是一种快速而肮脏的解决方法
echo -en "$(<some ansible command>)"
答案 5 :(得分:0)
Ansible确实关心stdout_callback
,并且可以使用受支持的插件之一(可以使用ansible-doc -t callback -l
列出)。
尽管stderr_callback
似乎不再受支持。我找不到一种为OUT和ERR分别输出的方法。