關(guān)閉 gathering facts
如果您觀察過(guò) ansible-playbook 的執(zhí)行過(guò)程中尚卫,您會(huì)發(fā)現(xiàn) ansible-playbook 的第 1 個(gè)步驟總是執(zhí)行 gather facts,不論你有沒(méi)有在 playbook 設(shè)定這個(gè) tasks呀袱。如果你不需要獲取被控機(jī)器的 fact 數(shù)據(jù)的話劫笙,你可以關(guān)閉獲取 fact 數(shù)據(jù)功能况芒。關(guān)閉之后符隙,可以加快 ansible-playbook 的執(zhí)行效率舅巷,尤其是你管理很大量的機(jī)器時(shí),這非常明顯兵钮。關(guān)閉獲取 facts 很簡(jiǎn)單沟堡,只需要在 playbook 文件中加上“gather_facts: no”即可。如下
---
- hosts: 172.16.64.240
gather_facts: no
remote_user: liheng
sudo: yes
roles:
- {role: profile_test}
好的矢空,來(lái)看關(guān)閉前后的執(zhí)行時(shí)間變化。
SSH PIPElinING
SSH pipelining 是一個(gè)加速 Ansible 執(zhí)行速度的簡(jiǎn)單方法禀横。ssh pipelining 默認(rèn)是關(guān)閉屁药,之所以默認(rèn)關(guān)閉是為了兼容不同的 sudo 配置,主要是 requiretty 選項(xiàng)柏锄。如果不使用 sudo酿箭,建議開(kāi)啟复亏。打開(kāi)此選項(xiàng)可以減少 ansible 執(zhí)行沒(méi)有傳輸時(shí) ssh 在被控機(jī)器上執(zhí)行任務(wù)的連接數(shù)。不過(guò)缭嫡,如果使用 sudo缔御,必須關(guān)閉 requiretty 選項(xiàng)。修改 /etc/ansible/ansible.cfg 文件可以開(kāi)啟 pipelining
將
pipelining=False
修改為
pipelining=True
修改完后妇蛀,可以批量對(duì)機(jī)器執(zhí)行命令試下耕突,可以明顯感受到速度的提升。
ControlPersist
ControlPersist 特性需要高版本的 SSH 才支持评架,CentOS 6 默認(rèn)是不支持的眷茁,如果需要使用,需要自行升級(jí) openssh纵诞。ControlPersist 即持久化 socket上祈,一次驗(yàn)證,多次通信浙芙。并且只需要修改 ssh 客戶端就行登刺,也就是 Ansible 機(jī)器即可。
升級(jí) openssh 的過(guò)程這里不做介紹嗡呼。這里只介紹下 ControlPersist 設(shè)置的辦法纸俭。
cat ~/.ssh/config
Host *
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 5
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 4h
在開(kāi)啟了 ControlPersist 特性后,SSH 在建立了 sockets 之后晤锥,節(jié)省了每次驗(yàn)證和創(chuàng)建的時(shí)間掉蔬。在網(wǎng)絡(luò)狀況不是特別理想,尤其是跨互聯(lián)網(wǎng)的情況下矾瘾,所帶來(lái)的性能提升是非撑危可觀的。有這邊需求的壕翩,試試就知道了蛉迹。