【发布时间】:2020-11-25 08:14:54
【问题描述】:
谁能告诉你在输入名为region1a的模板时如何实现输出name1组中所有区域,输入名为region2b的模板时输出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 %}]
这给出了所需的输出,但这只是因为它明确指定了要输出的名称(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
【问题讨论】:
-
当你的
loop中的item是region2b时会发生什么? -
循环遍历所有地区,得到类似这样的结论:regions "my country = region1a", "my country = region1b"
-
这就是我看不到逻辑的地方?
region2b属于国家name2,不是吗? -
对不起,我弄错了。输出必须来自 name2 个区域 "my country = region2a", "my country = region2b"