Jinja2在Ansible中常用项

0 一些前言

  • jinja2在线测试工具:https://cryptic-cliffs-32040.herokuapp.com

1. 变量装载

{{ foo }}
  • 一般使用role中的default/main.yml中定义的值
  • 在ansible中role中main.yml优先级最低
  • 一般从awx中所附带的变量优先级最高

1.1 变量赋值

{% set name='xx' %}
  • 之后就可以在页面文件中使用name这个变量。在解释性语言中,变量的类型时运行时确定的,因此,这里的变量可以赋任何类型的值

1.2 局部变量

{% with foo = 42 %}
{{ foo }}
{% endwith %}
  • 可以使用with语句来创建一个内部的作用域,将set语句放在其中,这样创建的变量只在with代码块中才有效

1.3 变量类型转换

	{% set node = "prometheus-"+ loop.index | string %}
  • 使用set关键字对相关变量进行赋值,with语句可与其连用
  • 在set内不允许使用{{ foo }}进行赋值
  • int类型的需要使用管道符进行转换

1.4 过滤器

过滤器内容
safe渲染时值不转义
capitialize把值的首字母转换成大写,其他子母转换为小写
lower把值转换成小写形式
upper把值转换成大写形式
title把值中每个单词的首字母都转换成大写
trim把值的首尾空格去掉
striptags渲染之前把值中所有的HTML标签都删掉
join拼接多个值为字符串
replace替换字符串的值
round默认对数字进行四舍五入,也可以用参数进行控制
int把值转换成整型

2. 控制与循环装载

{%  %}

2.1 if/else/elif/endif

{% if foo | bool %}
...
{% elif not foo1 %}
...
{% else %}
...
{% endif %}
  • 可以使用管道符对变量进行判断

2.2 for/endfor

2.2.1 遍历list

{% for user in users %}
{{ user.username | e }}
{% endfor %}

2.2.2 遍历字典

{% for key, value in my_dict.iteritems() %}
{{ key|e }}
{{ value|e }}
{% endfor %}

2.2.3 for循环中常用的内置变量

变量内容
loop.index循环迭代计数(从1开始)
loop.index0循环迭代计数(从0开始)
loop.revindex循环迭代倒序计数(从len开始,到1结束)
loop.revindex0循环迭代倒序计数(从len-1开始,到0结束)
loop.first是否为循环的第一个元素
loop.last是否为循环的最后一个元素
loop.length循环序列中元素的个数
loop.cycle在给定的序列中轮循
loop.depth当前循环在递归中的层级(从1开始)
loop.depth0当前循环在递归中的层级(从0开始)

3. 注释装载

{#  #}

4. 累加操作

{% for server in range(msgqueue_replicas) %}rocketmq-{{ loop.index }}-ns:{{ name_srv_port }};{% endfor %}
  • msgqueue_replicas为int数字
  • loop.index作为本次循环的序列(从1开始)

5. 赋值操作

	{% set node = "prometheus-"+ loop.index | string %}
  • 使用set关键字对相关变量进行赋值,with语句可与其连用
  • 在set内不允许使用{{ foo }}进行赋值
  • int类型的需要使用管道符进行转换
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值