ansible优化
查看playbook执行所消耗的时间
[student@workstation projects-parallelism]$ time ansible-playbook playbook.yml
PLAY [Update web server] *****************************************************************
TASK [Gathering Facts] *******************************************************************
ok: [serverd.lab.example.com]
ok: [serverb.lab.example.com]
ok: [servera.lab.example.com]
ok: [serverc.lab.example.com]
TASK [Latest version of apache installed] ************************************************
changed: [servera.lab.example.com]
changed: [serverb.lab.example.com]
changed: [serverc.lab.example.com]
changed: [serverd.lab.example.com]
RUNNING HANDLER [Restart apache] *********************************************************
changed: [serverb.lab.example.com]
changed: [serverd.lab.example.com]
changed: [servera.lab.example.com]
changed: [serverc.lab.example.com]
PLAY RECAP *******************************************************************************
servera.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverb.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverc.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverd.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
real 0m41.904s
user 0m2.620s
sys 0m1.346s
forks并发数量
forks是线程数,受限于CPU的核心数,但是加大forks的值,能让CPU尽量的提升并发数量,一定程度上提高执行效率
ansible的forks数量默认是5
查看默认的forks数量
[student@workstation ~]$ ansible-config dump | grep -i forks
DEFAULT_FORKS(default) = 5
修改forks
# 编辑配置文件
vim ansible.cfg
# 修改forks数量
forks = 10
serial滚动更新
默认情况下,Ansible将尝试并行管理playbook中所有的机器。
可以使用serial关键字定义Ansible一次应管理多少主机.
常应用与负载均衡环境下,不能一次性停止所有主机的场景。
按百分比执行
name test play
hosts webservers
serial"30%"
指定单次执行数量
- name: test play
hosts: webservers
serial: 2
gather_facts收集主机信息
playbook执行的第一个默认tasks是gather_facts,用于收集主机信息
如果要执行的任务并不需要调用主机信息变量,关闭能提高运行速度
name test play
hosts webservers
gather_factsFalse
tasks
name task one
comand hostname