
Учитываяпеременнаясостав
syncjobs:
- filename: output1.bash
content: data1
- filename: output2.bash
content: data2
Я хочу зациклить его, создав файлы с помощьюansible.встроенный.шаблониспользуя полеимя файладляместо назначенияЯ могу добиться этого с помощью
- 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 }}"
Однако я не могу понять, как решить эту конкретную проблему.содержаниеполе отsyncjobsdict в файле шаблона. Конечно, я могу получить доступ к переменнойsyncjobs, но мне нужно обратиться ксодержаниеполе из связанногословарьдля каждой конкретной итерации.
Я попытался установить дополнительный факт, напримертекущее_имя_файлакitem.имя_файлавнутриansible.встроенный.блок, но, к сожалению, циклы, похоже, не поддерживаются для блоков.
решение1
Точно так же, как в плейбуке. {{ item }}
В шаблоне есть та же переменная, поэтому вы можете ссылаться на нее {{ item.content }}
в файле шаблона. (На самом деле,всепеременные книги сценариев доступны в шаблоне, точно такой же набор, который существует в том конкретном месте книги сценариев, где был ansible.builtin.template
вызван.)