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

时间:2017-05-18 01:20:47

标签: ansible ansible-2.x

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

有什么方法可以启用ec2模块的详细程度吗?

2 个答案:

答案 0 :(得分:3)

我同意@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']

答案 1 :(得分:0)

我认为没有一种直截了当的方式。

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