- 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 中最重要的概念之一。它用於建立可重用的配置模板,稱為狀態。狀態描述了將系統元件或應用程式置於已知配置所需的一切。
Salt 狀態
Salt 狀態是系統特定部分的可重用配置。狀態使用簡單的 YAML 更易於理解和描述。
建立 Salt 狀態
Salt 狀態易於建立。在本節中,讓我們建立一個簡單的狀態。移動到目錄“salt-vagrant-demo/saltstack/salt/”並建立一個名為samples.sls的檔案,並在其中新增以下內容。
samples.sls
install_network_packages:
pkg.installed:
- pkgs:
- rsync
- lftp
- curl
現在,儲存檔案並在 Salt master 上執行以下命令。
root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples
在這裡,我們透過使用 Salt 狀態在 Salt minion minion1 中安裝了rsync、lftp和curl。如果它正常工作,您將看到如下所示的響應。
它將產生以下輸出-
minion1: ---------- ID: install_network_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 08:08:48.612336 Duration: 545.385 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 545.385 ms
應用 Salt 狀態
現在我們已經使用“.sls”檔案建立了一個狀態,並透過專門呼叫它來應用它。Salt 有一個名為top.sls檔案的預設狀態檔案。頂部檔案用於將多個狀態檔案應用於 Salt minion。頂部檔案描述了應該在哪裡應用狀態。好吧,狀態和頂部檔案共同建立了 SaltStack 配置管理能力的核心。
現在讓我們在目錄saltstack/salt中建立一個簡單的 top.sls 檔案,並新增以下內容。
top.sls
base:
'*':
- common
'minion1':
- samples
這裡,狀態通常應用於所有系統狀態,samples應用於minion1。
接下來,執行 Salt master 並應用如下所示的狀態。
root@saltmaster:/home/vagrant# salt '*' state.apply
它將產生以下輸出-
minion1: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:33:35.642355 Duration: 588.21 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 588.210 ms minion2: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:33:35.890331 Duration: 602.79 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 602.790 ms
應用批處理大小
如果您有大量連線的 minion,則可以限制一次更新多少個系統。它是透過使用–batch-size選項執行的,該選項定義如下。
root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply
它將產生以下輸出-
Executing run on ['minion2', 'minion1'] jid: 20170314094638482664 minion1: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:46:41.228519 Duration: 582.24 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 582.240 ms retcode: 0 jid: 20170314094638482664 minion2: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:46:41.153609 Duration: 605.235 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 605.235 ms retcode: 0
Salt 狀態函式
Salt 狀態函式用於在遠端系統上安裝和配置應用程式。讓我們使用 Salt 狀態函式安裝“Vim”軟體包。
建立和應用狀態函式
在目錄“salt-vagrant-demo/saltstack/salt/sample.sls”下建立一個名為“sample.sls”的檔案,並新增以下內容-
sample.sls
install vim:
pkg.installed:
- name: vim
一旦 Vagrant 環境啟動,執行 Salt master 並透過執行以下命令應用 sample.sls。
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample
它將產生以下輸出-
minion2: ---------- ID: install vim Function: pkg.installed Name: vim Result: True Comment: Package vim is installed Started: 15:07:45.752764 Duration: 553.506 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 553.506 ms
現在,我們添加了一個軟體包“Vim”。現在讓我們使用 Salt 測試方法測試該軟體包。
Salt 狀態測試
測試執行需要透過向狀態新增“test = True”選項來強制執行。返回資訊將以黃色顯示將應用的狀態,結果報告為“None”。
以下命令用於測試狀態-
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True
它將產生以下輸出-
minion2: ---------- ID: install vim Function: pkg.installed Name: vim Result: True Comment: Package vim is already installed Started: 15:07:45.752764 Duration: 553.506 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 553.506 ms
SaltStack ─ Pillar 元件
Pillar 是使 Salt 狀態可重用的重要元件。它用於為使用目標分配的 minion 定義安全資料。Salt pillar 資料儲存諸如埠、檔案路徑、配置引數和密碼等值。
Pillar 配置檔案
master 配置檔案中pillar_roots的配置如下所示-
pillar_roots:
base:
- /srv/pillar
這裡,檔案位於“/srv/pillar”目錄中。
考慮一下位於 /srv/pillar/top.sls 中的頂部檔案,它具有以下結構-
base:
'*':
- default
現在,移動到位於 /srv/pillar/default.sls 中的 default.sls 檔案,並新增以下程式碼。
# Default pillar values apache git
儲存檔案後,重新整理 pillar 以更新所有更改。
重新整理 Pillar
您可以使用以下命令重新整理 pillar。
root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar
以上命令用於重新整理所有 minion 上的 Salt pillar 資料。
列出 Pillar 資料
要列出 pillar 資料,您可以使用以下命令。
root@saltmaster:/home/vagrant# salt '*' pillar.ls
它將產生以下輸出-
minion2: - apache - git minion1: - apache - git
Pillar 專案
設定 pillar 後,可以透過 pillar 模組在 minion 上檢視資料。可以透過函式pillar.items訪問它,該函式定義如下。
root@saltmaster:/home/vagrant# salt '*' pillar.items
它將產生以下輸出-
minion2:
----------
apache:
httpd
git:
git
minion1:
----------
apache:
httpd
git:
git
SaltStack – Include 元件
‘Include’元件用於在多個位置定義相同的配置任務。它易於執行。在狀態檔案的頂部,使用以下格式新增 include-
include: - state file 1 - state file 2
這裡,狀態檔案 1和狀態檔案 2是要包含的 SLS 檔案的名稱。無需包含.sls副檔名。包含的 Salt 狀態將插入當前檔案的頂部。
子目錄中的狀態檔案
您可以使用點(.)包含子目錄狀態檔案。它充當目錄分隔符。
include: - dir.sls1
Grains 介面
Grains 是用於獲取有關底層系統資訊的介面。為作業系統、域名、IP 地址、核心、作業系統型別、記憶體和許多其他系統屬性收集 Grains。
Grains 定位
在定位 minion 時可以使用 Grain 資料,這在以下程式碼塊中定義。
root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping
它將產生以下輸出-
minion1: True minion2: True
列出 Grains
可以使用‘grains.ls’模組列出 Grains,該模組定義如下。
root@saltmaster:/home/vagrant# salt '*' grains.ls
列出專案
與 Pillar 一樣,也可以使用'grains.items'列出 Grains 資料。
root@saltmaster:/home/vagrant# salt '*' grains.items