Search code examples
ansible

Ansible: Run task if server belongs to a group


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

[db_servers:vars]
copy_connection_string=true

Task

- name: Copy db connection string file
  synchronize: # ...
  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?


Solution

  • 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.

    - 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.