文章引导
前言
Jinja2是基于Python的模板引擎,来实现动态表达式和变量的引用,两者在模板求值时会被替换为值,模板中还有标签,控制模板的逻辑,ansible允许jinja2模板中使用条件判断和循环,但是不允许在playbook中使用,jinja2 文件件以 .j2 为后缀, 也可以不写后缀。##帮助文档
https://docs.jinkan.org/docs/jinja2/templates.html
基础命令
Jinja2模板语法
- 模板的表达式都是包含在分隔符"{{}}"内的
- 控制语句都是包含在分隔符"{% %}"内的
- 模板支持注释时包含在分隔符"{# #}"内,支持块注释
- 调用变量 {{varnmae}},返回变量值
- 计算 {{2+3}},返回结果为5
- 判断 {{1 in {1,2,3}}},返回Booleans值true/false
Jinja2模块控制语句
示例一:
{% if name == '张三'%}
1
{% elif name == '李四'%}
2
{% elif name == '王五'%}
3
{% else %}
4
{% endif %}
示例二:
{% if name == '... ...'%}
... ...
{% elif name == '李四'%}
{% for method in {1,2,3,4} %}
{{do method}}
{% endfor %}
... ...
{% endif %}
Jinja2过滤器
- 变量可以通过过滤器修改,过滤器与变量用管道符号(|)分割,也可以用园括号传递可选参数,多个过滤器可以链式调用,前一个过滤器的输出会被引用成后一个过滤器输入
##加密一个字符串
{{'astr'|password_hash('sha512')}}