Анализ 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