Я хочу создать несколько циклов с помощью шаблона jinja, например:
template_a
name = a
username = c
template_b
name = b
username = d
playbook.yml
- name: Create file from jinja
template:
src: "jinja.j2"
dest: "template_{{ item }}"
owner: "root"
group: "root"
with_items: "{{ jinja_var }}"
переменные.yml
jinja_var:
a: c
b: d
jinja.j2
{% for (key,value) in jinja_var.iteritems() %}
name = {{ key }}
username = {{ value }}
{% endfor %}
У меня есть два одинаковых файла:
name = a
username = 1
name = b
username = 2
Есть несколько способов добиться вышеупомянутого результата. Ничего сложного, небольшие изменения в шаблоне playbook task
и jinja
решат вашу проблему.
Когда мы добавляем цикл for для итерации, он добавит каждый объект словаря, присутствующий в переменной, в целевой файл. Таким образом, прямое добавление item
внутрь jinja
и передача with_dict
задаче уменьшит вышеупомянутую проблему.
playbook.yml
- name: Create file from jinja
template:
src: "jinja.j2"
dest: "template_{{ item.key }}"
owner: "root"
group: "root"
with_dict: "{{ jinja_var }}"
jinja.j2
name = {{ item.key }}
username = {{ item.value }}
Выход
template_a
name = a
username = c
template_b
name = b
username = d
Хороший ответ .. Я думаю, вы неправильно написали
jinja
какjinga
.