作為安裝後程序的一部分,需要安裝、設定和升級主節點外掛程式。透過主節點外掛程式,Salt 主節點能夠與 Automation Config 進行通訊。主節點外掛程式包括各種設定,您可以調整這些設定以改進效能,這對於大型環境或忙碌環境特別有用。

通常,會在環境中與 Automation Config 進行通訊的每個 Salt 主節點上安裝主節點外掛程式。例如,如果使用具有多個 Salt 主節點的組態 (有時稱為多主節點設定),則必須在每個 Salt 主節點上安裝主節點外掛程式。

開始之前

安裝並設定主節點外掛程式是一系列步驟中的一個安裝後步驟,這些步驟應按特定順序執行。首先,完成其中一個安裝案例,然後閱讀〈安裝授權金鑰〉安裝後頁面。

必須使用以下命令在 Salt 主節點上安裝 PyJWT 程式庫:
pip3 install pyjwt==2.3.0

何時需要安裝主節點外掛程式?

Automation Config 全新安裝完成後,需要在所有 Salt 主節點上安裝主節點外掛程式。在不需要與 Automation Config 進行通訊的 Salt 主節點上,主節點外掛程式不是必要的。

如果使用在節點少於 1000 個的情況下安裝 SaltStack Config 安裝案例,則無需在已安裝 Automation Config 及其相關架構的節點上安裝主節點外掛程式。安裝程式會自動在 Salt 主節點上安裝主節點外掛程式。但是,僅在執行此安裝程式的 Salt 主節點上安裝主節點外掛程式。如果您有多個主節點,則仍需要在其他主節點上安裝主節點外掛程式。

如果您要手動安裝 Automation Config (不建議),應在安裝主節點外掛程式前完成以下步驟:

  • 安裝和設定 PostgreSQL 資料庫
  • 安裝和設定 Redis 資料庫
  • 啟用 SSL (可選)
重要: 對於任何版本,都建議透過產生預設組態檔並套用現有組態中要保留的任何設定來更新主節點外掛程式組態。例如:
# sseapi-config --default >/tmp/raas.conf 
# cd /etc/salt/master.d 
# vim -d raas.conf /tmp/raas.conf 
...

如果已使用 onedir 安裝 Salt,則此可執行檔的路徑為 /opt/saltstack/salt/extras-3.10/bin/sseapi-config

使用主節點外掛程式工作區安裝主節點外掛程式

備註: Automation Config 版本 8.11.2 或更新版本支援此功能。
備註: Salt 主節點必須以 root 使用者身分執行。

可以從 Automation Config 使用者介面,導航至管理 > 主節點外掛程式,下載並安裝最新的主節點外掛程式版本。從「主節點外掛程式」索引標籤,可以下載外掛程式或下載用戶端。

下載主節點外掛程式後,必須設定主節點外掛程式

使用 CLI 安裝主節點外掛程式

在 Salt 主節點上安裝主節點外掛程式:

從 8.13.0 版本開始,主節點外掛程式包括一個 tgtmatch 引擎,該引擎現在可將目標群組比對從 RaaS 伺服器卸載至 Salt 主節點。建議啟用並設定 tgtmatch 引擎,以使目標群組比對回應速度更快,尤其是在具有以下條件的環境中:

  • 大量目標群組 (100 個或更多)
  • 大量部屬節點 (3000 個或更多)
  • 頻繁變更部屬節點 Grain (每日或更頻繁)
  • 頻繁建立和刪除部屬節點 (每日或更頻繁)
若要設定 RaaS 以期望 Salt 主節點提供目標比對資料,請確保 RaaS 組態檔 (/etc/raas/raas) 中存在以下設定:
target_groups_from_master_only: true
  1. 登入 Salt 主節點。
  2. 如有必要,請從 Customer Connect 下載主節點外掛程式 wheel。

    主節點外掛程式包含在自動安裝程式 .tar.gz 檔案中。下載並擷取 .tar.gz 檔案後,可以在 sse-installer/salt/sse/eapi_plugin/files 目錄中找到主節點外掛程式。

  3. 手動解除安裝並重新安裝更新的 Python wheel 以升級主節點外掛程式。使用以下範例命令,取代 wheel 檔案的確切名稱:
    備註: 必須解除安裝現有外掛程式,以防止 sseapi-config 的多個執行個體。
    pip3 uninstall SSEAPE-8.12.1.3-py3-none-any.whl
    mv /etc/salt/master.d/raas.conf /tmp
    salt-call pip.install SSEAPE-8.12.1.3-py3-none-any.whl
    cp /tmp/raas.conf /etc/salt/master.d/raas.conf
    systemctl restart salt-master

設定主節點外掛程式

在安裝主節點外掛程式後設定 Salt 主節點:

  1. 登入 Salt 主節點並確認 /etc/salt/master.d 目錄是否存在,或建立該目錄。
  2. 產生主節點組態設定。
    注意: 如果您要在升級安裝時保留設定,請備份現有主節點外掛程式組態檔後再執行此步驟。然後,將現有組態中的相關設定複製到新產生的檔案。
    sudo sseapi-config --all > /etc/salt/master.d/raas.conf
    重要: 如果已使用 onedir 安裝 Salt,則此可執行檔的路徑為 /opt/saltstack/salt/extras-3.10/bin/sseapi-config
  3. 編輯產生的 raas.conf 檔案,並按以下方式更新值:
    說明

    sseapi_ssl_validate_cert

    驗證 API (RaaS) 使用的憑證。預設值為 True

    如果使用的是自己的 CA 核發憑證,請將此值設定為 True,然後設定 sseapi_ssl_casseapi_ssl_certsseapi_ssl_cert: 設定。

    否則,請將此值設定為 False,從而不驗證憑證。

    sseapi_ssl_validate_cert:False

    sseapi_server

    RaaS 節點的 HTTP IP 位址,例如 http://example.comhttps://example.com (如果 SSL 已啟用)。

    sseapi_command_age_limit

    設定略過可能失效的舊工作之前的存留期 (以秒為單位)。例如,若要略過超過一天的工作,請設定為:

    sseapi_command_age_limit:86400

    略過的工作繼續存在於資料庫中,並且在 Automation Config 使用者介面中顯示 Completed 狀態。

    某些環境可能需要 Salt 主節點長時間處於離線狀態,並且需要 Salt 主節點在重新上線後執行已排入佇列的任何工作。如果您的環境適用此情況,請將存留期限制設定為 0

    sseapi_windows_minion_deploy_delay 設定延遲以允許所有必要的 Windows 服務變為作用中狀態。預設值為 180 秒。
    sseapi_linux_minion_deploy_delay 設定延遲以允許所有必要的 Linux 服務變為作用中狀態。預設值為 90 秒。
    sseapi_local_cache
         load: 3600
         tgt: 86400
         pillar: 3600
         exprmatch: 86400
         tgtmatch: 86400

    設定某些資料在每個 Salt 主節點上本機快取的時間長度。值以秒為單位。範例值是建議值。

    • load- salt save_load() 裝載

    • tgt- SSE 目標群組

    • pillar - SSE pillar 資料 (已加密)

    • exprmatch- SSE 目標運算式比對資料

    • tgtmatch- SSE 目標群組比對資料

  4. 可選:僅手動安裝需要執行此步驟。若要確認在連線主節點外掛程式前可以連線至 SSL,請編輯產生的 raas.conf 檔案以更新下列值。如果不更新這些值,主節點外掛程式會使用預設產生的憑證。
    說明
    sseapi_ssl_ca CA 檔案的路徑。
    sseapi_ssl_cert 憑證的路徑。預設值為 /etc/pki/raas/certs/localhost.crt
    sseapi_ssl_key 憑證私密金鑰的路徑。預設值為 /etc/pki/raas/certs/localhost.key
    id 透過在開頭處新增 #,註解此行標記。這不是必要的。
  5. 可選:更新與效能相關的設定。對於大型或忙碌的環境,可以透過調整以下設定來提升 Salt 主節點與 Automation Config 之間的通訊效能。
    • 設定主節點外掛程式引擎:

      主節點外掛程式 eventqueuerpcqueue 引擎會將與 Automation Config 的某些通訊從效能關鍵型代碼路徑卸載至專用程序。當引擎正在等待與 Automation Config 通訊時,會將裝載儲存在 Salt 主節點的本機檔案系統中,以便資料能夠在 Salt 主節點重新啟動過程中保持不變。tgtmatch 引擎會將部屬節點目標群組比對的計算從 RaaS 伺服器移至 Salt 主節點。

      若要啟用引擎,請確保 Salt 主節點外掛程式組態檔 (raas.conf) 中存在下列設定:

      engines: 
           - sseapi: {} 
           - eventqueue: {} 
           - rpcqueue: {} 
           - jobcompletion: {} 
           - keyauth: {} 
           - tgtmatch: {}

      若要設定 eventqueue 引擎,請確認存在以下設定:

      sseapi_event_queue: 
        name: sseapi-events 
        strategy: always 
        push_interval: 5 
        batch_limit: 2000 
        age_limit: 86400 
        size_limit: 35000000 
        vacuum_interval: 86400 
        vacuum_limit: 350000 

      可以根據佇列參數的共同運作方式來調整這些參數。例如,假設 Salt 事件匯流排上每秒平均有 400 個事件,上述設定允許在最早事件因大小或存留期限制而遭到捨棄之前,在 Salt 主節點上收集大約 24 小時的已排入佇列的事件流量。

      若要設定 rpcqueue 引擎,請驗證 raas.conf 中的以下設定:

      sseapi_rpc_queue: 
        name: sseapi-rpc 
        strategy: always 
        push_interval: 5 
        batch_limit: 500 
        age_limit: 3600 
        size_limit: 360000 
        vacuum_interval: 86400 
        vacuum_limit: 100000 
      若要設定 tgtmatch 引擎,請確保主節點外掛程式組態檔 (/etc/salt/master.d/raas.conf) 中存在以下設定:
      engines: 
          - sseapi: {} 
          - eventqueue: {} 
          - rpcqueue: {} 
          - jobcompletion: {} 
          - keyauth: {} 
          - tgtmatch: {} 
      
      sseapi_local_cache:     
          load: 3600 
          tgt: 86400 
          pillar: 3600 
          exprmatch: 86400 
          tgtmatch: 86400 
      
      sseapi_tgt_match: 
          poll_interval: 60     
          workers: 0 
          nice: 19
      備註: 若要在 Salt 主節點上利用目標比對,RaaS 組態中還必須存在以下組態設定: target_groups_from_master_only: true
    • 限制部屬節點粒紋裝載大小:
      sseapi_max_minion_grains_payload: 2000
    • 啟用略過早於定義時間 (以秒為單位) 的工作。例如,使用 86400 會設定為略過一天前的工作。如果設定為 0,將停用此功能:
      sseapi_command_age_limit:0
      備註:

      在系統升級期間,啟用此設定有助於防止儲存在資料庫中的舊命令意外執行。

    Salt 中的事件佇列以及 Salt 主節點外掛程式中的佇列引擎、Salt 主節點目標比對、Grain 裝載大小限制和命令存留期限制共同增加了輸送量,並減少了在對效能最敏感的代碼路徑中 Salt 主節點與 Automation Config 之間的通訊延遲。

  6. 重新啟動主節點服務。
    sudo systemctl restart salt-master
  7. 可選:您可能想要執行測試工作,以確保主節點外掛程式現已啟用主節點與 RaaS 節點之間的通訊。
    salt -v '*' test.ping

即使未顯示任何活動,例如未連線部屬節點,也可能表示組態正確無誤。

組態設定參考

組態檔中的這些設定可讓每個 Salt 主節點連線至 API (RaaS)。您可以在 /etc/salt/master.d/raas.conf 組態檔中找到這些設定。

重要:

raas.conf 檔案中的 Salt 主節點設定優先於 /etc/salt/master 中的現有設定。如果已自訂 /etc/salt/master 中的 fileserver_backendext_pillar 設定,則需要手動合併這些設定,以便這些設定僅顯示在一個檔案中。可以選擇性地對後端進行重新排序,以變更優先順序。

下表說明了一般組態設定:

選項 說明
id Salt 主節點識別碼,如果未設定,則自動產生
sseapi_server SSEAPI 伺服器的 URL,例如 https://sse.example.com:443
engines 要啟用的 Salt 引擎,建議使用 sseapieventqueuerpcqueuejobcompletionkeyauth
master_job_cache 使用 sseapi,以使用 Automation Config 主節點工作快取
event_return Salt 事件傳回程式,建議使用 sseapi,以使用 Automation Config 事件傳回程式
ext_pillar 外部 pillar 來源,建議使用 sseapi
fileserver_backend 檔案伺服器後端,建議使用 sseapiroots
sseapi_update_interval 從檔案伺服器更新的頻率 (以秒為單位,預設為 60)
sseapi_poll_interval 輪詢 Automation Config 以取得新資料的頻率 (以秒為單位,預設為 30)
sseapi_jce_poll_interval 增加了 jobcompletion 引擎中反覆運算之間的延遲,因此,每個 Salt 主節點每天最多傳送 5760 個 find_job 命令 (以秒為單位,預設為 15)
sseapi_timeout API (RaaS) 呼叫逾時 (以秒為單位,預設為 200)
sseapi_pubkey_path 用於向 Automation Config 驗證 Salt 主節點的公開金鑰檔案的路徑
sseapi_key_rotation Salt 主節點 Automation Config 驗證金鑰輪替間隔 (以秒為單位,預設為 86400)
sseapi_cache_pillar 是否在 Automation Config 內快取 pillar 資料 (True 或 False,預設為 False)
sseapi_cluster_id (可選) Salt 主節點叢集名稱,用於在 Automation Config 中將 Salt 主節點分組到叢集
sseapi_failover_master 此 Salt 主節點是否為容錯移轉 Salt 主節點 (True 或 False,預設為 False)
sseapi_command_age_limit 是否略過早於定義時間的 API (RaaS) 命令 (以秒為單位,0 表示停用,預設為 0)

下表說明了 SSL 設定:

選項 說明
sseapi_ssl_key 憑證私密金鑰的路徑
sseapi_ssl_cert 憑證的路徑
sseapi_ssl_validate_cert 是否驗證 Automation Config SSL 憑證 (True 或 False,預設為 True)

下表說明了顯示在 sseapi_event_queue 標題下的事件佇列引擎設定:

選項 說明
name 事件佇列名稱 (預設為 sseapi-events,無需變更此項)
strategy 將事件排入佇列的時間 (alwayson_failurenever,預設為 never)
push_interval 將事件推送至 Automation Config 的頻率 (以秒為單位,預設為 5)
batch_limit 每個間隔推送至 Automation Config 的事件數目上限 (預設為 2000)
age_limit 已排入佇列的事件存留期上限;捨棄最早的事件 (以秒為單位,預設為 86400)
size_limit 佇列大小上限;捨棄最早的事件 (事件數,預設為 35000000)
vacuum_interval 對佇列資料庫執行 vacuum 操作的頻率 (以秒為單位,預設為 86400)
vacuum_limit 對佇列資料庫執行 vacuum 操作時的佇列大小上限 (事件數,預設為 350000)

下表說明了顯示在 sseapi_rpc_queue 標題下 RPC 佇列引擎設定:

選項 說明
name 事件佇列名稱 (預設為 sseapi-rpc,無需變更此項)
strategy 將事件排入佇列的時間 (alwayson_failurenever,預設為 never)
push_interval 將呼叫傳送至 Automation Config 的頻率 (以秒為單位,預設為 5)
batch_limit 每個間隔推送至 Automation Config 的呼叫數目上限 (預設為 500)
age_limit 已排入佇列的呼叫存留期上限;捨棄最早的項目 (以秒為單位,預設為 3600)
size_limit 佇列大小上限;捨棄最早的項目 (事件數,預設為 360000)
vacuum_interval 對佇列資料庫執行 vacuum 操作的頻率 (以秒為單位,預設為 86400)
vacuum_limit 對佇列資料庫執行 vacuum 操作時的佇列大小上限 (項目數,預設為 100000)
下表說明了顯示在 sseapi_tgt_match 標題下的目標比對引擎設定:
選項 說明
poll_interval 引擎從 RaaS 要求更新目標群組資訊的頻率 (以秒為單位) (預設為 60)
workers 應建立多少工作程式以執行目標群組比對計算。預設值 (0) 會為每個 CPU 核心建立一個程式,上限為 8。
nice 目標群體匹配工人的優先順序。預設值 (19) 為 Worker 提供最低排程優先順序,以防止干擾 Salt 主節點上執行的其他程式。

下表說明了路徑設定。產生初始組態後,請謹慎變更這些設定。模組將透過安裝程序複製到這些目錄中。但是,新增額外路徑不會造成不利影響。

選項 說明
beacons_dirs 指標外部模組路徑
engines_dirs 引擎外部模組路徑
fileserver_dirs 檔案伺服器外部模組路徑
pillar_dirs pillar 外部模組路徑
returner_dirs 傳回程式外部模組路徑
roster_dirs 名冊外部模組路徑
runner_dirs 執行器外部模組路徑
module_dirs Salt 外部模組路徑
proxy_dirs Proxy 外部模組路徑
metaproxy_dirs 中繼 Proxy 外部模組路徑
states_dirs 狀態外部模組路徑

後續步驟

安裝並設定主節點外掛程式後,必須完成其他安裝後步驟。下一步是設定 RaaS 節點。若要繼續執行安裝後程序,請參閱檢查 RaaS 組態檔