我有一个Ansible任务,该任务向网站发出URI请求以获取JSON响应。如果嵌套的JSON变量已定义,我希望Ansible做某件事,如果未定义,则我想做其他事情。
- 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"
请注意,ignore_errors
仅用于执行任务的命令失败,而不用于检查Jinja模板中嵌套数据结构中的未定义值。因此,如果json_response.json.nested1.nested2
未定义,则尽管ignore_errors=yes
已设置此任务仍将失败。
/tmp/foo.txt
如果请求失败,或者请求没有定义正确的嵌套值,如何获取此Playbook的默认值?
$key
响应中没有字段时会发生什么,即jinja的default
过滤器可能有用。