callback 是經(jīng)常用到的插件麸拄,而且還是自定義很強(qiáng)的实柠,在任務(wù)的每個(gè)狀態(tài)下執(zhí)行某些動(dòng)作橱脸。
觸發(fā)事件的列表
可以定義的狀態(tài)如下抒和,本次不考慮使用v1的方法
def v2_on_any(self, *args, **kwargs):
def v2_runner_on_failed(self, result, ignore_errors=False): 任務(wù)失敗的時(shí)候
def v2_runner_on_ok(self, result): 任務(wù)成功的時(shí)候
def v2_runner_on_skipped(self, result): 任務(wù)跳過的時(shí)候
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 在執(zhí)行setup操作的時(shí)候執(zhí)行
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) 輸出任務(wù)名
print(result._check_key)
print(result._host) 輸出主機(jī)名
print(result._result) 輸出任務(wù)執(zhí)行的結(jié)果
print(result.is_changed)
print(result.is_failed)
callback class都是繼承ansible.plugins.callback.CallbackBase類,而作為一個(gè)新類存在的汗菜。
from ansible.plugins.callback import CallbackBase
class CallbackModule(CallbackBase):
pass
定義callback說明信息
CALLBACK_VERSION = 2.0 插件版本
CALLBACK_TYPE = 'aggregate' 插件類型让禀,如果是'stdout'時(shí),只會(huì)加載一個(gè)這樣的回調(diào)插件
CALLBACK_NAME = 'timer' 插件名稱陨界,需與文件名稱一致巡揍。
CALLBACK_NEEDS_WHITELIST = True 插件是否需要在配置文件配置whitelist。為true是菌瘪,ansible檢查ansible.cfg文件中的callback_whitelist是否有插件名稱腮敌,有則執(zhí)行,無(wú)則跳過俏扩。