如何让Ansible只显示执行中的错误?

时间:2016-10-25 11:48:45

标签: ansible

如何让ansible只显示某些剧本中的错误,甚至直接调用?

我试图压缩std输出但显然没有帮助,因为执行错误似乎被放入标准输出而不是Linux上的错误输出。

ansible all -a 'some_command_I_want_to_know_if_it_crashes' 1> /dev/null

我只看到Python的错误(异常等),但没有看到来自playbook的错误(红色文本)。

2 个答案:

答案 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'