定义作业或操作的目标有助于防止操作在不应运行此操作的节点上运行。可以使用 Grain、Glob、List 或 Compound 组织目标。

什么是目标?

目标是一个或多个 Salt 主节点中的一组工作节点,会对其应用作业的 Salt 命令。目标可以包含连接到环境中任何 Salt 主节点的工作节点。Salt 主节点也可以像工作节点一样进行管理,如果正在运行工作节点服务,也可以成为目标。

可以在“工作节点”工作区中为作业创建目标。默认情况下,打开工作区时,“所有工作节点”目标处于活动状态。“所有工作节点”目标将列出您有权访问的所有工作节点。

开始前

创建目标之前,必须考虑要创建的目标组。例如,您可能希望为安全区域或单个子网创建目标组。如何组织目标组将取决于您组织的需求。

创建新目标

SaltStack Config 中的每个目标都需要名称、Salt 主节点和目标条件。要定义包括一个或多个工作节点的新目标,请执行以下操作:

  1. 在“工作节点”工作区中,单击目标侧边面板中的所有工作节点
  2. 单击创建目标按钮。
  3. 创建目标对话框的名称字段中,输入新目标的描述性名称。
  4. 默认情况下,所有主节点设置处于启用状态,这意味着由任何 Salt 主节点管理的工作节点都可以包含在目标中。单击此按钮会仅将此目标应用于与一个或多个 Salt 主节点关联的工作节点子集。

    如果禁用该设置,将显示一个菜单,可使用该菜单选择要应用目标的一个或多个 Salt 主节点。有关详细信息,请参见目标设置

  5. 单击 Grain 菜单,然后选择要使用的目标类型。可以使用Grain、Glob、List 或 Compound 确定工作节点目标。有关这些目标选项的详细信息,请参见目标设置。有关 Salt 目标的更多常规背景信息,请参见确定工作节点目标
  6. 根据在上一步中选择的目标类型,提供不同的目标设置和条件。有关这些设置的详细信息,请参见目标设置
    注: 如果选择“Compound”作为第一个条件,则必须遵循 Salt 目标参考中包含的目标语法,并且必须在复合目标定义中包含任何第二个条件。 SaltStack Config 不允许在目标编辑器中添加任何其他条件。有关组合目标的详细信息,请参见 目标设置
  7. 完成后,单击保存

新目标将显示在“工作节点”工作区的目标列表中。

创建简单列表目标

要使用简单列表创建新目标,请执行以下操作:
  1. 在“工作节点”工作区中,单击目标侧边面板中的所有工作节点
  2. 单击要包括在列表中的工作节点旁边的复选框,然后单击创建目标
    注: 对工作节点筛选或排序会对定义列表非常有用。

    选定列表作为条件包括在内。

  3. 输入目标名称并定义任何其他目标设置。请参见目标设置
  4. 完成后,单击保存

向目标分配 pillar

Pillar 主要用于存储密钥或其他高度敏感数据,例如帐户凭据、加密密钥或密码。Pillar 也可用于存储不希望直接放在状态文件中的非机密数据(如配置数据)。要向特定工作节点目标分配 pillar 数据,请执行以下操作:
  1. 在“工作节点”工作区中,从目标侧边面板中选择一个目标。
  2. 单击更多操作
  3. 在菜单中,单击附加 Pillar
  4. 在对话框中,选择要应用于目标的 pillar。

    除了选择 pillar 外,还要选择刷新 pillar,以使该 pillar 立即可用于所选目标。

  5. 单击更新目标
    所选 pillar 数据现在可用于目标中的所有工作节点。
    注: 也可以在“Pillar”工作区中向目标分配 pillar。有关详细信息,请参见 如何创建状态文件和 pillar 数据

目标设置

SaltStack Config 中确定目标类似于在开源 Salt 中确定目标,但 SaltStack Config 提供了用于定义目标的简化界面,同时还支持保存目标定义以便重用。有关 Salt 中目标的详细信息,请参见 Salt 目标参考

SaltStack Config 中的每个目标都包括名称、Salt 主节点和目标条件,下面进行了详细介绍。

设置 说明
名称

输入目标名称。目标名称不必唯一。这可能会导致在 SaltStack Config 用户界面中不同的项目显示相同的名称。

所有 Salt 主节点

默认情况下,目标包括所有 Salt 主节点。但是,可以选择将仅属于特定 Salt 主节点的工作节点设置为目标。

例如,如果您的环境具有多个负责运行特定应用程序的节点,并且已对 Salt 基础架构进行分区以便这些计算机都连接到单个 Salt 主节点,则通过仅选择该 Salt 主节点可以创建包含整个工作节点子集的目标。

要启用按 Salt 主节点确定目标,请单击单选按钮以停用此设置。将显示一组新的设置。

主节点字段下,选择要将其工作节点设置为目标的 Salt 主节点。所有其他目标条件仅适用于与所选 Salt 主节点关联的工作节点子集。

目标条件

目标为动态目标,新的工作节点会自动添加到任何匹配的目标定义。如果您不希望将来包含会与动态目标匹配的新工作节点,请将目标保存为列表。

可以使用目标条件指定一组工作节点,请参阅以下字段描述。

目标类型 说明
Grain(属性匹配)

匹配特定的 Grain 值,例如,osfullnameDebian。选择 Grain 后,会预填充值列表,以便您可以单击字段以查看可用选项或开始键入。

使用 Grain 创建组合目标时,如果 Grain 名称中包含空格,则 RaaS 不会返回任何工作节点。因此,任何空格会自动转换为 ?

Glob(通配符匹配) 使用工作节点 ID 的通配符匹配。例如,可以通过输入 webserver* 选择名为 webserver01webserver02webserver03 的多个工作节点。
List(列表匹配)

指定要包括在目标中的工作节点列表。例如,dc3-north-db1,dc3-north-db2

如果不希望动态授予对目标的访问权限,则指定列表非常有用。这样可以防止自动将与动态目标条件匹配的新工作节点添加到目标。

Compound(组合匹配)

组合多个目标接口(以连接词 and、or 和 not 分隔)。

如果选择“Compound”作为第一个条件,则必须遵循 Salt 目标参考中包含的目标语法,并且必须在复合目标定义中包含任何第二个条件。SaltStack Config 不允许在目标编辑器中添加任何其他条件。有关组合目标的详细信息,请参见目标设置

创建目标的最佳做法

创建简单的目标规则

尽管可以在 SaltStack Config 中创建的目标数量没有任何限制,但请尝试创建包含需要对其执行操作的所有计算机的最简单目标规则。

确定所需的用例

为作业创建目标之前,请从用例列表开始,以帮助确定要使用的目标类型。例如,要进行修补,可以使用 Grain 将特定操作系统设置为目标。下表包含目标组、常见用例和所建议目标类型的一些示例。
目标组 用例 目标类型
操作系统
  • 修补
  • 发现或诊断
  • 标准合规性
Grain(属性匹配)
应用程序集群
  • 应用程序安装
  • 导向合规性
  • 选择性修补
  • 配置管理和偏差检测或修复
Glob 或列表
数据中心、子网、可用区或其他网络分段
  • 合规性
  • 网络或区域配置
Glob 或自定义 Grain
自定义方法
  • 批准或禁止的软件包
  • 基于已安装的应用程序是否存在进行用户管理
  • 用户帐户
自定义 Grain

后续步骤

创建所需的目标后,可以创建作业,以便针对目标工作节点运行任务和进程。有关详细信息,请参见如何创建作业