我必须解析以下命令的输出:
mongo <dbname> --eval "db.isMaster()"
其输出如下所示:
{
"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是否显示在输出中:
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处理来检查同样的情况会更好。请给我建议。
发布于 2016-11-28 20:57:26
在Ansible中有相当多的有用的filters。
尝试:when: (output_text.stdout | from_json).ismaster
https://stackoverflow.com/questions/40844720
复制相似问题