作为系统管理员,您可以在 SaltStack Config 中创建作业,以运行远程执行任务、应用状态、启动 Salt 运行程序等。作业通常用于需要自动执行多次的系统操作。

开始前

SaltStack Config 中的作业通常包含 Salt 开源社区开发的执行模块或状态模块之一。因此,您需要先熟悉有关 Salt 系统的一些基本概念,以及如何使用可用的执行模块和状态模块执行常见的管理任务。

要了解... 请参见...

使用 Salt 的基础知识

Salt 状态

Salt 执行模块和状态模块

创建作业

要创建新作业,请执行以下操作:

  1. 研究哪个 Salt 执行模块或状态模块可帮助您实现期望的结果。找到满足您需求的 Salt 模块时,阅读该模块的文档,以确保熟悉该模块的参数和其他要求。
  2. 如果作业使用 Salt 状态模块,请在 SaltStack Config 文件服务器中创建新的状态文件。有关详细信息,请参见如何创建状态文件和 pillar 数据?
  3. 创建新作业。
    1. 单击侧边菜单中的配置 > 作业以打开“作业”工作区。
    2. 单击创建作业按钮。
      注:

      如果未显示“创建作业”按钮,说明您没有创建新作业的权限。请联系您的 vRealize Automation 管理员申请访问权限或请求为您创建此作业,以便您可以完成本教程。

    3. 输入新作业的详细信息。
      字段

      名称

      为作业提供描述性名称,简要说明此作业的用途或此作业将要执行的任务。例如,“Configure Windows firewall settings”。

      说明

      添加说明,告知其他用户此作业的用途,例如“在 Windows 节点上打开端口 445 的防火墙”。

      命令

      • 对于针对工作节点运行的作业,选择 salt
      • 对于针对 Salt 主节点运行的作业,选择 salt-runsalt-run 作业也称为 Salt 运行程序。Salt 运行程序是用于在 Salt 主节点上执行便捷函数的模块。可以使用 Salt 运行程序运行编排、远程打开工作节点、调用 Webhook 等。它们对于集中执行任务或从一个集中起点执行任务非常有用。例如,可以对与给定 Salt 主节点关联的所有工作节点应用 highstate。

      如果您不确定要选择哪个选项,请使用 salt,因为大多数作业都针对工作节点运行。

      注意:如果您决定更改命令,系统将显示一个新的函数列表供您选择。

      目标

      可选:目标是一个或多个 Salt 主节点中的一组工作节点,会对其应用作业的 Salt 命令。可以在“工作节点”工作区或“目标”工作区中为作业创建目标。有关详细信息,请参见如何创建目标?

      如果希望在运行作业时选择目标,请不要从此菜单中选择任何选项。将此字段留空可使您在运行作业时选择目标。但是,定义作业目标还可以防止该作业在不应运行此作业的节点上运行。

      函数

      选择运行此作业时要执行的 Salt 模块。单击此字段,然后开始键入要选择的 Salt 模块的名称或从菜单中进行选择。如果要使用的模块未包含在下拉列表中,也可以键入自己的值。

      如果此作业旨在将 Salt 状态文件应用于工作节点,请使用 state.apply 模块。有关详细信息,请参见 state.apply

      有关 Salt 模块的完整列表,请参见 Salt 模块索引。另请参见常见作业示例 中的表,其中描述了一些最常用的模块。

      参数

      可以使用参数字段将 argskwargs 传递给 Salt 模块。

      参数字段中的每一行代表一个参数。例如,如果使用的是 file.copy 模块,则可以将 path/to/src/path/to/dst 传递给该模块。

      还可以使用关键字参数。例如,可以将 src=path/to/src/dst=path/to/dst/ 传递给 file.copy 模块。

      有关 Salt 模块的完整列表,请参见 Salt 模块索引

      环境

      此字段仅当适用于所选函数(如 state.applystate.highstate 等)时才可用。

      从菜单中选择所需的 Salt 环境,如果列表中未显示该环境,则键入该环境。例如,如果要应用基本环境中的状态文件,请从菜单中选择 base

      状态

      此字段仅当适用于所选函数(如 state.apply)时才可用。

      从菜单中选择要应用的状态文件,如果列表中未显示该状态文件,则键入该状态文件。

      Pillar 覆盖

      此字段仅当适用于所选函数(如 state.apply)时才可用。接受 JSON 形式的 pillar 数据。pillar 数据保存到作业定义中,并在运行时传递给模块函数。

      SaltStack Config 中使用 Pillar 覆盖类似于通过 CLI 发送自定义 pillar 值。通过这种方式传递的值会覆盖使用 pillar_roots 或外部 Pillar 源设置的现有 Pillar 值。不会覆盖未包含在 kwarg 中的 Pillar 值。

      有关 pillar 数据的详细信息,请参见如何创建状态文件和 pillar 数据?

      SaltStack Config 中的作业屏幕截图,其中所有字段均已填写
    4. 可选:选中作为测试运行 (试运行) 选项以运行测试作业并生成模拟作业返回。“测试 (试运行)”仅适用于某些函数,例如 state.apply。如果选择“测试”,则作业将在试运行模式下运行,不会进行任何更改。如果取消选择此选项,可以稍后在运行作业时选择将作业作为测试运行。
    5. 可选:将作业输入添加到作业。有关详细信息,请参见添加作业输入
  4. 保存作业并确认该作业显示在“作业”工作区中。

添加作业输入

作为系统管理员,您可以使用作业输入配置其他用户可在运行时更改的参数或变量。您可以创建通用作业,然后为用户定义可选和必需的作业输入,而不是为不同的用例创建多个作业。这有助于减少收到的作业创建请求量。

使用作业输入的一个优点是,您可以限制对其他管理员可在作业运行时传递给函数的参数或变量类型的访问,同时仍然授予他们执行必要任务的权限以完成他们职责范围内的任务。这样,明确定义的作业输入可确保您的组织遵循标准的安全最佳做法,如最小特权原则。

开始前

考虑用户需要编辑哪些作业输入

在定义作业输入之前,请务必考虑希望用户在运行时查看和编辑哪些作业输入。请记住,除了您以外,其他人可能会运行此作业,并且作业输入呈现给他们的方式将因您设置作业输入的方式而异。请花一些时间仔细考虑您希望这些用户在运行时查看和编辑哪些作业输入。

例如,假设您创建这样一个作业:根据服务器的用途或角色将配置设置应用于服务器。您可以创建一个应用状态文件中的配置设置的通用作业,然后创建作业输入,以允许管理员从下拉菜单的列表中选择应用的状态文件。在作业运行时,用户将看到下拉菜单,其中仅包含您定义的可行状态文件列表,无任何其他内容。

这样,作业输入使系统管理员能够更有效地控制您允许其他管理员在作业运行时查看和更改的内容。您可以提供灵活性,同时确保其他用户只能更改其职责或权限级别范围内允许的内容。

要定义作业输入,请执行以下操作:
  1. 单击侧边菜单中的配置 > 作业以打开作业工作区。
  2. 选择一个作业以打开作业的详细信息。
  3. 向下滚动到作业详细信息页面的作业输入部分。作业输入列表屏幕截图
  4. 单击添加作业输入按钮。
  5. 输入作业输入的详细信息。
    字段
    显示名称

    设置作业输入的名称。

    当用户在运行时查看此作业输入时,您在显示名称中输入的文本是指示输入功能和用途的最重要标志。

    选择简短而准确的描述性名称,例如“Service to restart”。

    输入类型

    设置作业输入的类型。有四种输入类型:字符串、数字、布尔和选择。

    • 如果希望用户提供值,则使用字符串输入类型。
    • 如果希望用户指定数量或大小,则使用数字
    • 对于 true 或 false 情形,使用布尔
    • 如果希望用户从值列表中进行选择,则使用选择选择列表中的值可以是字符串、数字或布尔值。例如,“Service to restart”作业输入的输入类型可能是选择字符串列表。例如,httpdsshdmysqld

    在选择输入类型之前,请先查阅 Salt 模块索引。输入类型由作业使用的 Salt 模块以及 Salt 模块中与输入类型关联的参数确定。如果选择错误的输入类型,则作业将失败。

    在作业运行时显示

    允许用户在运行作业时查看和编辑值。

    如果启用此设置,则编辑作业输入窗口中将显示帮助文本字段。

    如果您觉得很难找到简短而准确的显示名称,请使用帮助文本字段提供有关作业输入的其他信息。例如,您可以描述需要用户提供值的情况。

    当用户运行作业时,此帮助文本将显示在作业输入名称旁边的帮助工具提示 (?) 下。

    关键字

    提供传递给正在执行的模块函数的参数。有关模块函数的详细信息,请参见 Salt 模块索引

    注意:作业输入不支持非关键字位置参数。这些参数可以在作业中的参数下指定,但无法在作业运行时提供。

    默认值/值

    如果启用在作业运行时显示,则可以使用可选的默认值字段为作业输入提供默认值。用户可以将默认值传递给模块函数,也可以在运行时进行更改。

    请考虑为用户提供默认值是否有所帮助。提供默认值可以帮助用户在运行作业时节省时间,但在某些情况下可能不需要。例如,名为“Datacenter”的作业输入可能不需要默认值,因为值会有所不同。

    如果禁用在作业运行时显示,则可以使用字段将默认值传递给模块函数。用户将无法查看或编辑值。

    作业输入时需要

    如果启用在作业运行时显示,则可以选择要求用户为作业输入提供值。

    请考虑要求用户提供值是否有所帮助。设计作业时,请考虑如果用户未提供值会发生什么情况。如果作业在未提供值的情况下可能会失败,则要求在运行时提供。如果作业可以在未提供值的情况下成功运行,则将其设置为可选。

    如果可能,请使用帮助文本字段帮助用户了解作业输入的功能。

  6. 保存作业输入,并确认显示在作业详细信息页面的作业输入列表中。
    注:

    作业输入列表中可能会显示其他字段,例如环境状态测试,具体取决于您使用的模块函数。如果您希望用户在运行时看到这些输入,请单击关键字旁边的铅笔图标以编辑作业输入,并启用在作业运行时显示

  7. 保存作业。
  8. 要验证作业输入是否按预期工作,请以能够使用较低权限级别运行作业或具有较少访问特权的角色的用户身份登录到 SaltStack Config

    如果缺少作业输入、作业失败,或者作业输入需要其他参数或描述,请在允许用户运行作业之前对作业进行任何必要的调整。

后续步骤

创建作业后,现在可以临时或定期运行该作业。有关详细信息,请参见: