一.SaltStack介紹
Saltstack簡介
- Saltstack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,
- SaltStack基於python開發的一套c/s自動化運維工具,通信採用了輕量級的zeromq消息隊列的(pub/sub),數據傳輸採用了AES(高級加密)保證安全性,認證採用了SSL方式,並且與python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建
SaltStack有兩種消息系統,一種是REAT,一種是ZeroMQ,默認使用ZeroMQ
-
通過部署SaltStack,我們可以在成千上萬臺服務器上做到批量處理命令,根據不同業務進行配置集中化管理、分發文件、採集服務器數據、操作系統基礎以及軟件包管理,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。
-
對於SaltStack的官方文件解說,以及安裝請參考如右:https://repo.saltstack.com/
SaltStack的特點
- 基於python開發的c/s架構配置管理工具
- 底層使用ZeroMQ的消息隊列pub/sub方式通信
- 使用SSL證書籤發的方式進行認證管理,傳輸採用AES加密
SaltStack的服務架構
-
在SaltStack架構中服務器端爲master,客戶端爲minion。
-
master和minion端都是以守護進程的模式運行的,一直監聽配置文件裏面定義的ret_port(接受minion請求)和publish_port(發佈消息)的端口。
-
當minion運行時會自動連接到配置文件裏面定義的Master地址ret_port端口進行連接認證。
-
SaltStack除了傳統的C/S架構之外,其實還有一種叫作Masterless的架構,它不需要單獨安裝一臺master服務器,只需要在每臺服務器上安裝Minion端口,然後採用本機只負責對本機的配置管理機制服務的模式。
SaltStack的工作原理
- SaltStack客戶端(Minion)在啓動時,會自動生成一套密鑰,包含私鑰和公鑰,之後將公鑰發送給服務器,服務器端驗證並且接受公鑰,以此來建立可靠且加密的通信連接。同時通過消息隊列zeroMQ在客戶端與服務器端之間建立消息發佈連接。
Minion:作爲SaltStack需要管理的客戶端安裝組件,會主動去連接Matser端,並且從Master端得到資源狀態信息,同步資源管理信息。
Master:作爲控制中心運行在主機服務器上,負責Salt命令運行和資源狀態的管理,Master上執行某條指令通過隊列下發到各個Minions去執行,並且返回結果。
ZeroMQ是一款開源的消息隊列軟件,用於在Minion端與Master端建立系統通信橋樑。
SaltStack的優缺點
- 優點
速度快,基於消息隊列+線程,跑完多臺設備,都是毫秒級別的,非常靈活,源碼是python,方便理解和自定義模塊命令簡單,功能強大
- 缺點
部署minion端不方便
二.SaltStack的功能與運行方式
SaltStack的四大功能
- 遠程執行
- 配置管理/狀態管理
- 雲管理(cloud)
- 事件驅動
SaltStack可以通過遠程執行實現批量管理,並且通過描述狀態來達到實現某些功能的目的。
SaltStack的四大運行方式
- local本地運行
- Master/Minion傳統方式
- Syndic分佈式
- Salt ssh
三.SaltStack的組件介紹
- Salt Matser:中心管理系統。此係統用於將命令和配置發送到在受管系統上運行的Salt minion。
- Salt Minons:被管理的系統。該系統運行的Salt minion,它從salt master接受命令和配置
- Execution modules:從命令行鍼對一個或者多個受管系統執行臨時命令。對以下管理場景有幫助:
1.實時監控、狀態和盤點
2.一次性命令和腳本
3.部署關鍵更新
- Formulas(States):一種系統配置的聲明性或命令行表示
state是saltstack的最核心的功能,通過預先指定好的sls對被控主機進行管理(包括:包、網絡配置、系統服務、系統用戶等)
- Grains:系統變量。Grains是有關底層受管系統的靜態信息,包括操作系統,內存和許多其他系統屬性。我們還可以爲任何系統自定義grains。
grains是在minion(客戶端)啓動時收集到的一些信息,比如操作系統類型、網卡ip等靜態信息。
grains的信息並不是動態的,並且不會時時變更,
- Pillar:用戶定義的變量。這些安全變量被定義並且存儲在Salt Master中,然後使用目標“分配”給一個或者多個minions。Pillar數據存儲如端口,文件路徑、配置參數和密碼之類的值。爲動態數據。
- Top File:將formulas和pillar數據與Salt minions匹配
- Runners:在Salt master上執行的模塊,用於執行支持任務。Salt runners報告作業狀態、連接狀態、從外部API讀取數據,查詢連接的Salt minions等。例如,Orchestrate運行器協調跨多個系統的配置部署
- Returners:將salt minions返回的數據發送到另外一個系統,例如數據庫。Salt Returners可以在salt minion或Salt master上運行。
- Readctor:在SaltStack環境中發生特定事件時觸發相應的響應。
- Salt SSH:在沒有Salt minion的系統上通過SSH運行Salt命令。