Q: «Какой следующий шаг? Я должен использовать {% extends 'nginx.conf.j2'%} ...?»
A: Да. extends необходимо. Например,
- template:
src: test.j2
dest: test
с шаблонами
$ cat main.j2
value1 = 123
{% block test %}
value = default value in main.j2
{% endblock %}
value3 = 789
$ cat test.j2
{% extends 'main.j2' %}
{% block test %}
value = custom value in test.j2
{% endblock %}
дает
$ cat test
value1 = 123
value = custom value in test.j2
value3 = 789
Q: "Как будет выглядеть мое задание Ansible?"
- name: Copy config
template:
src: "{{ item }}"
dest: "{{ conf_file_path }}"
with_items:
- "main.conf.j2"
- "test.conf.j2"
- "example.conf.j2"
- "abcd.conf.j2"
A: Цикл будет многократно перезаписывать файл dest в каждой итерации. См. шаблон .
FWIW. Можно использовать blockinfile и зацикливать поиск шаблонов. Например
- template:
src: main2.j2
dest: test
- blockinfile:
marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item }}"
path: test
block: "{{ lookup('template', item) }}"
loop:
- test.conf.j2
- example.conf.j2
с шаблонами
$ cat main2.j2
value1 = 123
# BEGIN ANSIBLE MANAGED BLOCK test.conf.j2
value_test = default value in main2.j2
# END ANSIBLE MANAGED BLOCK test.conf.j2
# BEGIN ANSIBLE MANAGED BLOCK example.conf.j2
value_example = default value in main2.j2
# END ANSIBLE MANAGED BLOCK example.conf.j2
value3 = 789
$ cat test.conf.j2
value_test = custom value in test.conf.j2
$ cat example.conf.j2
value_example = custom value in example.conf.j2
предоставить
$ cat test
value1 = 123
# BEGIN ANSIBLE MANAGED BLOCK test.conf.j2
value_test = custom value in test.conf.j2
# END ANSIBLE MANAGED BLOCK test.conf.j2
# BEGIN ANSIBLE MANAGED BLOCK example.conf.j2
value_example = custom value in example.conf.j2
# END ANSIBLE MANAGED BLOCK example.conf.j2
value3 = 789