ansible playbook中的清除错误输出

ansible playbook中的清除错误输出,ansible,ansible-playbook,Ansible,Ansible Playbook,如果任何Ansible任务失败,则有错误输出,playbook将显示它换行符“\n”。对于跨越多行的回溯,这使得阅读非常困难 有没有一种方法可以使ansible playbook显示来自shell、pip、git和其他类似任务的未跳过的错误输出? 回调是一种更有趣的插件类型。向Ansible添加其他回调插件允许在响应事件时添加新行为 .如果它用于任何特定任务,则可以使用调试模块。要查看shell或任何命令的输出,请首先使用以下命令将其注册到变量中: .... register: shell_ou

如果任何Ansible任务失败,则有错误输出,playbook将显示它换行符“\n”。对于跨越多行的回溯,这使得阅读非常困难

有没有一种方法可以使ansible playbook显示来自
shell
pip
git
和其他类似任务的未跳过的错误输出?

回调是一种更有趣的插件类型。向Ansible添加其他回调插件允许在响应事件时添加新行为


.

如果它用于任何特定任务,则可以使用
调试
模块。要查看shell或任何命令的输出,请首先使用以下命令将其注册到变量中:

....
register: shell_output

- name: View Clear Output
  debug: 
    var: shell_output
这个输出也可以用json解析。使用
shell\u output\u to_json

在文件的默认值部分添加stdout\u callback=debug和stderr\u callback=debug


ansible>2.0支持这一点。下面是一个快速而肮脏的修复程序

echo -en "$(<some ansible command>)"
echo-en“$()”

YAML输出从Ansible 2.5开始提供

在以下内容的
[defaults]
部分中添加这些行:

如果你习惯了默认输出,这将改变你的生活


其中,
minimal
debug
也提供了很好的JSON输出。

Ansible确实考虑了
stdout\u回调
,并且可以使用一个受支持的插件(可以使用
Ansible doc-t callback-l
列出)


尽管
stderr\u回调
似乎不再受支持。我找不到为OUT和ERR单独输出的方法。

请注意,您可能需要或最新版本的Ansible。这太不可思议了!为什么这不是默认值!?我的stdout以
\t
结尾。我在ansible 2.6.2上尝试了这个配置。但我看不出有什么不同。我有什么遗漏吗?我什么都没得到:(什么是
stderr\u callback
?它不在v2.9的源代码和文档中。我发现
debug
选项在没有中断的情况下会抛出大量多余的空白,特别是对于调试语句。设置
yaml
可以提供无需空白即可轻松阅读的格式。
echo -en "$(<some ansible command>)"
stdout_callback = yaml
stderr_callback = yaml