Highstate 工作區可用來管理和監控系統的組態。您可以查看整個基礎結構中 highstate 執行的歷史視圖,以取得與所有部屬節點之間組態偏差相關的見解和趨勢。

身為系統管理員,您已瞭解保持系統組態符合標準、識別任何發生故障或變更的系統,並盡快使這些系統恢復合規性的重要性。Highstate 工作區提供了系統組態的重要見解,並包含可協助您管理組態偏差的工具。

什麼是 highstate?

可以使用 Automation Config 狀態管理系統建立狀態檔案,然後將其同時套用至許多部屬節點,而不必逐個手動設定每個部屬節點和應用程式。這些狀態檔案可以包含一組指示,告知 Automation Config 在部屬節點上執行哪些作業以及採用何種順序執行。此外,狀態管理系統還確保盡可能高效地正確設定每個部屬節點。

但是,如果您有數百個狀態檔案和數千個部屬節點,則執行每個狀態檔案需要一些時間。將狀態檔案套用至部屬節點的更快速、更直觀的方式是執行 highstate。執行 highstate 時,會呼叫 state.highstate 函數。此 state.highstate 函數會套用在 Salt 主節點上建立的 top.sls 檔案中所述的所有 Salt 狀態。

在下列情況下,執行 highstate 可能非常有用:
  • 您是第一次設定基礎結構,並且需要標準化整個環境的組態。
  • 您的關鍵系統必須保持合規性。Automation Config 中的排程工作區可用來排程每週執行一次的 highstate 工作,以確保您的機器設定正確。

top.sls 檔案會將 Salt 狀態對應到一組目標,並包含 Salt 環境、目標準則以及要執行的狀態檔案。部屬節點會下載 top.sls 檔案,並嘗試比對其中的運算式。如果部屬節點與運算式相符,則會執行指定的狀態檔案。例如,您可以組織整理 top.sls 檔案,以將特定的狀態檔案套用至所有部屬節點,某些狀態檔案套用至 CentOS 部屬節點,其他狀態檔案則套用至識別碼包含字串 web 的部屬節點。

base: 
  '*':
    - vim
    - scripts
  'os:CentOS': 
    - match: grain 
    - centos-config 
  '*web*':
    - apache
    - django

執行 highstate 時,如果組態發生偏差,Automation Config 會將部屬節點和應用程式恢復到其符合標準的組態狀態。如果組態必須變更,Automation Config 會將這些變更快速部署到受影響的部屬節點。然後,您可以使用 Highstate 工作區查看上次 highstate 執行期間所做的變更。工作區中的圖表和報告也可協助您將整個基礎結構中的變更視覺化。

請考慮在開發環境或預備環境中測試您的變更。如果狀態成功,您可以將其套用到生產環境。

您也可以在試執行模式下執行 highstate。如果在試執行模式下執行 highstate,Automation Config 會產生工作傳回,顯示如果套用狀態,會對各個部屬節點進行哪些變更。若要進一步瞭解試執行模式,請參閱〈如何建立工作〉

重要:

首次執行 highstate 之前,您必須在 Salt 主節點上建立和設定 top.sls 檔案。如需有關 Salt 狀態和 top.sls 檔案的詳細資訊,請參閱 Salt 使用者指南中的〈組織狀態〉

執行 highstate

設定 top.sls 檔案後,您可以執行第一個 highstate。

執行 highstate:

  1. 按一下 Highstate 工作區中的狀態索引標籤。
  2. 按一下執行 Highstate
  3. 在對話方塊中,選取要執行 highstate 的目標。
  4. 按一下執行 Highstate

完成 highstate 執行後,您可以在多個層級檢視第一次 highstate 執行的結果:

  • 全域層級:查看整個環境的 highstate 傳回資料
  • 目標層級:依目標群組查看 highstate 傳回資料
  • 部屬節點層級:依部屬節點查看 highstate 傳回資料

全域層級

您可以從狀態索引標籤和部屬節點索引標籤查看整個環境的 highstate 合規性。此全域層級可協助您評估自最近 highstate 執行以來系統組態的整體狀態。

最近執行 highstate 後,SaltStack Config 使用者介面中的 Highstate 工作區

在所有層級中,會從每個部屬節點提取最新的 highstate 資料,無論這些資料來自最近的 highstate 執行還是來自多次 highstate 執行。可以使用狀態索引標籤中的限制依據下拉式功能表來確保 Highstate 工作區僅顯示最新資料。

全域層級包括所有狀態的下列資訊:

術語 說明
狀態 狀態的識別碼宣告,例如 common-centos-packages
SLS 檔案 包含狀態宣告的檔案,例如 centos-config.sls
部屬節點 執行狀態的部屬節點數目。
錯誤 指出狀態執行是否失敗。出現失敗狀態的原因有多種。例如:
  • 由於檔案系統權限,所需檔案不存在或無法存取。
  • 網路資源或服務無法使用。
  • 存在套件相依性衝突,因此無法套用狀態。

註解資料行提供有關出現失敗狀態的原因的更多詳細資料。

成功 指出出現成功狀態的整體百分比。
已變更 指出針對每個狀態報告變更的部屬節點的整體百分比。
變更 指出最近的 highstate 執行是否導致變更。

註解資料行提供有關所做變更的更多詳細資料。

平均持續時間 狀態執行的平均持續時間 (以毫秒 (ms) 為單位)。
環境 包含狀態檔案的 Salt 環境,例如 basedev
JID state.highstate 執行的工作識別碼。

如果從狀態索引標籤按一下狀態 ,則可以檢視每個 Salt 部屬節點上最近的 highstate 執行。

針對 SaltStack Config 中預設 html 頁面狀態的所有先前 highstate 執行

針對每個狀態提供下列資訊:

術語 說明
部屬節點識別碼 執行狀態的部屬節點的識別碼。
狀態 指出狀態執行是成功還是失敗。
變更 指出最近的 highstate 執行是否導致變更。

註解資料行提供有關所做變更的更多詳細資料。

環境 包含狀態檔案的 Salt 環境,例如 basedev
叢集/主節點 與部屬節點相關聯的 Salt 主節點。
持續時間 狀態執行的持續時間 (以毫秒 (ms) 為單位)。
註解 提供有關狀態執行是成功還是失敗的進一步詳細資料的訊息。
JID state.highstate 執行的工作識別碼。

您也可以在全域層級執行臨機 highstate 工作:

  1. Automation Config 中,開啟 Highstate 工作區。
  2. 按一下執行 Highstate
  3. 在對話方塊中,選取要執行 highstate 的目標。
  4. 按一下執行 Highstate

您可以在 Highstate 工作區的活動索引標籤中監控工作進度。工作完成後,您可以在全域、目標或部屬節點層級檢視 highstate 執行的更新報告和詳細資料。

目標層級

若要在目標層級檢視 highstate 傳回資料,您可以開啟目標工作區。如果按一下目標,則可以查看目標群組中所有部屬節點的所有先前狀態執行。

針對 SaltStack Config 中 CentOS 目標群組的先前 highstate 執行

目標層級提供有關目標群組中每個部屬節點的下列資訊:

術語 說明
部屬節點識別碼 部屬節點的識別碼。
狀態執行 部屬節點的狀態執行次數。
錯誤 指出狀態執行是否失敗。出現失敗狀態的原因可能有多種。例如:
  • 由於檔案系統權限,所需檔案不存在或無法存取。
  • 網路資源或服務無法使用。
  • 存在套件相依性衝突,因此無法套用狀態。

註解資料行提供有關出現失敗狀態的原因的更多詳細資料。

成功 指出出現成功狀態的整體百分比。
已變更 指出導致變更的狀態的整體百分比。
變更 指出最近的 highstate 執行是否導致變更。

註解資料行提供有關所做變更的更多詳細資料。

持續時間 狀態執行的持續時間 (以毫秒 (ms) 為單位)。
環境 包含狀態檔案的 Salt 環境,例如 basedev
JID state.highstate 執行的工作識別碼。

在目標層級執行臨機 highstate 工作:

  1. Automation Config 中,開啟目標工作區。
  2. 選取要執行 highstate 的目標群組。
  3. 按一下 Highstate 索引標籤。
  4. 按一下執行 Highstate
  5. 在對話方塊中,確認要執行 highstate 的目標群組。
  6. 按一下執行 Highstate

部屬節點層級

若要在部屬節點層級檢視 highstate 傳回資料,您可以開啟 Highstate 工作區中的部屬節點索引標籤。

SaltStack Config 環境中所有部屬節點的 Highstate 傳回資料

部屬節點層級針對所有部屬節點提供下列資訊:

術語 說明
部屬節點識別碼 部屬節點的識別碼。
狀態執行 部屬節點的狀態執行次數。
錯誤 指出狀態執行是否失敗。出現失敗狀態的原因可能有多種:
  • 由於檔案系統權限,所需檔案不存在或無法存取。
  • 網路資源或服務無法使用。
  • 存在套件相依性衝突,因此無法套用狀態。

註解資料行提供有關出現失敗狀態的原因的更多詳細資料。

成功 指出出現成功狀態的整體百分比。
已變更 指出導致部屬節點出現變更的狀態的整體百分比。
變更 指出最近的 highstate 執行是否導致變更。

如果按一下部屬節點識別碼,則可以檢視部屬節點的所有先前狀態執行。

針對 Highstate 工作區中的一個 Salt 部屬節點的所有狀態執行

提供下列資訊:

術語 說明
成功 指出狀態執行是成功還是失敗。
變更 指出最近的 highstate 執行是否導致變更。
環境 包含狀態檔案的 Salt 環境,例如 basedev
SLS 檔案 包含狀態宣告的檔案,例如 centos-config.sls
狀態 狀態的識別碼宣告,例如 common-centos-packages
持續時間 狀態執行的持續時間 (以毫秒 (ms) 為單位)。
註解 提供有關狀態執行是成功還是失敗的進一步詳細資料的訊息。
JID state.highstate 執行的工作識別碼。

在部屬節點層級執行臨機 highstate 工作:

  1. Automation Config 中,開啟 Highstate 工作區。
  2. 選取一或多個要執行 highstate 的部屬節點。
  3. 按一下執行 Highstate
  4. 在對話方塊中,按一 下執行 Highstate

檢視 highstate 活動

Highstate 工作區中的活動索引標籤可用來監控 highstate 執行的狀態。透過活動索引標籤,能夠檢視多種類型的事件和活動,例如排定的工作或臨機工作。

Highstate 工作區中的互動式圖表,顯示過去 30 天內發生和未發生變更的部屬節點數目

活動索引標籤中的互動式圖表包含多個報告,可提供 Automation Config 環境中先前 highstate 執行的概觀。在每個報告中可以檢視從過去 24 小時到過去 30 天的結果。

報告 說明
部屬節點: 平均持續時間 顯示一段時間內所有部屬節點之間的狀態執行的平均持續時間。
部屬節點: 變更與無變更 顯示一段時間內報告變更的部屬節點數目與未報告變更的部屬節點數目。
部屬節點: 成功與失敗 顯示一段時間內報告成功狀態執行的部屬節點數目與報告失敗狀態執行的部屬節點數目。
狀態: 變更與無變更 顯示一段時間內導致變更的狀態數目與未導致變更的狀態數目。
狀態: 成功與失敗 顯示成功狀態數目與失敗狀態數目。

活動索引標籤包括三個區段,可依狀態對工作進行排序:

  • 已完成:用於監控已完成的 highstate 工作的狀態。
  • 進行中:用於監控目前正在執行的 highstate 工作的狀態。
  • 即將進行:用於監控即將執行的 highstate 工作的狀態。

活動索引標籤中的資料表顯示工作的狀態、來源、排程 (如果可用)、工作、目標群組及相關聯的工作識別碼 (JID) 的相關資訊。您可以視需要篩選資料行。