У мене є відповідне завдання, яке робить запит 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 .