- 触发事件的列表
- 方法的result值
- callback class都是继承ansible.plugins.callback.CallbackBase类,而作为一个新类存在的。
- 定义callback说明信息
callback 是经常用到的插件,而且还是自定义很强的,在任务的每个状态下执行某些动作。
触发事件的列表
可以定义的状态如下,本次不考虑使用v1的方法 def v2_on_any(self, *args, **kwargs): def v2_runner_on_failed(self, result, ignore_errors=False): 任务失败的时候 def v2_runner_on_ok(self, result): 任务成功的时候 def v2_runner_on_skipped(self, result): 任务跳过的时候 def v2_runner_on_unreachable(self, result): def v2_runner_on_no_hosts(self, task): def v2_runner_on_async_poll(self, result): def v2_runner_on_async_ok(self, result): def v2_runner_on_async_failed(self, result): def v2_runner_on_file_diff(self, result, diff): def v2_playbook_on_start(self, playbook): def v2_playbook_on_notify(self, result, handler): def v2_playbook_on_no_hosts_matched(self): def v2_playbook_on_no_hosts_remaining(self): def v2_playbook_on_task_start(self, task, is_conditional): def v2_playbook_on_cleanup_task_start(self, task): def v2_playbook_on_handler_task_start(self, task): def v2_playbook_on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None): def v2_playbook_on_setup(self): playbook 在执行setup操作的时候执行 def v2_playbook_on_import_for_host(self, result, imported_file): def v2_playbook_on_not_import_for_host(self, result, missing_file): def v2_playbook_on_play_start(self, play): def v2_playbook_on_stats(self, stats): def v2_on_file_diff(self, result): def v2_playbook_on_include(self, included_file): def v2_runner_item_on_ok(self, result): def v2_runner_item_on_failed(self, result): def v2_runner_item_on_skipped(self, result): def v2_runner_retry(self, result):
方法的result值
print(result._task) 输出任务名 print(result._check_key) print(result._host) 输出主机名 print(result._result) 输出任务执行的结果 print(result.is_changed) print(result.is_failed)
callback class都是继承ansible.plugins.callback.CallbackBase类,而作为一个新类存在的。
from ansible.plugins.callback import CallbackBase
class CallbackModule(CallbackBase):
pass
定义callback说明信息
CALLBACK_VERSION = 2.0 插件版本 CALLBACK_TYPE = ‘aggregate’ 插件类型,如果是’stdout’时,只会加载一个这样的回调插件 CALLBACK_NAME = ‘timer’ 插件名称,需与文件名称一致。 CALLBACK_NEEDS_WHITELIST = True 插件是否需要在配置文件配置whitelist。为true是,ansible检查ansible.cfg文件中的callback_whitelist是否有插件名称,有则执行,无则跳过。