Ansible,如何检查变量是否为空?
我有一个角色var I,用于向linux用户添加授权密钥,因此foo可以是一个包含单个ssh公钥的字符串,也可以是多个公钥的列表 默认情况下,Ansible,如何检查变量是否为空?,ansible,Ansible,我有一个角色var I,用于向linux用户添加授权密钥,因此foo可以是一个包含单个ssh公钥的字符串,也可以是多个公钥的列表 默认情况下,foo已定义但为空,因此即使用户未设置它,也可以对其进行测试,这样,如果它为空,则不会执行任何相关任务 我通常会使用when:foo或when:not foo,而且效果很好,只是现在ansible trow发出了贬值警告,说: [弃用警告]:将“无”作为裸变量进行求值,此 行为将消失,你可能需要在这个问题上添加“bool” 未来的表达。另请参见条件_BAR
foo
已定义但为空,因此即使用户未设置它,也可以对其进行测试,这样,如果它为空,则不会执行任何相关任务
我通常会使用when:foo
或when:not foo
,而且效果很好,只是现在ansible trow发出了贬值警告,说:
[弃用警告]:将“无”作为裸变量进行求值,此
行为将消失,你可能需要在这个问题上添加“bool”
未来的表达。另请参见条件_BARE_VARS配置
切换。。此功能将在2.12版中删除。贬低
可以通过在中设置deprecation\u warnings=False来禁用警告
ansible.cfg
如前所述,我尝试了when:foo | bool
,但每次变量中填充的字符串不是yes、true、yes时,它都返回false
foo已定义
由于定义了var,因此不起作用
foo!=“”
不起作用,因为变量为null而不是空字符串
foo | length>0不起作用,因为null没有长度
老实说,我这里没有什么想法。你要找的东西是,它有一个别名
d
,比如when:foo | d(“”
甚至when:foo | d(False)
请注意,
default
通常只替换null
或None
,而不是python式的真实性概念。为此,您需要为其提供第二个参数foo | default(“something other”,true)
,该参数适用于foo
为null
或”
(也可能为0)我认为答案就在错误中。“将None作为裸变量进行评估”表明foo的评估结果为None。因此,您需要:
when:foo!=无