如何在 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']
。
我正在使用 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']
。