Я должен проанализировать вывод следующей команды:Json разбор в анзибле
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»: верно показано на выходе, используя следующий код:
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 анзибль, чтобы проверить то же самое , Пожалуйста, порекомендуйте.
получает эту ошибку, когда я пытаюсь сделать это:. «Условный чек '(output_text.stdout | from_json) .ismaster' не удался Ошибка: Нет объект JSON не может быть расшифрован \ п \ nПроизошла ошибка в «xxxx»: строка xx, столбец x, но может \ nbe в другом месте в файле в зависимости от конкретной проблемы синтаксиса. \ n \ nСогласная строка выглядит как: \ n \ n \ n - name: Run command on master \ n^here \ n "} – trial999
Ouch ... у вас нет чистого JSON-материала, такого как' ObjectId() 'и' ISODate() '. Не уверен, что для этого есть легкое решение. –
Вместо этого использовала эту команду, которая выводит «true». mongo --eval "db.isMaster(). ismaster". Спасибо за руководство. –
trial999