logo
tt's Note
  • 运维
    • 数据库
    • linux
    • vpn
    • 日志
    • 中间件
    • 服务
    • 监控
    • shell
    • windows
    • 语言
    • 云服务
    • 其他
  • 开发
    • 工具
  • 软件
    • 浏览器
    • 多端
    • win
    • mac
    • 网站
  • 项目
    • 效率工具
    • 兴趣
  • 脚本
    • jenkins
    语言概览
    jinja语法
    pipeline语法
    上一页语言概览下一页pipeline语法

    #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 %}