首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抗JSON输出

抗JSON输出
EN

Server Fault用户
提问于 2017-03-02 15:09:45
回答 1查看 19.9K关注 0票数 3

你能帮我取JSON格式的Ansible-Playbook输出吗?如果我将stdout_callback变量设置为ansible.cfg中的" JSON“,就会得到json输出。

但这种产出并不是实时的。当执行整个剧本时,将显示结果。如何在任务执行后立即获得输出?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2017-03-03 19:53:32

当然有一些问题需要克服,但没有什么是不可能的。

下面是一些你可以玩的东西:

将其保存为./callback_plugins/json_cb.py

代码语言:javascript
复制
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

并将您的剧本执行为:

代码语言:javascript
复制
ANSIBLE_STDOUT_CALLBACK=json_cb ansible-playbook myplaybook.yml

这将为每个已完成的任务(确定或失败)打印JSON对象。

但是你要把这个输入到其他工具中去解析它,不是吗?因此,另一个工具应该理解连续的JSON对象流。

票数 6
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/835901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档