Search code examples
ansibledevopsadministration

Right way to execute task on host


I have an inventory with the following hosts and which is given below( 1st cluster)

[elasticsearch-cluster-india]
elasticsearch-01-mumbai ansible_host=10.0.87.19
elasticsearch-02-mumbai ansible_host=10.0.87.20
elasticsearch-03-mumbai ansible_host=10.0.87.21

and I have different cluster which is below

[elasticsearch-cluster-kyrgyzstan]
elasticsearch-01-bishkek ansible_host=10.0.92.2
elasticsearch-02-bishkek ansible_host=10.0.92.3
elasticsearch-03-bishkek ansible_host=10.0.92.4

and I want to run the following task

- name: Set up snapshot cron job
  cron:
    name: "Elasticsearch backup"
    minute: 59
    hour: 23
    job: "{{ es_snapshot_snapshot_script_path }}/snapshot_es.sh"

so how to execute this task only on first hosts in my group? i want to execute this task only on hosts elasticsearch-01-bishkek and elasticsearch-01-mumbai


Solution

  • Add a variable to the host:

    [elasticsearch-cluster-india]
    elasticsearch-01-mumbai ansible_host=10.0.87.19 do_backup=yes
    elasticsearch-02-mumbai ansible_host=10.0.87.20
    elasticsearch-03-mumbai ansible_host=10.0.87.21
    

    Then check for it:

    - name: Set up snapshot cron job
      cron:
        name: "Elasticsearch backup"
        minute: 59
        hour: 23
        job: "{{ es_snapshot_snapshot_script_path }}/snapshot_es.sh"
      when: do_backup|default(false)|bool