我想用jinja模板创建多个可解析循环,比如:
模板_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 }}"
variables.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循环进行迭代时,它会将变量中存在的每个字典对象添加到目标文件中。因此,通过在jinja
中直接添加item
并将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