ฉันมีการตั้งค่าบทบาทดังนี้
บทบาท/ทดสอบ/งาน/main.yml
- ชื่อ: สร้างไฟล์บุคคล
  แม่แบบ: src=test.j2 dest=/tmp/{{ item.name}}.cfg
  วนซ้ำ: "{{คน}}"
บทบาท/ทดสอบ/แม่แบบ/test.j2
Var แรก: {{ item.var1 }}
Var ที่สอง: {{ item.var2 }}
บทบาท/ทดสอบ/vars/main.yml
---
ผู้คน:
        - ชื่อ: เดอะซิมป์สันส์
          var1: โฮเมอร์
          var2: ซิมป์สัน
        - ชื่อ: สตาร์วอร์ส
          var1: ฮัน
          var2: โซโล
บทบาท/ทดสอบ/ค่าเริ่มต้น/main.yml
ผู้คน:
   - var2: สกายวอล์คเกอร์
หนังสือเล่นของฉัน
 - โฮสต์: localhost
   บทบาท:
    - ทดสอบ
เมื่อฉันเรียกใช้ playbook ทุกอย่างทำงานได้ตามที่คาดไว้ ฉันได้รับไฟล์ใหม่สองไฟล์ใน /tmp พร้อมข้อความที่ถูกต้อง อย่างไรก็ตาม หากฉันลบบรรทัด var2 นี้ออกจากไฟล์ vars/main.yml...
          var2: โซโล
ฉันคาดว่าค่า var2 จาก defaults/main.yml ของฉันจะแสดงในเอาต์พุต แต่ทั้งหมดที่ฉันได้รับคือข้อผิดพลาดนี้
ล้มเหลว: [localhost] (item={u'var1': u'han', u'name': u'StarWars'}) => {
    "เปลี่ยนแปลง": เท็จ
    "สิ่งของ": {
        "ชื่อ": "สตาร์วอร์ส",
        "var1": "ฮัน"
    },
    "msg": "AnsibleUndefinedVariable: 'dict object' ไม่มีแอตทริบิวต์ 'var2'"
}
ฉันได้ลองจัดรูปแบบ defaults/main.yml ประมาณ 10 วิธี แต่ได้รับข้อผิดพลาดเดียวกันทุกครั้ง
ถ้าฉันตั้งค่าการทดสอบที่ไม่วนซ้ำและ defaults/main.yml และ vars/main.yml เป็นคู่ "คีย์: ค่า" แบบแบน ฉันสามารถให้มันดึงค่าจาก defaults/main/yml ได้
บางอย่างเกี่ยวกับการวนลูปที่ฉันไม่เข้าใจ ผมทำอะไรผิดหรือเปล่า?