以下是一个解决方法示例,可以用于处理Ansible处理程序不从救援代码块调用的问题:
pip install ansible --upgrade
/etc/ansible/ansible.cfg
或~/.ansible.cfg
。确保以下配置项设置如下:[defaults]
callback_whitelist = profile_tasks
bin_ansible_callbacks = True
profile_tasks
的回调插件文件,在Ansible的插件目录中创建一个名为callback_plugins
的新文件夹:mkdir -p ~/.ansible/plugins/callback_plugins/
profile_tasks
文件中,添加以下代码:from ansible.plugins.callback.profile_tasks import CallbackModule as ProfileTasksCallback
class CallbackModule(ProfileTasksCallback):
CALLBACK_VERSION = 2.0
CALLBACK_TYPE = 'notification'
CALLBACK_NAME = 'profile_tasks'
def __init__(self):
super(CallbackModule, self).__init__()
self.profile_tasks = None
def playbook_on_task_start(self, task, is_conditional):
self.profile_tasks = {}
def playbook_on_stats(self, stats):
super(CallbackModule, self).playbook_on_stats(stats)
if self.profile_tasks:
# 将任务文件和执行时间输出到日志
for task, duration in sorted(self.profile_tasks.items(), key=lambda x: x[1], reverse=True):
self._display.display('Task: %s - Duration: %.3f' % (task, duration), color=C.COLOR_OK)
-c
或--callback
参数来指定使用新的回调插件:ansible-playbook playbook.yml -c profile_tasks
这将启用新的回调插件,并在执行每个任务时输出任务文件和执行时间到日志中。