Ho un'attività Ansible che effettua una richiesta URI a un sito Web per ottenere una risposta JSON. Voglio che Ansible faccia qualcosa se viene definita la variabile JSON nidificata e qualcos'altro se non lo è.
- 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"
Si noti che l'utilizzo ignore_errors
funziona solo per il comando non riuscito del comando, non per il controllo di valori indefiniti in strutture di dati nidificate all'interno di un modello Jinja. Quindi, se json_response.json.nested1.nested2
non è definito, questa attività fallirà comunque nonostante ignore_errors=yes
sia impostata.
Come posso ottenere questo playbook per memorizzare un valore predefinito /tmp/foo.txt
se la richiesta fallisce o se la richiesta non ha il valore nidificato definito?
$key
campo nella risposta - cioè qualcosa per cuidefault
potrebbe essere utile il filtro di jinja .