J'ai une tâche Ansible qui fait une demande d'URI à un site Web pour obtenir une réponse JSON. Je veux qu'Ansible fasse quelque chose si la variable JSON imbriquée est définie, et autre chose si ce n'est pas le cas.
- 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"
Notez que l'utilisation ignore_errorsne fonctionne que pour l'échec de la commande de la tâche, pas pour vérifier les valeurs non définies dans les structures de données imbriquées dans un modèle Jinja. Donc, si elle json_response.json.nested1.nested2n'est pas définie, cette tâche échouera malgré ignore_errors=yessa définition.
Comment puis-je obtenir ce playbook pour stocker une valeur par défaut /tmp/foo.txtsi la demande échoue ou si la demande n'a pas la bonne valeur imbriquée définie?
$keychamp dans la réponse - c'est-à-dire quelque chose pour lequel ledefaultfiltre de jinja pourrait être utile.