ฉันมีงาน Ansible ที่ทำให้คำขอ URI ไปยังเว็บไซต์เพื่อรับการตอบกลับ JSON ฉันต้องการให้ Ansible ทำบางสิ่งหากตัวแปร JSON ที่ซ้อนกันถูกกำหนดและอย่างอื่นถ้าไม่ใช่
- 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
ถูกตั้งค่าไว้
ฉันจะให้ playbook นี้เก็บค่าเริ่มต้นได้/tmp/foo.txt
อย่างไรหากคำขอล้มเหลวหรือหากคำขอไม่ได้กำหนดค่าซ้อนที่เหมาะสมไว้
$key
การตอบคำถาม - เช่นบางสิ่งบางอย่างที่default
ตัวกรองของ jinja อาจมีประโยชน์