我有下一个main.yml,我想一个角色一个接一个地运行,但对于不同的主机并行运行:例如,首先,我想在paralel中的所有主机上运行“ cluster-prerequisites”角色,完成后再运行“ docker”角色,等等。
- 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
从Rolling Update Batch Size章节开始:
默认情况下,Ansible将尝试并行管理播放中引用的所有计算机。对于滚动更新用例,您可以使用
serial
关键字来定义Ansible一次应管理多少个主机。因此,如果您从游戏中删除
serial: 1
,Ansible将在所有游戏中的主机上并行运行任务。
通过设置serial: 1
,您告诉Ansible一对一地托管主机,并且仅在前一个任务完成所有任务后才移至下一个。
通常,您要在一堆后端服务器上进行串行运行以批量更新它们,以防止服务中断,因为部分服务器仍可以满足客户端的请求。