2014-09-06 30 views
8

Ho un playbook con più giochi:come eseguire più riproduzioni ansible in parallelo?

--- 
- hosts: druid-realtime-1 
    sudo: true 
    roles: 
    - { role: druid-realtime, du_rt_id: 1 } 

- hosts: druid-realtime-2 
    sudo: true 
    roles: 
    - { role: druid-realtime, du_rt_id: 2 } 

Come faccio a dire ansible per eseguire entrambi i giochi in parallelo invece che uno dopo l'altro?

+0

Non è possibile, ma si prega di spiegare perché dovresti? – Mxx

+2

performance .... – pdeva

+0

La domanda può essere formulata in modo migliore come "Come elaborare più host per lo stesso ruolo in parallelo?". La domanda attuale è molto più generica e le risposte qui presenti non rispondono ai requisiti generici. –

risposta

7

Si potrebbe fare in questo modo

Nel vostro inventario Ansible, raggruppare i server e assegnare una variabile host:

[druid-realtime] 
druid-realtime-1 id=1 
druid-realtime-2 id=2 

quindi fare riferimento alla variabile nel playbook:

- hosts: druid-realtime 
    sudo: true 
    roles: 
    - { role: druid-realtime, du_rt_id: {{ id }} } 
+0

Sicuramente quei delimitatori non corrispondenti sono accidentali? – PythonNut

+0

Risolto, grazie @PythonNut :) –

+0

Che cos'è du_rt_id? È una parola chiave integrata di Ansible? –

0

Indirizza gli host insieme (se vuoi che facciano la stessa cosa)

- hosts: druid-realtime-1:druid-realtime-2 

    ... 
0

Se le tue partite sono isolate, puoi dividere il tuo playbook: 1 gioca -> 1 playbook. Ad esempio:

  • druido-tempo reale-1.yml:

- hosts: druid-realtime-1 sudo: true roles: - { role: druid-realtime, du_rt_id: 1 }

  • druido-tempo reale-2.yml:

- hosts: druid-realtime-2 sudo: true roles: - { role: druid-realtime, du_rt_id: 2 }

  • Mantenere un playbook principale site.yml che comprende altri Playbook:

- include: druid-realtime-1.yml - include: druid-realtime-2.yml

Con questo approccio, è possibile utilizzare un terminale per ogni Playbooks e continuare a utilizzare il vostro playbook principale.

4

Non so se questo era possibile quando questo post è stato creato, ma credo che questo è ciò che stavate cercando:

http://docs.ansible.com/ansible/playbooks_async.html

Questo consente di interrompere il compito di bloccare, per esempio. in attesa che l'attività venga completata prima di passare all'attività successiva.

+1

Risposta modificata come richiesto – Sam

Problemi correlati