Ansible之優化提公升執行效率

2022-05-17 13:08:01 字數 1987 閱讀 2233

今天分享一下ansible在工作環境中有那些可以優化的配置

環境介紹:以前在公司工作處理伺服器問題,需要用批量操作都是用shell指令碼編寫的工具,後來發現ansible這個自動化工具,安裝簡單,操作起來很方便,支援多個模組,由python開發基於ssh協議通訊的工具。這裡有個問題就是如果伺服器越來越多,ansibe執行效率會變得比較慢,可以通過優化ansible提供工作效率,具體優化的方法如下:

線上管理機器:作業系統linux,cpu為4核,記憶體8g,用這個機器管理上千臺linux伺服器都沒有太大壓力

1.修改ansible的併發數

ansible預設只會建立5個程序併發執行任務,所以一次任務只能同時控制5臺機器執行。如果有大量的機器需要控制,例如20臺,ansible執行乙個任務時會先在其中5台上執行,執行成功後再執行下一批5臺,直到全部機器執行完畢。使用-f選項可以指定程序數,指定的程序數量多一些,不僅會實現全併發,對非同步的輪訓poll也會有正面影響。

#

forks = 60

2.關閉ansible的ssh金鑰檢測

ansible預設是以ssh來實現遠端推送執行的,是基於ssh秘鑰檢測,會檢測遠端主機的公鑰,並記錄在本地中known_host檔案中,下次訪問主機時,會核對公鑰,如果公鑰不同,openssh會發出警告,如果相同,會提示輸入密碼

ssh對主機的public_key的檢查等級是根據stricthostkeychecking變數來設定的,stricthostkeychecking檢查級別包括:no(不檢查)、ask(詢問)、yes(每次都檢查)、false(關閉檢查)。

#

vim /etc/ansible/ansible.cfg

host_key_checking = false #

關閉stricthostkeychecking檢查 預設是關閉的

3.openssh鏈結優化

使用openssh服務時,預設伺服器端配置檔案usedns=yes狀態,該選項會導致伺服器根據客戶端的ip位址進行dns ptr反向解析,得到客戶端的主機名,然後根據獲取到的主機名進行dns正向a記錄查詢,並驗證該ip是否與原始ip一致。關閉dns解析**如下:

sed -i '

/^gssapi/s/yes/no/g;/usedns/d;/protocol/ausedns no

' /etc/ssh/sshd_config

4.ssh pipelining加速ansible

pipeline是openssh的乙個特性,ssh pipelining 是乙個加速ansible執行速度的簡單方法。

在ansible執行每個任務的整個流程中,有乙個過程是將臨時任務檔案put到遠端的ansible客戶機上,然後通過ssh連線過去遠端執行這個任務。

如果開啟了pipelining,乙個任務的所有動作都在乙個ssh會話中完成,也會省去sftp到遠端的過程,它會直接將要執行的任務在ssh會話中進行。

ssh pipelining 預設是關閉!!!!之所以預設關閉是為了相容不同的sudo 配置,主要是 requiretty 選項。如果不使用sudo,建議開啟!!!

開啟此選項可以減少ansible執行沒有傳輸時ssh在被控機器上執行任務的連線數。

不過,如果使用sudo,必須關閉requiretty選項。修改/etc/ansible/ansible.cfg 檔案可以開啟pipelining

sed -i '

/^pipelining/s/false/true/g

' /etc/ansible/ansible.cf

5.ansible facts快取優化

ansible-playbook 在執行過程中,缺省會執行gather facts,如果不需要獲取客戶端的fact資料的話,可以關閉獲取fact資料功能,關閉之後可以加快ansible-playbook的執行效率。如需關閉fact功能,在playbook yaml檔案中加入如下**即可:

gather_facts: false

10種技巧可提公升Android應用執行效果

開發者需要記住的是,雖然android智慧型手機和平板電腦的速度日益提公升,但其應用仍然執行在資源有限的環境中,其電池及處理器效能與最新的台式電腦 手提電腦仍存在差距。以下是某些優化應用執行效果的方法。隨著手機平台的發展和所提 用的提公升,質量成為應用成功的最重要因素。如果那些應用無法提供強大的功能...

10種技巧可提公升Android應用執行效果

隨著手機平台的發展和所提 用的提公升,質量成為應用成功的最重要因素。如果那些應用無法提供強大的功能和穩定的使用者體驗,那就會很快被使用者解除安裝。開發者需要記住的是,雖然android智慧型手機和平板電腦的速度日益提公升,但其應用仍然執行在資源有限的環境中,其電池及處理器效能與最新的台式電腦 手提電...

Ansible之四 Ad hoc與命令執行模組

ad hoc 是指ansible下臨時執行的一條命令,並且不需要儲存的命令,對於複雜的命令會使用playbook。ad hoc的執行依賴於模組,ansible官方提供了大量的模組。如 command raw shell file cron等,具體可以通過ansible doc l 進行檢視 可以使用...