我正在使用terraform构建AWS Infra(100个现货实例),并且可以在Linux上拆分某些任务-ubuntu(现货实例),当我运行npm install任务(nodeJS)时,在Ansible剧本中看到只有5台机器在同一时间完成该任务,然后继续进行下5个批次,依此类推。 30分钟后,Ansible完成了任务
其他任务(例如计算机上的安装服务)可以并行运行
名称:等待100秒,但仅在5秒后开始检查
wait_for_connection:
延迟:5
超时:100
名称:作为jenkins从属连接-创建代理标签文件
复制:
目的地:“ / home / ubuntu / jenkins-swarm / run-jenkins-agent-label”
内容:AGENTS_LABEL _ {{job_name}} _ {{build_number}}
注册:sout
名称:作为詹金斯奴隶进行连接
外壳:|
sudo服务jenkins-agent启动
sudo服务jenkins-agent状态
注册:sout
调试:msg =“ {{sout.stdout_lines}}”
名称:从S3复制到FS(共享)
Shell:/ home / {{ansible_ssh_user}} /。local / bin / aws s3 sync“ s3:// automationtool / {{job_name}} _ {{build_number}}”“ / home / {{ansible_ssh_user}} / src_temp”
注册:sout
名称:FS上的NPM安装源(共享)
外壳:|
cd / home / {{ansible_ssh_user}} / src_temp
sudo npm install
注册:sout
我希望看到所有机器(〜100台)都在同一时间获取并执行任务
答案 0 :(得分:1)
解释你为什么
看到只有5台计算机同时完成该任务,然后继续进行下5批操作,依此类推。 30分钟后,Ansible完成了任务
让我引用Strategies:
默认情况下,播放是采用线性策略进行的,在该策略中,所有主机将在任何主机开始下一个任务之前运行每个任务,并使用分叉数(默认5 )进行并行化。
在剧本中设置序列
- hosts: all
serial: "100%"
查看所有计算机(约100台)正在同时获取并执行任务。
其他选项在Delegation, Rolling Updates, and Local Actions和ANSIBLE PERFORMANCE TUNING中可用。