如何让ansible只显示某些剧本中的错误,甚至直接调用?
我试图压缩std输出但显然没有帮助,因为执行错误似乎被放入标准输出而不是Linux上的错误输出。
ansible all -a 'some_command_I_want_to_know_if_it_crashes' 1> /dev/null
我只看到Python的错误(异常等),但没有看到来自playbook的错误(红色文本)。
答案 0 :(得分:3)
使用名为callback plugin的官方样本actionable.py。
将其放在callback_plugins
目录中并在ansible.cfg
中启用stdout-callbacks:
[defaults]
stdout_callback = actionable
只需启用它,您将在输出中获得更少的信息,但您可以进一步修改插件代码以满足您的需求。
例如,要完全禁用成功任务的消息(无论状态为ok
还是changed
),请更改:
def v2_runner_on_ok(self, result):
if result._result.get('changed', False):
self.display_task_banner()
self.super_ref.v2_runner_on_ok(result)
到
def v2_runner_on_ok(self, result):
pass
正如Konstantin Suvorov所述,上述ansible.cfg
配置方法适用于ansible-playbook
。
对于ansible
输出,您可以将actionable.py
保存为./callback_plugins/minimal.py
以获得相同的结果。
答案 1 :(得分:0)
您可以使用可操作的回调
运行命令ANSIBLE_STDOUT_CALLBACK=actionable ansible all -a 'some_command_I_want_to_know_if_it_crashes'