Check if arrays are defined and not empty in ansible

kosta picture kosta · Dec 8, 2017 · Viewed 66.7k times · Source

I have the following code

- 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

In the above code, groups[MY_HOSTNAME] is an array. What is the best way to check that groups[MY_HOSTNAME] is defined and also that it is not empty If it is either of that I want the value 00.00.00.00 to be assigned to MY_SERVER

Answer

Phil M picture Phil M · Dec 12, 2017

I don't know if it's version specific, but I'm currently running ansible-2.3.2 on RHEL6 and I had to put quotes around the group name to get it to work for me:

when: groups["GROUP_NAME"] is defined and (groups["GROUP_NAME"]|length>0)

Edit: I couldn't add this as a comment to techraf's answer because I don't have enough reputation.