检查ansible中是否定义了数组且数组不为空
我有以下代码检查ansible中是否定义了数组且数组不为空,ansible,ansible-facts,Ansible,Ansible Facts,我有以下代码 - set_fact: MY_HOSTNAME: "SOME VALUE" MY_SERVER: "00.00.00.00" - name: Get MY server set_fact: MY_SERVER: "{{ groups[MY_HOSTNAME][0] }}" when: groups[MY_HOSTNAME] is defined 在上面的代码中,组[MY_HOSTNAME]是一个数组。检查组[MY_HOSTNAME]是否已定义,以及
- set_fact:
MY_HOSTNAME: "SOME VALUE"
MY_SERVER: "00.00.00.00"
- name: Get MY server
set_fact:
MY_SERVER: "{{ groups[MY_HOSTNAME][0] }}"
when: groups[MY_HOSTNAME] is defined
在上面的代码中,组[MY_HOSTNAME]
是一个数组。检查组[MY_HOSTNAME]
是否已定义,以及是否为空的最佳方法是什么
如果是其中之一,我希望将值00.00.00.00
分配给MY_SERVER
list | length
过滤器返回元素数。如果为零,则列表为空
对于条件值,请使用if
或三值过滤器()
对于复合条件(组[MY_HOSTNAME]|默认([])|长度
),我不知道它是否是特定于版本的,但我目前正在RHEL6上运行ansible-2.3.2,我必须在组名周围加上引号才能使它对我起作用:
when: groups["GROUP_NAME"] is defined and (groups["GROUP_NAME"]|length>0)
编辑:我无法将此作为评论添加到techraf的回答中,因为我没有足够的声誉。有没有办法同时检查它是否未定义且不为空?您尝试了什么?您遇到了什么问题?我尝试了组[MY_HOSTNAME]的定义和组[MY_HOSTNAME]| length>0
,但似乎不起作用“似乎不”看起来像什么?谢谢。。。但我仍然对len(foo)(Python检查长度的方法)不起作用感到沮丧。请注意:|length
也适用于字符串。如果输入是一个字符串而不是数组,它将简单地返回字符串的长度