domdb
- это словарь, а не список. Если вы пытаетесь перебрать словарь, вы перебираете только ключи. Таким образом, ваша задача эквивалентна:
- template:
src: test.j2
dest: "{{ item }}"
with_items:
- dom1
- dom2
Ваша попытка использовать item.ip
и item.mail
в вашей задаче должна привести к сообщению об ошибке AnsibleUndefinedVariable
. Вы, вероятно, хотите это:
---
- name: testing some crazyness
hosts: localhost
vars:
domdb:
- name: dom1
ip: something
mail: somethingelse
- name: dom2
ip: somethingdifferent
mail: somethingelsedifferent
tasks:
- name:
template:
src: test.j2
dest: "{{ item.name }}"
loop: "{{ domdb }}"
В этом примере domdb
- это список. Вместо этого вы можете сделать это вместо этого:
---
- name: testing some crazyness
hosts: localhost
vars:
domdb:
dom1:
ip: something
mail: somethingelse
dom2:
ip: somethingdifferent
mail: somethingelsedifferent
tasks:
- template:
src: test.j2
dest: "{{ item.0 }}"
loop: "{{ domdb.items()|list }}"
Здесь domdb
снова является словарем, но используйте метод словаря .items()
, чтобы создать список из (key, value)
кортежей.
В обоих приведенных выше примерах я заменил устаревшую with_items
на loop
.