Mam zadanie Ansible, które wysyła żądanie URI do strony internetowej w celu uzyskania odpowiedzi JSON. Chcę, aby Ansible zrobił coś, jeśli zdefiniowano zagnieżdżoną zmienną JSON, i coś innego, jeśli tak nie jest.
- 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"
Zauważ, że użycie ignore_errorsdziała tylko w przypadku niepowodzenia polecenia zadania, a nie do sprawdzania niezdefiniowanych wartości w zagnieżdżonych strukturach danych w szablonie Jinja. Jeśli więc json_response.json.nested1.nested2nie zostanie zdefiniowane, to zadanie nadal nie powiedzie się, mimo że ignore_errors=yeszostało ustawione.
Jak sprawić, aby ten podręcznik zawierał pewną wartość domyślną, /tmp/foo.txtjeśli żądanie zakończy się niepowodzeniem lub jeśli w żądaniu nie zdefiniowano właściwej wartości zagnieżdżonej?
$keypola w odpowiedzi - tj. Coś, codefaultmoże być przydatny w filtrze jinja .