默认情况下ansible
会使用facts
来检查目标服务器的环境变量,如果没有必要使用目标服务器的环境(如:网卡IP,主机名等),可以关闭这个功能,即设置
---
- hosts: all
gather_facts: False
默认情况下,ansible执行恩每个任务的并发是5个并发,也就是同时只在5台目标服务器上执行同一个任务,对于很多大规模集群效率很低。ansible有一个forks
参数可以设置每个任务的并发,在 ansible.cfg
中添加 forks = 100
可以使得每个任务的执行时并发达到100台主机
[defaults]
host_key_checking = False
forks = 100
参考 并发运行使用async
和poll
,前者触发并行运行任务
(task
),其值是任务的最大超时时间,后者表示检查任务是否完成的频率时间。这个方法对于一组任务之间没有顺序关系的话可以加快执行。也就是task1
,task2
。。。taskN
之间没有顺序关系,则可以提高执行效率。
有以下的一些场景你是需要使用到ansible的polling特性的:
- 你有一个task需要运行很长的时间,这个task很可能会达到timeout.
- 你有一个任务需要在大量的机器上面运行
- 你有一个任务是不需要等待它完成的