優化
- 優化ansible速度
-
開啓SSH長連接
# ssh版本:> 5.6 [ssh_connection] sh_args = -C -o ControlMaster=auto -o ControlPersist=5m #連接保留5d ansible.cfg -C 壓縮傳輸 control_path_dir = $HOME/.ansible/cp control_path = %(directory)s/%%h-%%r
設置之後,連接信息會被保留在~.ansible/cp下, netstat -nltpa | grep ESTABLISH | grep ssh 會看到長連接存在
-
開啓pipelining
ansible執行過程中,他會基於調用的模塊生成一個python腳本,然後將python腳本複製到主機上,最後執行腳本.
ansible支持一個優化,叫做pipelining,在這個模式下ansible執行腳本時並不會去複製它,而是通過管道傳遞給ssh會話,這會讓ansible的ssh會話從2個減少到1個,從而節省時間.[ssh_connection] pipelining = True # sudoer配置要關閉requiretty選項(不需要再終端執行sudo命令) use_tty = False
-
scp_if_ssh
scp_if_ssh=False
用戶操控一個一個沒有開啓SFTP協議的遠程系統.如果這個設置爲True,scp將代替用來爲遠程主機傳輸文件:
-
設置facts 緩存
# 保存json文件 gathering = smart fact_caching_timeout = 86400 fact_caching = jsonfile fact_caching_connection = /dev/shm/ansible_fact_cache # 保留redis 目前facts 存儲還不支持遠端,所以需要在Ansible 中控機上安裝Redis 服務,然後安裝Redis Python 庫 gathering = smart fact_caching_timeout = 86400 fact_caching = redis
- 其他優化項
-
目錄結構
如果只是一個簡單的獨立任務,使用playbook文件即可,方便我們在其他地方引用. 複雜建議採用role形式管理.
-
定義多環境
通過Inventory 方式去區分多環境下的主機或者主機組信息. 生成多個主機文件.
不同環境需要調用不同的playbook 或者task ,可以通過when 方式去判斷當前的主機信息存在哪個環境中,然後進行引用. -
檢測
ansible-playbook 命令的–syntax-check 參數即可 -
灰度發佈
挑選一臺機器進行測試,只有進行測試之後我們才知道整個配置流程是否達到我們想要結果.
進行預運行時,我們只需要把一個或者多個task 使用delegate_to參數指定到一臺設備上進行測試. 如果測試通過後,再進行接下來的工作. -
統一管理
納入git倉庫管理