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