我有以下代码
- 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
在上面的代码中,groups[MY_HOSTNAME]
是一个数组。检查groups[MY_HOSTNAME]
是否已定义以及not empty
的最佳方法是什么?
如果是其中之一,我希望将值00.00.00.00
分配给MY_SERVER
答案 0 :(得分:11)
我不知道它是否特定于版本,但我目前在RHEL6上运行ansible-2.3.2并且我必须在组名称周围加上引号才能使其工作我:
when: groups["GROUP_NAME"] is defined and (groups["GROUP_NAME"]|length>0)
编辑:我无法将此添加为对techraf答案的评论,因为我没有足够的声誉。
答案 1 :(得分:9)
list | length
过滤器返回元素数量。如果为零,则列表为空。
对于条件值,请使用if
或ternary
过滤器(example in this answer)。
对于复合条件(groups[MY_HOSTNAME]| default([])) | length
。