
Considerando avariávelestrutura
syncjobs:
- filename: output1.bash
content: data1
- filename: output2.bash
content: data2
Quero fazer um loop criando os arquivos comansible.builtin.templateusando o camponome do arquivopara odestino. Eu posso conseguir isso com
- 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 }}"
no entanto, não consigo descobrir como abordar o problema específicocontentecampo dotrabalhos de sincronizaçãodict no arquivo de modelo. Claro que posso acessar a variáveltrabalhos de sincronização, mas preciso abordar ocontentecampo do relacionadodicionáriopara cada iteração específica.
Tentei definir um fato adicional comonome_do_arquivo_atualparaitem.nome do arquivodentro de umansible.builtin.block, mas infelizmente os loops não parecem ser suportados por blocos.
Responder1
Exatamente da mesma forma que no manual. Existe a mesma {{ item }}
variável no modelo, então você pode consultá-la {{ item.content }}
no arquivo de modelo. (Na verdade,todosas variáveis do playbook estão disponíveis no modelo, exatamente o mesmo conjunto que existe naquele local específico do playbook onde foi ansible.builtin.template
chamado.)