ansible - ansible的jinja2模板中的条件
问题描述
嗨,我可以知道如何在 jinja2 模板中应用以下条件吗
- if item.value has value
- if item.value is equals "A"
- if item.value is equals "A" else item.value is equals "B"
- if (item.value is equals "A" and item.value is equals "B" ) or (item.value is equals "A" and item.value is equals "c" )
- if item.value is equals "A" else if item.value is equals "B" else item.value is equals "c"
- if item.value is NOT equal "" or not null
解决方案
试试这个模板
shell> cat test.j2
{% for item in items %}
item={{ item }}
{% set v = item.value|default("") %}
1) {% if v|length > 0 %}has value{% endif %}<br>
2) {% if v == "A" %}is A{% endif %}<br>
3) {% if v == "A" %}is A{% else %}is B{% endif %}<br>
4) Can never happen<br>
5) {% if v == "A" %}is A{% elif v == "B" %}is B{% elif v == "C" %}is C{% endif %}<br>
6) {% if v|length == 0 %}is empty or null{% endif %}<br>
{% endfor %}
例如,剧本
- hosts: localhost
vars:
items:
- value: ""
- value: "A"
- value: "B"
- value: "C"
- value: "X"
- attrib: "Y"
tasks:
- template:
src: test.j2
dest: test.txt
给
shell> cat test.txt
item={'value': ''}
1) <br>
2) <br>
3) is B<br>
4) Can never happen<br>
5) <br>
6) is empty or null<br>
item={'value': 'A'}
1) has value<br>
2) is A<br>
3) is A<br>
4) Can never happen<br>
5) is A<br>
6) <br>
item={'value': 'B'}
1) has value<br>
2) <br>
3) is B<br>
4) Can never happen<br>
5) is B<br>
6) <br>
item={'value': 'C'}
1) has value<br>
2) <br>
3) is B<br>
4) Can never happen<br>
5) is C<br>
6) <br>
item={'value': 'X'}
1) has value<br>
2) <br>
3) is B<br>
4) Can never happen<br>
5) <br>
6) <br>
item={'attrib': 'Y'}
1) <br>
2) <br>
3) is B<br>
4) Can never happen<br>
5) <br>
6) is empty or null<br>
推荐阅读
- c++ - 如何访问包含指向字符串的指针的向量的元素?
- .htaccess - 重定向到同一目录的 RewriteBase 规则不起作用
- javascript - 匹配时存储在变量中的正则表达式不起作用
- python - 使用 pg.key.get_pressed() 按键,命令重复多次一按
- android - 在 Android 上检索错误对象而不是 HTTP 400
- javascript - 在进入输赢方法之前,如何让我的屏幕更新?
- python - 使用 Django 3、G Suite 的联系表 - 电子邮件发送错误
- android - 交替画布颜色 Kivy/kv
- canvas - 如何在立体 vr 模式下在 3D 场景中显示一个 iframe?三.js
- twilio - 使用 Twilio Studio 促进匿名 P2P 消息传递