自動化運維工具-----SaltStack入門介紹

一.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命令。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章