2017-01-23 16 views
0

У меня есть следующий main.yml, и я хотел бы запускать роли один за другим, но параллельно для разных хостов: Например, сначала я хотел бы для запуска «кластер-предпосылки» роли на всех хосте в Параллели, когда закончит запуск «Докер» роль и т.д ..Ansible: Как я могу развернуть роли на паралеле для разных хостов

- hosts: masters:private_agent:public_agent 
    remote_user: "{{user}}" 
    become: True 
    serial: 1 
    roles: 
    - role: cluster_prerequisites 

- hosts: bootstrap:masters:private_agent:public_agent 
    remote_user: "{{user}}" 
    become: True 
    serial: 1 
    roles: 
    - role: docker 

- hosts: bootstrap 
    remote_user: "{{user}}" 
    become: True 
    serial: 1 
    roles: 
    - role: prepare_bootstrap 

- hosts: masters 
    remote_user: "{{user}}" 
    become: True 
    serial: 1 
    roles: 
    - role: run_masters 

- hosts: private_agent 
    remote_user: "{{user}}" 
    become: True 
    serial: 1 
    roles: 
    - role: run_private_agents 

- hosts: public_agent 
    remote_user: "{{user}}" 
    become: True 
    serial: 1 
    roles: 
    - role: run_public_agents 

ответ

1

Из Rolling Update Batch Size главы:

по умолчанию анзибля будет пытаться для управления всеми машинами, на которые ссылается параллельная игра. Для прокатного обновления использовать случай, вы можете определить, сколько хостов анзибли должны управлять в одно время, используя ключевое слово serial ...

Итак, если вы удалите serial: 1 из ваших пьес, анзибль будет выполнять задачи по всем хосты играют параллельно.

Установив serial: 1, вы указываете Ansible, чтобы принимать хосты один за другим и переходить к следующему, только когда все задачи будут завершены на предыдущем.

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

+0

Действительно спасибо! Это отлично работает для меня :) –