如何在 Ansible 中为特定任务或模块制作详细输出

How can I make verbose output for specific task or module in Ansible

我正在使用 AWS ec2 模块,我想记录每个命令发送到 AWS 的用户数据,但我不希望所有其他无用任务的详细输出。

有什么方法可以启用 ec2 模块的详细信息?

我认为没有直接的方法。

作为一种变通方法,您可以 运行 整个游戏使用 no_log: true 并将 no_log: false 显式添加到调用 ec2 操作的任务中。然后 运行 剧本 -v.

我同意@techraf 的观点,没有现成的方法可以做到这一点。
但是 Ansible 可以通过插件轻松调整!

将此代码删除为 <playbook_dir>/callback_plugins/verbose_tasks.py:

from ansible.plugins.callback import CallbackBase
import json

try:
    from __main__ import display
except ImportError:
    display = None

class CallbackModule(CallbackBase):

    def v2_runner_on_any(self, result, ignore_errors=False):
        if (result._task.action in ['file','stat']):
            print '####### DEBUG ########'
            print json.dumps(result._result,indent=4)
            print '####### DEBUG ########'

    v2_runner_on_ok = v2_runner_on_any
    v2_runner_on_failed = v2_runner_on_any

您可以通过更改 ['file','stat'] 列表来调整要打印的模块结果。
如果您只需要 ec2,请将其替换为 ['ec2']