Анализ Json в Ansible
Я должен проанализировать вывод следующей команды:
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"
однако было бы неплохо использовать обработку json Ansible для проверь то же самое. Посоветуйте, пожалуйста.
1 ответов
есть довольно много полезного фильтры в Анзибль.
попробуй: when: (output_text.stdout | from_json).ismaster