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_errors
ne 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.nested2
n'est pas définie, cette tâche échouera malgré ignore_errors=yes
sa définition.
Comment puis-je obtenir ce playbook pour stocker une valeur par défaut /tmp/foo.txt
si la demande échoue ou si la demande n'a pas la bonne valeur imbriquée définie?
$key
champ dans la réponse - c'est-à-dire quelque chose pour lequel ledefault
filtre de jinja pourrait être utile.