Ansible優化

優化

  • 優化ansible速度
  1. 開啓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 會看到長連接存在

  2. 開啓pipelining

    ansible執行過程中,他會基於調用的模塊生成一個python腳本,然後將python腳本複製到主機上,最後執行腳本.
    ansible支持一個優化,叫做pipelining,在這個模式下ansible執行腳本時並不會去複製它,而是通過管道傳遞給ssh會話,這會讓ansible的ssh會話從2個減少到1個,從而節省時間.

     [ssh_connection]
     pipelining = True  # sudoer配置要關閉requiretty選項(不需要再終端執行sudo命令)
     use_tty = False
    
  3. scp_if_ssh

     scp_if_ssh=False
    

用戶操控一個一個沒有開啓SFTP協議的遠程系統.如果這個設置爲True,scp將代替用來爲遠程主機傳輸文件:

  1. 設置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
    
  • 其他優化項
  1. 目錄結構

    如果只是一個簡單的獨立任務,使用playbook文件即可,方便我們在其他地方引用. 複雜建議採用role形式管理.

  2. 定義多環境

    通過Inventory 方式去區分多環境下的主機或者主機組信息. 生成多個主機文件.
    不同環境需要調用不同的playbook 或者task ,可以通過when 方式去判斷當前的主機信息存在哪個環境中,然後進行引用.

  3. 檢測
    ansible-playbook 命令的–syntax-check 參數即可

  4. 灰度發佈

    挑選一臺機器進行測試,只有進行測試之後我們才知道整個配置流程是否達到我們想要結果.
    進行預運行時,我們只需要把一個或者多個task 使用delegate_to參數指定到一臺設備上進行測試. 如果測試通過後,再進行接下來的工作.

  5. 統一管理

    納入git倉庫管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章