Linux

Ansible JSON 輸出

  • March 3, 2017

您能否幫我獲取 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 對象的連續流。

引用自:https://serverfault.com/questions/835901