jinja语法
buyfakett
jinja语法
{% … %}
一个大括号和百分号一起,中间放条件选择和循环等等流程控制表达式。
for循环
在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选择结构如下
{% if grains['id'] == 'minion' %}
xxx
{% elif xxx %}
xxx
{% else %}
xxx
{% endif %}