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 %}
Last Updated 9/11/2024, 9:00:15 AM