[英]Ansible template from jinja2
谁能告诉你在输入名为region1a的模板时如何实现name1组中所有区域的output,当输入名为region2b的模板时,output来自name2组的所有区域
我这样实现它:有一个启动模板生成的任务:
vars:
AllCountry:
- name1
- name2
name1:
- region1a
- region1b
name2:
- region2a
- region2b
tasks:
- name:
template:
src: "regions.j2"
dest: "{{ item }}.conf"
loop:
- region1a
- region2b
---regions.j2---
regions [{%for count in name1%} "my country = {{count}}", {%end for %}]
这给出了所需的 output,但仅仅是因为它明确指定了 output 的名称(1 或 2)
regions "my country = region1a", "my country = region1b"
对于循环中指定的每个值,必须生成模板配置文件。 当您在循环 region1a 和 region1b 中指定值时,模板应该在 region1a.conf 的配置文件中只生成一行
regions "my country = region1a", "my country = region1b"
对于 region1b,在 region1b.conf 的配置文件中只生成一行
regions "my country = region1a", "my country = region1b"
用户 β.εηοιτ.βε 提出了更优化的结构。 如果方便,您可以使用它。
vars:
countries:
country1:
regions:
- region1
- region2
- region3
capital: region1
country2:
regions:
- region4
- region5
capital: region5
谢谢大家的帮助。 尽管如此,我还是设法自己弄清楚了。 这是最终的解决方案:
{% for country in AllCountry %}
{% if item in lookup('vars', country) %}{% for count in lookup('vars', country) %} "My country = {{ count }}"{% if not loop.last %},{% endif %}{% endfor %}{% endif %}{% endfor %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.