ฉันมีการตั้งค่าบทบาทดังนี้
บทบาท/ทดสอบ/งาน/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 ได้
บางอย่างเกี่ยวกับการวนลูปที่ฉันไม่เข้าใจ ผมทำอะไรผิดหรือเปล่า?