你能帮我取JSON格式的Ansible-Playbook输出吗?如果我将stdout_callback变量设置为ansible.cfg中的" JSON“,就会得到json输出。
但这种产出并不是实时的。当执行整个剧本时,将显示结果。如何在任务执行后立即获得输出?
发布于 2017-03-03 19:53:32
当然有一些问题需要克服,但没有什么是不可能的。
下面是一些你可以玩的东西:
将其保存为./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
复制相似问题