2014-09-06 5 views
8

У меня есть сборник пьес с несколькими играми:Как запустить несколько параллельных игр параллельно?

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

Как сказать анзибль запустить обе пьесы параллельно, а не один за другим?

+0

Вы не можете, но, пожалуйста, объясните, зачем вам это нужно? – Mxx

+2

performance .... – pdeva

+0

Вопрос может быть лучше сформулирован как «Как обрабатывать несколько хостов для этой же роли параллельно?». Текущий вопрос более общий, и ответы, представленные здесь, не отвечают общим требованиям. –

ответ

7

Вы могли бы сделать это таким образом

В вашем анзибль инвентаризации, группа серверов и присвоить переменной хоста:

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

Затем ссылаться на переменную в сборник пьес:

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

Несомненно, эти несоответствующие разделители случайны? – PythonNut

+0

Исправлено, спасибо @PythonNut :) –

+0

Что такое du_rt_id? Это неотъемлемое встроенное ключевое слово? –

0

Обращайтесь к хозяевам вместе (если вы хотите, чтобы они сделали то же самое)

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

    ... 
0

Если ваши пьесы изолированы, вы можете разделить свою пьесу: 1 play -> 1 playbook. Например:

  • друида-в режиме реального времени-1.yml:

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

  • друида-в режиме реального времени-2.yml:

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

  • Держите главный сборник пьес site.yml который включает в себя другие playbooks:

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

При таком подходе вы можете использовать терминал для каждого playbooks и продолжать использовать свой главный сборник пьес.

4

Не уверен, что если бы это было возможно, когда был создан этот пост, но я считаю, что это то, что вы искали:

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

Это позволяет остановить задачу блокировать, то есть. ожидая завершения задачи, прежде чем перейти к следующей задаче.

+1

Ответ отредактирован по запросу – Sam