Ansible 開(kāi)發(fā)插件之【Callback】

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ù)跳過(guò)的時(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類(lèi),而作為一個(gè)新類(lèi)存在的。


from ansible.plugins.callback import CallbackBase

class CallbackModule(CallbackBase):
    pass

定義callback說(shuō)明信息


CALLBACK_VERSION = 2.0 插件版本
CALLBACK_TYPE = 'aggregate' 插件類(lèi)型,如果是'stdout'時(shí),只會(huì)加載一個(gè)這樣的回調(diào)插件
CALLBACK_NAME = 'timer' 插件名稱(chēng),需與文件名稱(chēng)一致。
CALLBACK_NEEDS_WHITELIST = True 插件是否需要在配置文件配置whitelist。為true是,ansible檢查ansible.cfg文件中的callback_whitelist是否有插件名稱(chēng),有則執(zhí)行,無(wú)則跳過(guò)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,658評(píng)論 19 139
  • ?王越:VMware存儲(chǔ)API整理,比如核心的存儲(chǔ)池與卷兩者的CURD。可以參考:VMware in OpenSt...
    笨手笨腳越閱讀 5,853評(píng)論 0 2
  • 我們有個(gè)雙城記 倫敦和巴黎的浪漫 怎抵過(guò)兩城的相惜 ...
    迷小希閱讀 261評(píng)論 0 3
  • 最近想離開(kāi)一個(gè)地方換到新的一個(gè)地方,開(kāi)始新的生活。給身邊最理智關(guān)系最好的盆友說(shuō)了之后,我們就聊了半晚上。各自說(shuō)到了...
    拉西西菲閱讀 217評(píng)論 0 0

友情鏈接更多精彩內(nèi)容