当Ansible处理playbook的时候会顺序运行每个play
确定play的主机列表之后Ansible将按顺序运行每个任务
一般来说,所有主机必须在任何主机在play中启动下一个任务之前成功完成任务
理论上,Ansible可以同时连接到play中的所有主机来执行每项任务
Ansible所进行的最大同时连接数由Ansible配置文件中的forks参数控制
且默认情况下为5
使用命令查看 forks 的默认值——grep forks ansible.cfg
![](https://img-blog.csdnimg.cn/img_convert/95f7fdb2c00921eaee55a3bca6096676.png)
![](https://img-blog.csdnimg.cn/img_convert/92f0777881f852ec59bb8fd0031ee790.png)
简单来说,在所有主机上同时做第一个任务,然后一起做第二个任务
以此类推
使用 -f 或者--forks指定分叉的数量
![](https://img-blog.csdnimg.cn/img_convert/638353bb7b53f0245bc9324194b471ed.png)
简单点来说 就是 有很多主机的话
serial:2
先对两台机子下手,这两台机子同时配置
一起做任务一,然后一起做任务二
当所有任务完成的时候
进行下两台的任务
实验:配置并行
![](https://img-blog.csdnimg.cn/img_convert/b91b114b58fc76a982f58e0ff3042e68.png)
任务:跨多个受管主机调整playbook的并行和串行执行
实验开始: lab projects-parallelism start
去往工作目录: cd ~/projects-parallelism
查看文件 vim ansible.cfg
![](https://img-blog.csdnimg.cn/img_convert/bafa6190520a4ea89539ff88420ce7ed.png)
查看inventory文件的内容
![](https://img-blog.csdnimg.cn/img_convert/04913a84a7b1376321a8ac5151a6a1b1.png)
检查playbook的内容 vim playbook.yml
![](https://img-blog.csdnimg.cn/img_convert/5a2e67e83c26827f63efddfc7f18c283.png)
检查remove_apache.yml的内容
![](https://img-blog.csdnimg.cn/img_convert/da05f3374c3145ba8c55019c586183a2.png)
2.执行playbook并且使用time命令得到运行所需时间
注意ansible如何同时在所有四台主机上执行每项任务
![](https://img-blog.csdnimg.cn/img_convert/9ad6bb6b64fd3d9a76f53552d5035d20.png)
注意时间
![](https://img-blog.csdnimg.cn/img_convert/6d7bd056441aafa1f97e8bddf5787848.png)
3.执行ansible-playbook remove_apache.yml以停止和禁用httpd服务并删除httpd软件包
4.在ansible.cfg中将forks参数的值改为1
![](https://img-blog.csdnimg.cn/img_convert/c56ac755a2a04def2bd4a169f5fe7f02.png)
5.重新运行playbook并且使用time命令得到运行所需时间
注意这次ansible将一次在一台主机上执行各项任务
注意减少了分叉数量之后如何导致了playbook执行时间比以往更长
![](https://img-blog.csdnimg.cn/img_convert/dd30afe437ba8a5b1180b4680278e61d.png)
6.执行ansible-playbook remove_apache.yml以停止和禁用httpd服务并删除httpd软件包
7.将forks的值设置为2
![](https://img-blog.csdnimg.cn/img_convert/5d3d0f536fd9054abec2e448e225493f.png)
8.在playbook.yml中添加serial参数并且值设置为2
![](https://img-blog.csdnimg.cn/img_convert/3d07323ae16a09537fe8d60ee6ae43b1.png)
9.运行playbook.yml
![](https://img-blog.csdnimg.cn/img_convert/1160eece5f5d01e384c2fbc15f95f654.png)
很明显分开运行了
10.执行ansible-playbook remove_apache.yml以停止和禁用httpd服务并删除httpd软件包
11.将forks的值设置为4
12.将playbook中的serial的参数设置为3
![](https://img-blog.csdnimg.cn/img_convert/b1a77c98f873dc7bf553d617bd42a51c.png)
13.重新运行 playbook
此时ansible会只在三台主机上执行整个play
然后在最后一台主机上重复该play
![](https://img-blog.csdnimg.cn/img_convert/2d035ddafafc84fbe906296fe9438160.png)
实验结束 lab projects-parallelism finish