Ansible if else jinja表达式为值添加额外的空间
我在我的剧本中使用了以下代码:Ansible if else jinja表达式为值添加额外的空间,ansible,jinja2,Ansible,Jinja2,我在我的剧本中使用了以下代码: - set_fact: value1: "{% if 1==0 %}{{ true }} {% else %}{{ false }} {% endif %}" - debug: "{{ value1 }}" 我期望的输出为“false”,但实际输出为“false”。请注意,值后面有额外的空格,因此布尔值被视为字符串 如果我将表达式放在一行中,如下所示: -
- set_fact:
value1: "{% if 1==0 %}{{ true }}
{% else %}{{ false }}
{% endif %}"
- debug: "{{ value1 }}"
我期望的输出为“false”,但实际输出为“false”。请注意,值后面有额外的空格,因此布尔值被视为字符串
如果我将表达式放在一行中,如下所示:
- set_fact:
value1: "{% if 1==0 %}{{ true }}{% else %}{{ false }}{% endif %}"
- debug: "{{ value1 }}"
然后输出值是布尔值,但这会降低代码的可读性,尤其是在表达式较大的情况下
有没有办法在多行if else jinja表达式中获取布尔值?您在jinja中寻找的值。从链接中可以看到,有多种方法可以做到这一点,其中之一是: 错误代码:
通常认为
if(布尔条件):然后返回true
之类的错误样式,因为您可以执行return(布尔条件)
-设置事实:
值1:“{%-if 1==0-%}{{true}”
{%-else-%}{{false}
{%-endif-%}”
-调试:“{value1}}”
这其实太复杂了。看看这个:
-设置事实:
值1:“{{1==0}”
-调试:
msg:“{{value1}}”
这将为您提供一个布尔值
顺便说一下,在ansible中处理布尔值时,通常最好使用。使用下面的解决方案:
- 设定事实: 值1:“{%if 1==0%}{{true}” {%-else%}{{false} {%-endif%}”
- 调试:“{value1}}”