【发布时间】:2016-09-07 09:43:54
【问题描述】:
如果任何 Ansible 任务失败,有错误输出,playbook 将显示它换行符转义 '\n'。对于跨越多行的回溯,这使得它非常难以阅读。
有没有办法让 ansible-playbook 显示来自shell、pip、git 和其他类似任务的未转义错误输出?
【问题讨论】:
如果任何 Ansible 任务失败,有错误输出,playbook 将显示它换行符转义 '\n'。对于跨越多行的回溯,这使得它非常难以阅读。
有没有办法让 ansible-playbook 显示来自shell、pip、git 和其他类似任务的未转义错误输出?
【问题讨论】:
在 ansible.cfg 文件的 defaults 部分添加 stdout_callback=debug 和 stderr_callback=debug。
[defaults]
(...)
stdout_callback=debug
stderr_callback=debug
这由 ansible > 2.0 支持
【讨论】:
[default]!?
\t 结尾。我在 ansible 2.6.2 上尝试了这个配置。但我看不出有什么不同。有什么我想念的吗?
stderr_callback?它不在 v2.9 的源代码和文档中。
从 Ansible 2.5 开始提供 YAML 输出。
在ansible.cfg 的[defaults] 部分添加这些行:
stdout_callback = yaml
stderr_callback = yaml
如果你习惯了默认输出,这将改变你的生活!
在other output options、minimal 和debug 中,也提供了不错的 JSON 输出。
【讨论】:
debug 选项在事情没有中断时会抛出大量多余的空格,尤其是对于调试语句。设置yaml 提供了易于阅读的格式,没有空格。
Ansible Callbacks 回调是更有趣的插件类型之一。向 Ansible 添加额外的回调插件允许在响应事件时添加新的行为。
Human-Readable Ansible Playbook Log Output Using Callback Plugin.
【讨论】:
如果是针对任何特定任务,debug 模块都可以使用。要查看 shell 或任何命令的输出,首先使用以下命令将其注册到变量中:
....
register: shell_output
- name: View Clear Output
debug:
var: shell_output
这个输出也可以用 json 解析。使用shell_output_to_json。
【讨论】:
下面是一个快速而肮脏的修复方法
echo -en "$(<some ansible command>)"
【讨论】:
Ansible 确实关注stdout_callback,并且可以使用支持的插件之一(可以使用ansible-doc -t callback -l 列出)。
虽然stderr_callback 似乎不再受支持。我找不到为 OUT 和 ERR 分别输出的方法。
【讨论】: