Question:
What’s the sane way run a task only if the host belongs to one or more groups?
Currently, I’m using a boolean within the relevant group, e.g.:
Inventory file
1 2 3 |
[db_servers:vars] copy_connection_string=true |
Task
1 2 3 4 5 |
- name: Copy db connection string file synchronize: src= ... (truncated for clarity) when: copy_connection_string is defined |
What’s the right condition in the when
clause to check whether the current host belongs to the db_servers
group?
Answer:
Run task when a host server is a member of a specific group
Ansible contains special or magic variables – one of the most common is group_names
which is a list (array) of all the groups the current host is in.
1 2 3 4 |
- name: Copy db connection string file synchronize:......... when: "'db_servers' in group_names" |
The above Ansible task will only run if the host is a member of the db_servers
group.