
- SaltStack 教程
- SaltStack - 首頁
- SaltStack - 概述
- SaltStack - 架構
- SaltStack - 競爭對手
- SaltStack - 安裝
- 建立簡單的環境
- SaltStack - 訪問控制系統
- SaltStack - 作業管理
- SaltStack - Salt 檔案伺服器
- SaltStack - Git 作為檔案伺服器
- 使用 MinionFS 作為檔案伺服器
- SaltStack - 使用 Cron 與 Salt
- SaltStack - 遠端執行
- 配置管理
- SaltStack - 日誌記錄
- SaltStack - 透過 SSH 使用 Salt
- Salt 用於雲基礎設施
- SaltStack - Salt 代理 Minion
- SaltStack - 事件系統
- SaltStack - 編排
- SaltStack - Salt 包管理器
- SaltStack - Python API
- SaltStack - 工作示例
- SaltStack 有用資源
- SaltStack - 快速指南
- SaltStack - 有用資源
- SaltStack - 討論
SaltStack - 概述
在本章中,我們將學習 SaltStack 的基礎知識。SaltStack 的遠端執行功能允許管理員使用靈活的目標系統在各種機器上並行執行命令。Salt 配置管理建立了主從模型,可以快速、非常容易、靈活且安全地使基礎設施元件符合給定策略。
什麼是 SaltStack?
Salt 是一個非常強大的自動化框架。Salt 架構基於遠端執行命令的想法。所有網路都圍繞遠端執行的某個方面設計。這可能很簡單,例如要求**遠端 Web 伺服器**顯示靜態 Web 頁面,也可能很複雜,例如使用 shell 會話與遠端伺服器互動式地發出命令。Salt 是更復雜型別的遠端執行示例之一。
Salt 旨在允許使用者直接顯式地定位並向多臺機器發出命令。Salt 基於主控器的概念,主控器控制一個或多個**Minion**。命令通常從主控器發出到目標 Minion 組,然後 Minion 執行命令中指定的任務,然後將結果資料返回給主控器。主控器和 Minion 之間的通訊透過**ZeroMQ 訊息匯流排**進行。
SaltStack 模組與支援的 Minion 作業系統通訊。**Salt 主控器**預設在 Linux 上執行,但任何作業系統都可以作為 Minion,目前 Windows、VMware vSphere 和 BSD Unix 變體都得到很好的支援。Salt 主控器和 Minion 使用金鑰進行通訊。當 Minion 首次連線到主控器時,它會自動將金鑰儲存在主控器上。SaltStack 還提供**Salt SSH**,它提供“無代理”系統管理。
SaltStack 的需求
SaltStack 構建於速度和規模之上。這就是為什麼 LinkedIn、WikiMedia 和 Google 使用它來管理擁有數萬臺伺服器的大型基礎設施的原因。
假設您有多臺伺服器,並且希望對這些伺服器執行操作。您需要登入到每個伺服器,並逐個在每個伺服器上執行這些操作,然後您可能希望執行復雜的操作,例如安裝軟體,然後根據某些特定條件配置該軟體。
假設您有十臺甚至 100 臺伺服器。想象一下,一次登入到每臺伺服器,在這些 100 臺機器上發出相同的命令,然後編輯所有 100 臺機器上的配置檔案,這將成為一項非常繁瑣的任務。為了克服這些問題,您希望透過鍵入單個命令即可立即更新所有伺服器。SaltStack 為所有此類問題提供了完美的解決方案。
SaltStack 的特性
SaltStack 是一種開源配置管理軟體和遠端執行引擎。Salt 是一個命令列工具。雖然是用 Python 編寫的,但 SaltStack 配置管理與語言無關且簡單。Salt 平臺使用推送模型透過 SSH 協議執行命令。預設配置系統是**YAML** 和**Jinja 模板**。Salt 主要與**Puppet**、**Chef** 和**Ansible** 競爭。
與其他競爭工具相比,Salt 提供了許多功能。下面列出了一些重要的功能。
**容錯性** - Salt Minion 可以透過將主控器配置引數配置為所有可用主控器的 YAML 列表,一次連線到多個主控器。任何主控器都可以將命令傳送到 Salt 基礎設施。
**靈活** - Salt 的整個管理方法非常靈活。它可以實現為遵循最流行的系統管理模型,例如代理和伺服器、僅代理、僅伺服器或所有上述模型在同一環境中。
**可擴充套件的配置管理** - SaltStack 旨在處理每個主控器一萬個 Minion。
**並行執行模型** - Salt 可以使命令能夠以並行方式執行遠端系統。
**Python API** - Salt 提供了一個簡單的程式設計介面,並且設計為模組化且易於擴充套件,以便輕鬆地將其塑造成各種應用程式。
**易於設定** - Salt 易於設定,並提供了一個單一的遠端執行架構,可以管理任意數量伺服器的不同需求。
**與語言無關** - Salt 狀態配置檔案、模板引擎或檔案型別支援任何型別的語言。
SaltStack 的優勢
Salt 作為一個簡單且功能豐富的系統,提供了許多優勢,可以總結如下 -
**健壯** - Salt 是一個功能強大且健壯的配置管理框架,適用於數萬個系統。
**身份驗證** - Salt 管理簡單的 SSH 金鑰對進行身份驗證。
**安全** - Salt 使用加密協議管理安全資料。
**快速** - Salt 非常快速,輕量級通訊匯流排為遠端執行引擎提供基礎。
**虛擬機器自動化** - Salt Virt 雲控制器功能用於自動化。
**基礎設施作為資料,而不是程式碼** - Salt 提供了一個簡單的部署、模型驅動的配置管理和命令執行框架。
ZeroMQ 簡介
**Salt** 基於**ZeroMQ** 庫,它是一個可嵌入的網路庫。它輕量級且快速的訊息庫。基本實現是用**C/C++**,並且提供了包括**Java** 和**.Net** 在內的多種語言的原生實現。
ZeroMQ 是一個無代理的對等訊息處理。ZeroMQ 允許您輕鬆設計複雜的通訊系統。
ZeroMQ 帶有以下五種基本模式 -
**同步請求/響應** - 用於傳送請求並接收對每個傳送請求的後續回覆。
**非同步請求/響應** - 請求者透過傳送請求訊息啟動對話並等待響應訊息。提供者等待傳入的請求訊息並回復響應訊息。
**釋出/訂閱** - 用於將資料從單個程序(例如釋出者)分發到多個接收者(例如訂閱者)。
**推送/拉取** - 用於將資料分發到連線的節點。
**獨佔對** - 用於將兩個對等節點連線在一起,形成一個對。
ZeroMQ 是一種高度靈活的網路工具,用於在叢集、雲和其他多系統環境之間交換訊息。ZeroMQ 是 SaltStack 中提供的**預設傳輸庫**。