2017-04-06 112 views
1

塞納里奧:兩部劇有兩個不同的主機在同一劇本與依賴

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. 

問題:如果我同時運行起着分別是成功的。 但是,我需要他們在相同的腳本。

我認爲這個問題是兩個遊戲並行執行。

並提前致謝。

--- 
- 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 
+0

我認爲問題在於您手動更新主機文件而不是使用'add_host'。 –

+0

我正在使用lineinfile來更新主機....可以有任何問題嗎? –

回答

1

Ansible處理劇本之前負載庫存。

在你的情況下,第二個遊戲具有與第一個遊戲中修改之前相同的庫存。

通常,當您配置雲主機時,您可能希望使用add_host動態地將新主機添加到內存清單中,以便它們可用於後續播放。

您也可以嘗試在庫存修改後致電meta: refresh_inventory,但我不確定它是否可以更新靜態庫存。

+0

我試着用'add_host'現在第二個遊戲能夠執行,但它顯示**跳過** –

+0

添加劇本片段和日誌輸出到您的_original_問題。 –

+0

應該在第二次玩之前添加'meta:refresh_inventory'嗎? –

相關問題