Eu tenho uma tarefa Ansible que faz uma solicitação de URI a um site para obter uma resposta JSON. Quero que o Ansible faça algo se a variável JSON aninhada estiver definida e outra coisa, se não estiver.
- 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"
Observe que usar ignore_errorsapenas funciona para o comando da tarefa falhar, não para verificar valores indefinidos em estruturas de dados aninhadas em um modelo Jinja. Portanto, se json_response.json.nested1.nested2não estiver definido, essa tarefa ainda falhará, apesar de ignore_errors=yester sido definida.
Como faço para que este manual armazene algum valor padrão /tmp/foo.txtse a solicitação falhar ou se a solicitação não tiver o valor aninhado certo definido?
$keycampo na resposta - ou seja, algo para o qual odefaultfiltro de jinja possa ser útil.