Ansible自動化運維
IT運維主流自動化管理工具
Puppet自動化運維工具特點
- Puppet是早期的Linux自動化運維工具,是一種Linux像鸡、UNIX茴厉、Windows平臺的集中配置管理系統(tǒng),發(fā)展至今已經(jīng)非常成熟,可以批量管理遠程服務(wù)器,模塊豐富,配置復雜,基于Ruby語言編寫.最典型的C/S模式,需要安裝客戶端與服務(wù)端
- Puppet采用C/S星狀的結(jié)構(gòu),所有的客戶端和一個或幾個服務(wù)器交互,每個客戶端周期地(默認半小時)向服務(wù)器發(fā)送請求,獲得其最新的配置信息,保證和該配置信息同步
- 每個Puppet客戶端每半小時連接一次服務(wù)器端,下載最新的配置文件,并且嚴格按照配置文件來配置客戶端.配置完成之后,Puppet客戶端可以反饋給服務(wù)器端一個消息,如果出錯也會給服務(wù)器端反饋一個消息
- Puppet適用于服務(wù)器管理的整個過程,比如初始安裝坠韩、配置风响、更新以及系統(tǒng)下載
SlatStack自動化運維工具特點
- SlatStack與Puppet均是C/S模式,需要安裝服務(wù)端和客戶端,基于Python編寫,加入MQ消息同步,可以使執(zhí)行命令和執(zhí)行結(jié)果高效返回,但其執(zhí)行過程需等待客戶端全部返回,如果客戶端未及時返回或未響應的話,可能導致部分機器沒有執(zhí)行結(jié)果
Ansible自動化運維工具特點
- Ansible與SaltStack均是Python語言開發(fā),Ansible只需要在一臺普通的服務(wù)器上運行即可,不需要在客戶端服務(wù)器上安裝客戶端.因為Ansible是基于SSH遠程管理,而Linux服務(wù)器大都離不開SSH,所以Ansible不需要為配置工作添加額外的支持
- Ansible安裝使用非常簡單,而且基于上千個插件和模塊,實現(xiàn)各種軟件勘畔、平臺礁蔗、版本的管理,支持虛擬容器多層級的部署.部分人在使用Ansible工具時,認為Ansible比SaltStack執(zhí)行效率慢,其實并不是軟件本身慢,而是由于SSH服務(wù)慢,可以優(yōu)化SSH連接速度及使用Ansible加速模塊,滿足上萬臺服務(wù)器的維護和管理
Ansible運維工具原理
- Ansible利用推送方式對客戶系統(tǒng)加以配置,這樣所有工作都可在主服務(wù)器端完成.其命令行機制非常強大,運行大家利用商業(yè)許可證Web UI實現(xiàn)授權(quán)管理與配置,可以通過命令行或者GUI來使用Ansible.運行Ansible的服務(wù)器稱為"管理節(jié)點",通過Ansible進行管理的服務(wù)器稱為"受控節(jié)點"
- Ansible優(yōu)點:
- 輕量級,更新時只需要在操作機上進行一次更新即可
- 采用SSH協(xié)議
- 不需要客戶端安裝agent
- 批量任務(wù)執(zhí)行可以寫成腳本,而且不用分發(fā)到遠程客戶端
- 使用Python編寫,維護更簡單
- 支持sudo普通用戶命令
- 去中心化管理
Ansible:Ansible核心程序慰枕。
HostInventory:記錄由Ansible管理的主機信息台汇,包括端口亭姥、密碼稼钩、ip等。
Playbooks:“劇本”YAML格式文件达罗,多個任務(wù)定義在一個文件中坝撑,定義主機需要調(diào)用哪些模塊來完成的功能。
CoreModules:核心模塊粮揉,主要操作是通過調(diào)用核心模塊來完成管理任務(wù)巡李。
CustomModules:自定義模塊,完成核心模塊無法完成的功能扶认,支持多種語言侨拦。
ConnectionPlugins:連接插件,Ansible和Host通信使用
Ansible任務(wù)執(zhí)行模式
- Ansible 系統(tǒng)由控制主機對被管節(jié)點的操作方式可分為兩類辐宾,即
adhoc
和playbook
:
- ad-hoc模式(點對點模式) : 使用單個模塊狱从,支持批量執(zhí)行單條命令.ad-hoc 命令是一種可以快速輸入的命令膨蛮,而且不需要保存起來的命令。就相當于bash中的一句話shell
- playbook模式(劇本模式) : 是Ansible主要管理方式季研,也是Ansible功能強大的關(guān)鍵所在.playbook通過多個task集合完成一類功能敞葛,如Web服務(wù)的安裝部署、數(shù)據(jù)庫服務(wù)器的批量備份等.可以簡單地把playbook理解為通過組合多條ad-hoc操作的配置文件
Ansible執(zhí)行流程
- Ansible在運行時与涡, 首先讀取
ansible.cfg
中的配置惹谐, 根據(jù)規(guī)則獲取Inventory
中的管理主機列表, 并行的在這些主機中執(zhí)行配置的任務(wù)驼卖, 最后等待執(zhí)行返回的結(jié)果
Ansible命令執(zhí)行過程
- 加載自己的配置文件氨肌,默認
/etc/ansible/ansible.cfg
- 查找對應的主機配置文件,找到要執(zhí)行的主機或者組
- 加載自己對應的模塊文件酌畜,如 command
- 通過ansible將模塊或命令生成對應的臨時py文件(python腳本)怎囚, 并將該文件傳輸至遠程服務(wù)器
- 對應執(zhí)行用戶的家目錄的
.ansible/tmp/XXX/XXX.PY
文件
- 給文件 +x 執(zhí)行權(quán)限
- 執(zhí)行并返回結(jié)果
- 刪除臨時py文件,
sleep 0
退出