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_errors
apenas 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.nested2
não estiver definido, essa tarefa ainda falhará, apesar de ignore_errors=yes
ter sido definida.
Como faço para que este manual armazene algum valor padrão /tmp/foo.txt
se a solicitação falhar ou se a solicitação não tiver o valor aninhado certo definido?
$key
campo na resposta - ou seja, algo para o qual odefault
filtro de jinja possa ser útil.