use*_*179 3 automation linux ansible ansible-playbook
你能帮我获取 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
Run Code Online (Sandbox Code Playgroud)
并按照以下方式执行您的剧本:
ANSIBLE_STDOUT_CALLBACK=json_cb ansible-playbook myplaybook.yml
Run Code Online (Sandbox Code Playgroud)
这将为每个已完成的任务(确定或失败)打印 JSON 对象。
但是你要把它输入其他工具来解析它,不是吗?所以这个其他工具应该理解 JSON 对象的连续流。
归档时间: |
|
查看次数: |
16810 次 |
最近记录: |