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、lftpcurl。如果它正常工作,您將看到如下所示的響應。

它將產生以下輸出-

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
廣告

© . All rights reserved.