У меня есть задача Ansible, которая отправляет URI-запрос веб-сайту для получения ответа JSON. Я хочу, чтобы Ansible что-то делал, если определена вложенная переменная JSON, и что-то еще, если это не так.
- name: Get JSON from the Interwebs
uri: url="http://whatever.com/jsonresponse" return_content=yes
register: json_response
- name: Write nested JSON variable to disk
copy: content={{json_response.json.nested1.nested2}} dest="/tmp/foo.txt"
Обратите внимание, что использование ignore_errors
работает только при сбое команды задачи, а не для проверки неопределенных значений во вложенных структурах данных в шаблоне Jinja. Поэтому, если json_response.json.nested1.nested2
не определено, эта задача все равно не будет выполнена, несмотря на ignore_errors=yes
то, что она установлена
Как я могу получить в этой книге воспроизведения значение по умолчанию, /tmp/foo.txt
если запрос не выполнен или если в запросе не определено правильное вложенное значение?
$key
в ответе нет поля - т.е. что-то, для чегоdefault
может пригодиться фильтр jinja.