我需要简单的事情 - 如果变量是false
或空字符串,则评估为false
。否则评估为真。
我试过了bool(var)
,但我得到了:
UndefinedError: 'bool' is undefined
然后我尝试了var | bool
,但即使var非空,也会计算为false
。如何使这个条件有效?
答案 0 :(得分:1)
我找到了一种可能的红宝石风格解决方案:
when: not not var
但它相当难看。忘了说没有not not
var就会计算出一个字符串,所以ansible错误输出。我希望有更好的答案,所以如果你有,请加上另一个答案。
答案 1 :(得分:0)
您的主要问题是,使用var | bool
时,“true”以外的任何内容都会被评估为false。
如果您始终将其作为字符串提供(例如var: ''
或var: 'false'
),那么您可以检查字符串是否相等:
when: condition == 'false' or condition == ''
如果您有这种可能性,也可以选择添加布尔检查:
when: not condition or condition == 'false' or condition == ''
或者你可以默认使用布尔值并可选择覆盖。例如,您可能拥有一个具有条件任务的角色:
- name: echo foobar
shell: echo 'foobar'
when: echo_foo
echo_foo: false
但是我们可能会在一个组或主机变量级别上覆盖它:
echo_foo: true