Ansible: цикл по шаблону со связанными переменными
Учитывая структуру переменных
syncjobs:
- filename: output1.bash
content: data1
- filename: output2.bash
content: data2
Я хочу перебрать его, создавая файлы с помощью ansible.builtin.template , используя имя файла поля для dest . Я могу добиться этого с
- name: Create scripts
ansible.builtin.template:
src: template.bash.j2
dest: /opt/bin/{{ item.filename }}
owner: root
mode: "u+x,o-r"
backup: true
with_items: "{{ syncjobs }}"
однако я не могу понять, как обратиться к конкретному полю содержимого из словаря syncjobs в файле шаблона. Конечно, я могу получить доступ к переменной syncjobs , но мне нужно обращаться к полю содержимого из соответствующего словаря для каждой конкретной итерации.
Я попытался установить дополнительный факт, например current_filename, в item.filename внутри ansible.builtin.block , но, к сожалению, циклы, похоже, не поддерживаются для блоков.
1 ответ
Точно так же, как в пьесе. Есть то же самое{{ item }}
переменная в шаблоне, поэтому вы можете обратиться к{{ item.content }}
в файле шаблона. (На самом деле, все переменные плейбука доступны в шаблоне, это тот же самый набор, который существует в том конкретном месте плейбука, гдеansible.builtin.template
назывался.)