一 :ansible簡單介紹 此名取自 Ansible 作者最喜愛的《安德的游戲》 小說,而這部小說更被後人改編成電影 -《戰爭游戲》。 官網地址:https://www.ansible.com/ Ansible是一個部署一群遠程主機的工具,服務端被稱作為主控制端,通過SSH協議實現被控制端之間的通 ...
一 :ansible簡單介紹
此名取自 Ansible 作者最喜愛的《安德的游戲》 小說,而這部小說更被後人改編成電影 -《戰爭游戲》。
官網地址:https://www.ansible.com/
Ansible是一個部署一群遠程主機的工具,服務端被稱作為主控制端,通過SSH協議實現被控制端之間的通信。我認為只要管理員能通過ssh登錄到另外一臺任何遠程主機上能做的操作,Ansible都可以輕鬆基於模塊化做到你想做的任務,例如 copy,file,shell,等等眾多模塊,目前支持的模塊大概2千左右,後續可能會更多,它也是python開發的一款軟體,需要依賴一些python庫和組件,如:paramiko,PyYaml和jinja三個關鍵組件,目前已經被Redhat收購,(可喜可賀)!
二:常用的運維自動化工具
Ansible:基於python研發,中小型應用環境,我實際環境大約2000台左右,執行的時候會比較慢,後續有優化的方法。
Saltstack:python,一般需部署agent,執行效率更高,大型環境幾千台的雲主機還是很不錯,因為有anget,所以它的效率會更高,由於ansible的簡單盛行,現在的我基本很少用了。
Puppet:ruby開發,功能強大,配置複雜,重型,覺得一般都是大公司都在用吧,很牛的一款工具
其他的也有但是沒怎麼用過,就不做探討了。
三:為什麼要用ansible
- 既然找到這裡就說明你已經知道這個工具的重要性。
- 簡單,批量,易學,操作方便,不需要C/s架構,同時 ansible是新出現的自動化運維工具,基於Python開發。
- 集合了眾多運維工具的優點,實現了批量系統配置、批量程式部署。
- 最主要的我認為是基於SSH認證,省去了agent比較方便。 那為什麼不用Saltstack ?哈哈,我是覺得煩瑣,需要部署agent。
四:優點的特性
- 模塊化:使用特定的模塊,完成模塊任務,有Paramiko,PyYAML,Jinja2(模板語言)三個關鍵組件
- 支持自定義模塊
- 基於Python語言實現
- 部署簡單,基於python和SSH(預設已安裝),agentless
- 安全,基於OpenSSH
- 支持playbook編排任務
- 冪等性:一個任務執行1遍和執行n遍效果一樣,不因重覆執行帶來意外情況
- 無需代理不依賴PKI(無需ssl)
- 可使用任何編程語言寫模塊
- YAML格式,編排任務,支持豐富的數據結構
- 較強大的多層解決方案
五:重要組成部分
- API:供第三方程式調用的應用程式編程介面
- Inventory:Ansible管理主機清單,存放在/etc/ansible/hosts(預設)
- Modules:模塊,Ansible執行命令的功能的模塊,多個命令的組合,每個命令都是一個模塊
- Playbook:劇本,多個模塊的組合,編排定義Ansible任務集的配置文件,由Ansible順序依次執行,通常是JSON格式的YML文件,如遇到任務失敗,可回滾
- Plugins:模塊功能的補充,如連接類型的插件、迴圈插件、變數插件、過濾插件等,該功能不常用
- Ansible:組合Inventory、API、Modules、Plugins的綠框,可以理解為是ansible命令工具,其為核心執行工具