Tengo una tarea Ansible que realiza una solicitud de URI a un sitio web para obtener una respuesta JSON. Quiero que Ansible haga algo si la variable JSON anidada está definida, y otra cosa si no lo está.
- 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"
Tenga en cuenta que el uso ignore_errors
solo funciona para el fallo de comando de la tarea, no para verificar valores indefinidos en estructuras de datos anidados dentro de una plantilla Jinja. Entonces, si json_response.json.nested1.nested2
no se define, esta tarea seguirá fallando a pesar de ignore_errors=yes
estar configurada.
¿Cómo consigo que este libro de jugadas almacene algún valor predeterminado /tmp/foo.txt
si la solicitud falla o si la solicitud no tiene definido el valor anidado correcto?
$key
campo en la respuesta, es decir, algo para lo que eldefault
filtro de jinja podría ser útil.