ฉันมีงาน 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 อาจมีประโยชน์