Tôi có một thiết lập vai trò như sau
vai trò/kiểm tra/nhiệm vụ/main.yml
- tên: Tạo tệp người
bản mẫu: src=test.j2 dest=/tmp/{{ item.name}}.cfg
vòng lặp: "{{người}}"
vai trò/kiểm tra/mẫu/test.j2
Biến đầu tiên: {{ item.var1 }}
Var thứ hai: {{ item.var2 }}
vai trò/kiểm tra/vars/main.yml
---
Mọi người:
- tên: The Simpsons
var1: gia đình
var2: simpson
- tên: Chiến tranh giữa các vì sao
var1: han
var2: độc tấu
vai trò/kiểm tra/mặc định/main.yml
Mọi người:
- var2: skywalker
vở kịch của tôi
- máy chủ: localhost
vai trò:
- kiểm tra
Khi tôi chạy playbook của mình, mọi thứ hoạt động như mong đợi. Tôi nhận được hai tệp mới trong /tmp với văn bản chính xác. Tuy nhiên, nếu tôi xóa dòng var2 này khỏi tệp vars/main.yml của mình...
var2: độc tấu
Tôi mong đợi giá trị var2 từ defaults/main.yml của tôi hiển thị ở đầu ra, nhưng tất cả những gì tôi nhận được là lỗi này
không thành công: [localhost] (item={u'var1': u'han', u'name': u'StarWars'}) => {
"đã thay đổi": sai,
"mục": {
"tên": "Chiến tranh giữa các vì sao",
"var1": "han"
},
"msg": "AnsibleUndefinedVariable: 'đối tượng dict' không có thuộc tính 'var2'"
}
Tôi đã thử định dạng defaults/main.yml của mình khoảng 10 cách khác nhau nhưng mỗi lần đều gặp lỗi giống nhau.
Nếu tôi thiết lập một thử nghiệm không lặp lại và defaults/main.yml và vars/main.yml là các cặp "key: value" cố định, tôi có thể lấy nó để lấy các giá trị từ defaults/main/yml.
Một cái gì đó về vòng lặp mà tôi không nhận được. Tôi đang làm gì sai?