Highstate 工作区用于管理和监控系统的配置。您可以查看基础架构中 Highstate 运行的历史视图,以获取与所有工作节点之间的配置偏差相关的见解和趋势。

作为系统管理员,您了解保持系统配置合规、识别任何存在故障或更改的系统以及尽快使这些系统恢复合规的重要性。Highstate 工作区可让您深入了解系统的配置,它还包含可帮助您管理配置偏差的工具。

最近一次 highstate 运行后,SaltStack Config 用户界面中的 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 工作节点,并将其他状态文件应用于 ID 中包含字符串 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 工作区仅显示最新的数据。

全局级别包括所有状态的以下信息:

术语 描述
状态 状态的 ID 声明,例如 common-centos-packages
SLS 文件 包含状态声明的文件,例如 centos-config.sls
工作节点 运行状态的工作节点数。
错误 指示状态运行是否失败。状态失败有很多原因。例如:
  • 所需文件不存在或由于文件系统权限而无法访问。
  • 网络资源或服务不可用。
  • 存在软件包依赖关系冲突,因此无法应用状态。

注释列提供有关状态失败原因的更多详细信息。

成功 指示成功状态的总体百分比。
已更改 指示报告每个状态更改的工作节点的总体百分比。
更改 指示最近的 highstate 运行是否导致更改。

注释列提供有关所做更改的更多详细信息。

平均持续时间 状态运行的平均持续时间(以毫秒 (ms) 为单位)。
环境 包含状态文件的 Salt 环境,例如 basedev
JID state.highstate 运行的作业标识号。

如果从状态选项卡中单击某个状态,则可以查看每个 Salt 工作节点上的最新 Highstate 运行。

SaltStack Config 中默认 html 页面状态先前的所有 Highstate 运行

将为每个状态提供以下信息:

术语 描述
工作节点 ID 运行状态的工作节点的 ID。
状态 指示状态运行成功还是失败。
更改 指示最近的 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 运行

目标级别提供目标组中每个工作节点的以下信息:

术语 描述
工作节点 ID 工作节点的 ID。
状态运行 工作节点的状态运行数。
错误 指示状态运行是否失败。状态失败的原因有很多。例如:
  • 所需文件不存在或由于文件系统权限而无法访问。
  • 网络资源或服务不可用。
  • 存在软件包依赖关系冲突,因此无法应用状态。

注释列提供有关状态失败原因的更多详细信息。

成功 指示成功状态的总体百分比。
已更改 指示导致更改的状态的总体百分比。
更改 指示最近的 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 返回

工作节点级别为所有工作节点提供以下信息:

术语 描述
工作节点 ID 工作节点的 ID。
状态运行 工作节点的状态运行数。
错误 指示状态运行是否失败。状态可能因以下几个原因失败:
  • 所需文件不存在或由于文件系统权限而无法访问。
  • 网络资源或服务不可用。
  • 存在软件包依赖关系冲突,因此无法应用状态。

注释列提供有关状态失败原因的更多详细信息。

成功 指示成功状态的总体百分比。
已更改 指示导致工作节点更改的状态的总体百分比。
更改 指示最近的 highstate 运行是否导致更改。

如果单击工作节点 ID,则可以查看工作节点行前的所有状态运行。

Highstate 工作区中一个 Salt 工作节点的所有状态运行

将提供以下信息:

术语 描述
成功 指示状态运行成功还是失败。
更改 指示最近的 highstate 运行是否导致更改。
环境 包含状态文件的 Salt 环境,例如 basedev
SLS 文件 包含状态声明的文件,例如 centos-config.sls
状态 状态的 ID 声明,例如 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 作业的状态。

活动选项卡中的表显示了有关作业状态、来源、调度(如果可用)、作业、目标组和关联作业 ID (JID) 的信息。您可以根据需要筛选列。