Am o configurație de rol după cum urmează
roles/test/task/main.yml
- nume: generează fișiere de persoane
șablon: src=test.j2 dest=/tmp/{{ item.name}}.cfg
buclă: „{{oameni}}”
roluri/test/șablon/test.j2
Prima var: {{ item.var1 }}
Al doilea var: {{ item.var2 }}
roles/test/vars/main.yml
---
oameni:
- nume: TheSimpsons
var1: homer
var2: simpson
- nume: Star Wars
var1: han
var2: solo
roles/test/defaults/main.yml
oameni:
- var2: skywalker
cartea mea de joc
- gazde: localhost
roluri:
- Test
Când îmi rulez playbook-ul, totul funcționează conform așteptărilor. Primesc două fișiere noi în /tmp cu textul corect. Cu toate acestea, dacă elimin această linie var2 din fișierul meu vars/main.yml...
var2: solo
M-aș aștepta ca valoarea var2 din defaults/main.yml să apară în rezultat, dar tot ce primesc este această eroare
a eșuat: [localhost] (item={u'var1': u'han', u'name': u'StarWars'}) => {
„schimbat”: fals,
„articol”: {
"name": "StarWars",
"var1": "han"
},
"msg": "AnsibleUndefinedVariable: „obiectul dictat” nu are atributul „var2””
}
Am încercat să-mi formatez defaults/main.yml în aproximativ 10 moduri diferite, dar am aceeași eroare de fiecare dată.
Dacă configurez un test care nu se execută în buclă și defaults/main.yml și vars/main.yml sunt perechi plate „key: value”, îl pot face să extragă valori din defaults/main/yml foarte bine.
Ceva despre bucla pe care pur și simplu nu primesc. ce fac greșit?