Linux
Ansible JSON 輸出
您能否幫我獲取 JSON 格式的 Ansible-Playbook 輸出。如果我在 ansible.cfg 中將 stdout_callback 變數設置為“json”,我會得到 JSON 輸出
但該輸出不是實時的。執行整個劇本時會顯示結果。執行任務後如何獲得輸出?
肯定有一些問題需要克服,但沒有什麼是不可能的。
這裡有一些東西供你玩:
另存為
./callback_plugins/json_cb.py
:from __future__ import absolute_import from ansible.plugins.callback import CallbackBase import json class CallbackModule(CallbackBase): CALLBACK_VERSION = 2.0 CALLBACK_TYPE = 'stdout' CALLBACK_NAME = 'json_cb' def __init__(self): self.tasks = {} def dump_result(self, result): print(json.dumps(dict(name=self.tasks[result._task._uuid],result=result._result))) def v2_playbook_on_task_start(self, task, is_conditional): self.tasks[task._uuid] = task.name v2_runner_on_ok = dump_result v2_runner_on_failed = dump_result
並將您的劇本執行為:
ANSIBLE_STDOUT_CALLBACK=json_cb ansible-playbook myplaybook.yml
這將為每個完成的任務(正常或失敗)列印 JSON 對象。
但是你要把它輸入其他工具來解析它,不是嗎?所以這個其他工具應該理解 JSON 對象的連續流。