Sid
Sid

Reputation: 181

two plays with two different host in same playbook with dependency

Senario:

1. I need to run two plays in a single playbook.
2. The second play should run after the first play.
3. The first play create few instance and update the inventory file by making new group.
4. Second play uses the updated group and install few packages.

Problem: If I am running both plays separately it is success. But, i need them in same scripts.

The problem i think is both play executing in parallel.

And thanks in advance.

---
 - name: ec2
   hosts: localhost
   connection: local
   roles:
   - launchEc2
 - hosts: ansible
   gather_facts: Fasle
   become: yes   
   roles:
   - python

OUTPUT:

PLAY [ec2] *********************************************************************

TASK [setup] *******************************************************************
ok: [127.0.0.1]

TASK [launchEc2 : include_vars] ************************************************
ok: [127.0.0.1]

TASK [launchEc2 : Launch new ec2 instance] *************************************
changed: [127.0.0.1]

TASK [launchEc2 : Add ec2 ip to the hostgroup] *********************************
changed: [127.0.0.1] => (item={.....})

TASK [launchEc2 : wait for SSh to come up] *************************************
ok: [127.0.0.1] => (item={.....})

PLAY [ansible] *****************************************************************

TASK [python : install python] *************************************************
skipping: [34.203.228.19]

PLAY RECAP *********************************************************************
127.0.0.1                  : ok=5    changed=2    unreachable=0    failed=0   
34.203.228.19              : ok=0    changed=0    unreachable=0    failed=0

Upvotes: 1

Views: 1937

Answers (1)

Konstantin Suvorov
Konstantin Suvorov

Reputation: 68269

Ansible loads inventory before processing playbook.

In your case the second play has the same inventory as it was before modification in the first play.

Generally when you provision cloud hosts you may want to use add_host to dynamically add new hosts to in memory inventory, so they are available to subsequent plays.

You may also try to call meta: refresh_inventory after your inventory modification, but I'm not sure wether it work with updating static inventory.

Upvotes: 1

Related Questions