首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ansible中的Json解析

Ansible中的Json解析
EN

Stack Overflow用户
提问于 2016-11-28 20:46:24
回答 1查看 54.4K关注 0票数 24

我必须解析以下命令的输出:

代码语言:javascript
复制
mongo <dbname> --eval "db.isMaster()"

其输出如下所示:

代码语言:javascript
复制
 {
    "hosts" : [
        "xxx:<port>",
        "xxx:<port>",
        "xxx:<port>"
    ],
    "setName" : "xxx",
    "setVersion" : xxx,
    "ismaster" : true,
    "secondary" : false,
    "primary" : "xxx",
    "me" : "xxx",
    "electionId" : ObjectId("xxxx"),
    "maxBsonObjectSize" : xxx,
    "maxMessageSizeBytes" : xxxx,
    "maxWriteBatchSize" : xxx,
    "localTime" : ISODate("xxx"),
    "maxWireVersion" : 4,
    "minWireVersion" : 0,
    "ok" : 1
}

我需要解析上面的输出,以检查"ismaster“的值是否为真。请告诉我如何在ansible中做到这一点。

目前,我只是使用以下代码检查文本"ismaster“:true是否显示在输出中:

代码语言:javascript
复制
  tasks:
     - name: Check if the mongo node is primary
       shell: mongo <dbname> --eval "db.isMaster()"
       register: output_text

     - name: Run command on master
       shell: <command to execute>
       when: "'\"ismaster\\\" : true,' in output_text.stdout"

但是,使用Ansible的json处理来检查同样的情况会更好。请给我建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-28 20:57:26

在Ansible中有相当多的有用的filters

尝试:when: (output_text.stdout | from_json).ismaster

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

https://stackoverflow.com/questions/40844720

复制
相关文章

相似问题

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