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

Pet*_*etr 6 ansible

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

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

ansible all -a 'some_command_I_want_to_know_if_it_crashes' 1> /dev/null
Run Code Online (Sandbox Code Playgroud)

我只看到 Python 中的错误(异常等),但看不到剧本中的错误(红色文本)。

tec*_*raf 3

使用名为actionable.py的官方示例回调插件

将其放入callback_plugins目录中并启用 stdout-callbacks ansible.cfg

[defaults]
stdout_callback = actionable
Run Code Online (Sandbox Code Playgroud)

只需启用它,您将在输出中获得更少的信息,但您可以进一步修改插件代码以满足您的需求。

例如,要完全禁用成功任务的消息(无论状态是否为okchanged)更改:

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)
Run Code Online (Sandbox Code Playgroud)

def v2_runner_on_ok(self, result):
    pass
Run Code Online (Sandbox Code Playgroud)

正如Konstantin Suvorov指出的,上述ansible.cfg配置方法适用于ansible-playbook.

对于ansible输出,您可以另存actionable.py./callback_plugins/minimal.py以获得相同的结果。

  • 值得注意的是,“stdout_callback”仅影响“ansible-playbook”,而不影响“ansible”。有关详细信息,请参阅[此答案](http://stackoverflow.com/a/38667680/2795592)。 (3认同)