Ansible JSON输出

你能帮我拿JSON格式的Ansible-Playbook输出。 如果我在ansible.cfg中将stdout_callbackvariables设置为“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对象(好或失败)。

但是你要用这个东西来parsing它,不是吗? 所以这个其他工具应该了解JSON对象的连续stream。