2015年10月28日發(fā)布
This talk will cover the pros and cons of four different OpenStack deployment mechanisms. Puppet, Chef, Ansible, and Salt for OpenStack all claim to make it much easier to configure and maintain hundreds of OpenStack deployment resources. With the advent of large-scale, highly available OpenStack deployments spread across multiple global regions, the choice of which deployment methodology to use has become more and more relevant.
視頻:
https://www.youtube.com/watch?v=2H95tx7Fuv4
此視頻的目的是:幫助你對配置管理工具做一個合理的選擇
1,為什么配置管理對于運行 OpenStack 是關(guān)鍵性的徘层?
復(fù)雜性:OpenStack 是一個大型的分布式 Iaas 云系統(tǒng)
變化:OpenStack 是一個開源項目酬土,升級快速
持續(xù)性:OpenStack 集群經(jīng)常被復(fù)制到多個環(huán)境
兼容性:OpenStack 自動化的關(guān)鍵性定欧,速度画株,可靠性课舍,兼容性
質(zhì)量保證:OpenStack CM 工具是云管理實現(xiàn)的最佳實踐
2霹俺,四個最流行的配置管理項目是什么敬特?
對于如今的運維來說掰邢,配置管理工具是工作核心的一部分。
工具的流行程度:正在使用/計劃使用
Chef: 28%/18%
Puppet: 24%/19%
Docker: 13%/35%
Ansible: 10%/10%
Salt: 6%/10%
出現(xiàn)時間:
Puppet: 2005
Chef: 2008
Satl: 2012
Ansible: 2013
3伟阔,它們各自支持 OpenStack 部署的力度
Salt:
配置管理系統(tǒng)辣之,能夠與大規(guī)模的系統(tǒng)進行高速的通信。
能力:可以維持被控節(jié)點的狀態(tài)為被定義的狀態(tài)(例如皱炉,確保某個 packages 的安裝怀估,確保某個服務(wù)處于運行狀態(tài))
基于 Python 開發(fā),使用 push 或者 SSH 與客戶端進行通信合搅《嗖螅可以查詢遠程節(jié)點的數(shù)據(jù)。
使用 AES 協(xié)議灾部,加密地并發(fā)執(zhí)行遠程命令
網(wǎng)絡(luò)層構(gòu)建于 ZeroMQ 分部署消息網(wǎng)絡(luò)庫康铭,使用 mspack 對二進制數(shù)據(jù)進行序列化,以確倍乃瑁快速的網(wǎng)絡(luò)通信从藤。
Salt 的特點和特性
高可擴展性:垂直和水平擴展
一個主控機的管理多個主控節(jié)點
Peer Interface: 允許 Minions 控制其他 Minions催跪;有利于查詢和連續(xù)的代碼發(fā)送
Reactor system: resides on Event Bus with Master;對于事件的反應(yīng)能力夷野;可用于自動代碼部署懊蒸。
Salt 主要組件:
Salt Master - 控制 Minions
Master Daemon - 為 Master 運行任務(wù)(認證 minions, 與連接的 minions 通信,salt CLI)
Salt Client - 與 Master 運行在同一個機器上悯搔;提供命令給 Master骑丸;用于可通過 Clinet 看到執(zhí)行結(jié)果
Minion - 從 Master 接收命令,運行任務(wù)妒貌,并返回結(jié)果給 Master
Salt Modules - 可在 Salt CLI 上運行的 function (patterns)
Halite - 可選的 web UI
Salt 總結(jié):
Ansible
Ansible 是一個遠程命令執(zhí)行系統(tǒng)通危,可對命令執(zhí)行進行編排,可數(shù)據(jù)進行查詢苏揣。它是一個配置管理 & 命令執(zhí)行工具黄鳍。
基于 Python推姻,playbooks 的配置語言是 YAML平匈,易于讀寫
提供多種 push 方法,最主要的是基于 SSH 的推送方法
不需要 agent藏古,但需要能 SSH 訪問被控節(jié)點增炭,以及要求被控節(jié)點安裝了 Python 解釋器
特點:
- 高可擴展性
- Fact Sharing
- 強大的編排引擎
Ansible 架構(gòu)
主要組件:
Ansible - Python CLI and libraries
Playbooks - YAML 文件,描述任務(wù)如何被執(zhí)行
Roles - Playbooks 和 Varaibles 的集合
Inventory - 服務(wù)器的分組列表
Tower - 企業(yè)版
for OpenStack
Ansible 優(yōu)缺點總結(jié):
Puppet
開源的配置管理工具拧晕,可進行自動化的系統(tǒng)管理隙姿。
以 Client/Server 架構(gòu)部署,client 周期性地輪詢 Server厂捞,以獲得期望的狀態(tài)输玷,并且返回狀態(tài)報告給 master
分布式的架構(gòu),快速靡馁,高效地 provison, 升級欲鹏,管理節(jié)點
基于 Ruby,使用可定制的 DSL 編寫 manifest臭墨,采用 ERB 構(gòu)建模塊
比較容易增加赔嚎、刪除節(jié)點;每個集群可有多個 master胧弛,組成 HA 架構(gòu)尤误。
任務(wù)是冪等性的(多次執(zhí)行,結(jié)果一樣)结缚,只當節(jié)點狀態(tài)不符合要求時才執(zhí)行
資源是高度抽象的损晤,用戶可忽略命令名、文件格式红竭、文件路徑等細節(jié)尤勋。making manifests OS agnostic
for OpenStack
Puppet 優(yōu)缺點總結(jié):
Chef:
Chef 優(yōu)缺點總結(jié)
幾種工具的對比:
4码党,根據(jù)你的角色和組織,如何選擇特定的工具
作為管理者斥黑,關(guān)心的是穩(wěn)定性揖盘,可維護性,大規(guī)模部署能力