2017-01-23 58 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章:

默认情况下,Ansible会尝试并行管理剧中引用的所有机器。对于滚动更新使用情况,您可以定义Ansible应该有多少台主机在单一时间管理使用serial关键字...

所以,如果你从你的剧本删除serial: 1,Ansible将运行在所有任务主机并行运行。

通过设置serial: 1,您告诉Ansible逐个接收主机,并且只有在前一个任务完成所有任务时才会移动到下一个主机。

通常情况下,您希望在一群后端服务器上进行串行运行以批量更新它们以防止服务停机,因为部分服务器仍可以服务客户端的请求。

+0

真的非常感谢!这对我很有效 :) –

相关问题