1.ansible前言
1.1運維工具分類(一)
1.1.1OS Provisioning(用來提供操做系統)
PXE:整合集中服務提供了系統的預執行環境,dhcp(udp 67,68),tftp(udp 69),http或者ftp服務
Cobbler:把單個使用的pxe環境作了進一步的抽象,除了能夠提供dhcp和解析服務除了dhcp和bind的話,還有一種軟件叫dnsmasq,這個軟件既能夠提供dhcp服務也能夠提供域名解析服務。
RedHat Satellite:需購買紅帽服務,通常金融類的公司使用的多。
1.1.2OS Config(用來統一配置)
Puppet:在執行任務方面能力至關薄弱
Saltstack
func
1.1.3Task Excute(任務執行)
fabric
Func,也具備這個功能,能夠歸類到兩類工具彙總
Saltatck,這個也能夠完成統一配置,也能夠任務執行
Deployment(部署應用)
Fabric
Ansible,還沒有實現的功能就是os provisioning,聽說也在研發中,自己也是輕量級的。不像puppet,chef,func,指揮其它主機配置,稱爲管理主機,必須有專門的安全通道。基本都是基於ssl
1.2運維工具分類(二)
1.2.1 Agent
puppet,func,salatstac
1.2.2 Agentless
(1)依賴於每一個被管理主機須要運行ssh服務
(2)須要帳號和密碼,尤爲是root帳號
ansible,fabric,依賴於ssh
2.ansible簡介
(1)2012年問世
(2)源代碼託管在github上,有不少追隨者
(3)2012 top 10優秀開源項目
(4)使用python語言編寫
3.ansible特性
(1)不須要專門部署agent,也不須要部署專門的服務器
(2)融合了衆多功能,實現多層聯動,能夠說是將多種工具集於一身
①configuration:cfengine(網絡配置),chef(大廚),puppet(木偶,傀儡)
②deployment:capistrano(人名,卡皮斯特拉諾),fabric(組織,構造)
③ad-hoc tasks:func(函數)
④multi-tier (多層)orchestration(管絃樂隊):juju,(護符,小玩物)sort of
(3)輕量級
(4)先後沒有次序,本身定義動做,依賴關係。只要任何一個任務出錯,能夠立刻中止,來進行修改
(5)由於是基於ssh,因此不會用到ssl,也就不依賴於證書
(6)功能都是模塊化的,實現任何功能都是調用模塊。並且模塊可使用任何編程語言來編寫,包括shell腳本
(7)yaml,使用標籤來定義格式,也能夠根據角色來進行構建
4.ansible組件
4.1 Host Inventery
(1)文本文件
(2)包含主機的ip地址,掩碼,ssh服務監聽的地址,端口號,帳號密碼等,有了這些讓遠程管理成爲可能。
4.2 Core Modules
(1)完成大部分的平常管理任務,但並非全部任務
(2)例如但願主機1來新建一個帳戶,ansible並不能指揮host1來作這件事,而是要調用這個模塊。
4.3 Custom Modules
自定義模塊,可使用任何編程語言來編寫。
4.4 Connection Plugins
(1)與其它主機進行通訊,調用的是python裏邊的Paramiko模塊
(2)默認使用ssh協議,基於ssh協議的客戶端。
4.5 plugs
(1)Login:進入到日誌中
(2)Email:通知相關管理員
(3)Other:自行開發
4.6 Playbooks
(1)使用的是PyYAML和 jinja2這兩個模塊。將多個任務寫入yaml文件中,能夠屢次調用
(2)在同一主機上操做屢次,結果也是相同的。python