{% … %}一个大括号和百分号一起,中间放条件选择和循环等等流程控制表达式。
在pillar中添加一个list如下
names: ['kobe','lebron','t-mac','wade']格式和python中的for很像,不过一定要有一个结尾来标志for循环的结束。for循环的中间用前面表示变量的方式去输出循环体的内容。
{%- for name in pillar['names'] %}
player: {{ name }}
{%- endfor %}对minion2套用state文件,就可以看到目标文件多了下列内容
player: kobe
player: lebron
player: t-mac
player: wade这里的百分号后面多了一个小短线,用来清除空格,可以查看后面的“格式优化”部分
针对上面pillar中定义的字典也是可以和python中一样进行循环
{%- for type, name in pillar['pets'].items() %}
type: {{ type }}, name: {{ name }}
{%- endfor %}目标文件结果为
type: dog, name: haha
type: cat, name: chouchou正如上面所展示的那样,if选择结构如下
{% if grains['id'] == 'minion' %}
xxx
{% elif xxx %}
xxx
{% else %}
xxx
{% endif %}