23. 工作流程作业模板

一个 工作流程作业模板 将一系列不同的资源链接在一起,从而实现跟踪作为单个单元的发布流程中所有作业的完整集合的任务。这些资源可能包括

  • 作业模板

  • 工作流程模板

  • 项目同步

  • 库存源同步

模板菜单打开一个列表,其中包含当前可用的工作流程和作业模板。默认视图是折叠的(紧凑),显示了模板名称、模板类型以及使用该模板运行的作业的状态,但是可以点击展开查看更多信息。此列表按名称按字母顺序排序,但可以按其他标准排序,或按模板的各种字段和属性进行搜索。从这个屏幕,你可以启动 (Workflow template launch button.)、编辑 (Edit node details icon.) 和复制 (Copy button.) 工作流程作业模板。

只有工作流程模板具有工作流程可视化器图标 (Workflow vizualizer icon) 作为访问工作流程编辑器的快捷方式。

Job templates list view with example of workflow template and arrow pointing to the Workflow vizualizer icon.

注意

工作流程模板可以用作另一个工作流程模板的构建块。工作流程模板中的许多参数允许你启用启动时提示,可以在工作流程作业模板级别进行修改,并且不会影响在各个工作流程模板级别分配的值。有关说明,请参阅 工作流程可视化器 部分。

23.1. 创建工作流程模板

要创建新的工作流程作业模板

  1. 点击 Create new template Add drop-down options. 按钮,然后从菜单列表中选择工作流程模板

Create new workflow template form.

  1. 在以下字段中输入相应的信息

注意

如果某个字段选中了启动时提示复选框,则启动工作流程模板或当工作流程模板在另一个工作流程模板中使用时,它会在启动时提示输入该字段的值。大多数提示值会覆盖在工作流程作业模板中设置的任何值;例外情况将在下面说明。

字段

选项

启动时提示

名称

输入作业的名称。

N/A

描述

根据需要输入任意描述(可选)。

N/A

组织

从当前登录用户可用的组织中选择要与该模板一起使用的组织。

N/A

库存

可以选择从当前登录用户可用的库存中选择要与该模板一起使用的库存。

限制

主机模式以进一步约束由剧本管理或受剧本影响的主机列表。多个模式可以用冒号 (:) 分隔。与核心 Ansible 一样,a:b 表示“在组 a 或 b 中”,a:b:&c 表示“在 a 或 b 中,但必须在 c 中”,a:!b 表示“在 a 中,但肯定不在 b 中”。有关更多信息和示例,请参阅 Ansible 文档中的 模式

源代码控制分支

选择工作流程的分支。此分支将应用于所有提示分支的工作流程作业模板节点。

标签

  • 可选地提供描述此工作流程作业模板的标签,例如“dev”或“test”。标签可用于对显示中的工作流程作业模板和已完成的作业进行分组和过滤。

  • 标签是在添加到工作流程模板时创建的。标签使用工作流程模板中提供的项目与单个组织相关联。如果组织成员具有编辑权限(例如管理员角色),他们可以在工作流程模板上创建标签。

  • 保存工作流程模板后,标签将出现在 WFJT 的详细信息视图中。

  • 点击标签旁边的 (x button) 以将其删除。删除标签后,它将不再与该特定工作流程模板相关联,但它将保留与引用它的任何其他作业或作业模板相关联。

  • 标签只应用于工作流程模板,不应用于工作流程中使用的作业模板节点。

  • 是。如果选中,即使提供默认值,也将在启动时提示你根据需要提供其他标签。

  • 你将无法删除现有标签 - 点击 (x delete button) 只会删除新添加的标签,不会删除现有的默认标签。

变量

  • 将额外的命令行变量传递给剧本。这是 Ansible 文档中记录的 ansible-playbook 的“ -e”或“ –extra-vars”命令行参数,位于 在命令行上传递变量

  • 使用 YAML 或 JSON 提供键值对。这些变量具有最高优先级,并覆盖在其他地方指定的其他变量。示例值可能是

git_branch: production
release_version: 1.5
  • 是。如果要在计划中指定 extra_vars,则必须为工作流程作业模板上的变量选择启动时提示,或在工作流程作业模板上启用调查,然后这些已回答的调查问题将成为 extra_vars

  • 有关额外变量的更多信息,请参阅 额外变量

作业标签

开始键入并选择创建 x 下拉菜单以指定应执行剧本的哪些部分。

跳过标签

开始键入并选择创建 x 下拉菜单以指定要跳过的特定任务或剧本部分。

有关作业标签跳过标签的更多信息,请参阅 Ansible 文档中的 标签

  1. 选项:如有必要,指定启动此工作流程作业模板的选项。

  • 选中启用 Webhook 以打开与用于启动工作流程作业模板的预定义 SCM 系统 Web 服务交互的能力。当前支持的 SCM 系统是 GitHub 和 GitLab。

如果启用 webhook,其他字段将显示,提示你输入其他信息

  • Webhook 服务:选择要监听来自哪个服务的 webhook

  • Webhook 凭据:可选地,提供一个 GitHub 或 GitLab 个人访问令牌 (PAT) 作为凭据,用于向 webhook 服务发送状态更新。在你可以选择它之前,凭据必须存在。请参阅 凭据类型 以创建一个。

保存后,其他字段将填充,工作流程可视化器会自动打开。

  • Webhook URL:自动填充用于将 POST 请求发送到的 webhook 服务的 URL。

  • Webhook 密钥:生成的共享密钥,由 webhook 服务用于对发送到 AWX 的有效负载进行签名。为了让 AWX 接受来自此服务的 webhook,必须在 webhook 服务上的设置中对其进行配置。

有关设置 webhook 的更多信息,请参阅 使用 Webhook

  1. 完成配置工作流模板后,点击保存

保存模板将退出工作流模板页面,并打开工作流可视化器,允许您构建工作流。有关更多说明,请参见工作流可视化器部分。否则,您可以关闭工作流可视化器以返回到新保存模板的“详细信息”选项卡,以便查看、编辑、添加权限、通知、计划和调查,或在以后查看已完成的工作并构建工作流模板。或者,您可以单击启动以启动工作流,但您必须先保存模板才能启动,否则启动按钮将保持灰色。另外,请注意通知选项卡仅在模板保存后才会出现。

Details tab of the newly created workflow template.

23.2. 使用权限

单击访问允许您查看、授予、编辑和删除与用户以及团队成员关联的权限。

Access tab of the newly created workflow template showing two user roles and their permissions.

单击添加按钮,按照提示进行操作,为该工作流模板创建新权限,并相应地分配权限。

23.3. 使用通知

单击通知允许您查看您已设置的任何通知集成。通知选项卡仅在模板保存后才会出现。

Notifications tab of the newly created workflow template showing four notification configurations with one notification set for Approval.

使用切换按钮启用或禁用要与特定模板一起使用的通知。有关更多详细信息,请参见启用和禁用通知

如果尚未设置任何通知,请参见创建通知模板以获取详细信息。

Notifications tab of the newly created workflow template showing no notifications set up.

有关配置各种通知类型的更多详细信息,请参阅通知类型

23.4. 查看已完成的工作

已完成的工作选项卡提供已运行的工作流模板列表。单击展开以查看每个作业的各种详细信息。

Jobs tab of the example workflow template showing completed jobs.

从此视图中,您可以单击作业 ID - 工作流作业的名称并查看其图形表示。以下示例显示了工作流作业的作业详细信息。

Details of the job output for the selected workflow template by job ID

节点标记有标签,可帮助您一目了然地识别它们。有关更多信息,请参见图例中的工作流可视化器部分。

23.5. 使用计划

单击计划允许您查看为此模板设置的任何计划。

23.5.1. 计划工作流模板

要计划工作流作业模板运行,请单击计划选项卡。

  • 如果已设置计划;查看、编辑或启用/禁用您的计划首选项。

  • 如果尚未设置计划,请参阅计划以获取更多信息。

如果嵌套工作流中使用的工作流模板包含调查,或者为库存选项选择了启动时提示,则提示按钮将显示在计划表单上的保存取消按钮旁边。单击提示按钮将显示一个可选的库存步骤,您可以在其中提供或删除库存,或跳过此步骤而无需进行任何更改。

23.6. 调查

包含运行或检查作业类型的工作流提供了一种在工作流作业模板创建或编辑屏幕中设置调查的方法。调查为剧本设置了额外的变量,类似于“提示输入额外变量”,但以用户友好的问答方式。调查还允许验证用户输入。单击调查选项卡以创建调查。

调查的用例很多。例如,如果运营部门希望为开发人员提供一个“推送到暂存”按钮,他们可以在没有高级 Ansible 知识的情况下运行。启动时,此任务可能会提示用户回答以下问题:“我们应该使用什么标签发布?”

可以提出许多类型的问题,包括多项选择题。

23.6.1. 创建调查

要创建调查

  1. 单击调查选项卡以调出添加调查窗口。

Workflow Job Template showing the Create survey form.

使用屏幕顶部的开/关切换按钮可以快速激活或停用此调查提示。

  1. 一个调查可以包含任意数量的问题。对于每个问题,请输入以下信息

  • 名称:要问用户的问卷问题。

  • 描述:(可选) 对向用户提出的问题进行说明。

  • 答案变量名称:用于将用户的响应存储在其中的 Ansible 变量名称。这是剧本要使用的变量。变量名称不能包含空格。

  • 答案类型:从以下问题类型中选择。

    • 文本:单行文本。您可以为此答案设置最小和最大长度(以字符为单位)。

    • 文本区域:多行文本字段。您可以为此答案设置最小和最大长度(以字符为单位)。

    • 密码:响应将被视为敏感信息,与实际密码的处理方式类似。您可以为此答案设置最小和最大长度(以字符为单位)。

    • 多项选择(单选):一个选项列表,一次只能选择一个。在多项选择选项框中输入选项,每行一个。

    • 多项选择(多选):一个选项列表,可以一次选择任意数量的选项。在多项选择选项框中输入选项,每行一个。

    • 整数:一个整数。您可以为此答案设置最小和最大长度(以字符为单位)。

    • 浮点数:一个十进制数。您可以为此答案设置最小和最大长度(以字符为单位)。

  • 默认答案:根据所选类型,您可以为问题提供默认答案。此值在界面中预先填充,如果用户未提供答案,则使用此值。

  • 必填:用户是否必须回答此问题。

  1. 输入完问题信息后,单击添加按钮以添加问题。

调查的风格化版本将显示在预览窗格中。对于任何问题,您可以单击编辑按钮编辑问题,单击删除按钮删除问题,并单击并拖动网格图标以重新排列问题的顺序。

  1. 返回到左侧窗格以添加其他问题。

  2. 完成后,单击保存以保存调查。

Workflow Job Template showing completed survey and arrows pointing to the re-ordering icons.

23.6.2. 可选调查问题

调查问题上的必填设置决定了与之交互的用户是否可以选择回答该问题。

在幕后,即使可选调查变量没有填写,也可以在 extra_vars 中传递给剧本。

  • 如果非文本变量(输入类型)被标记为可选,并且没有填写,则不会将任何调查 extra_var 传递给剧本。

  • 如果文本输入或文本区域输入被标记为可选,并且没有填写,并且最小 length > 0,则不会将任何调查 extra_var 传递给剧本。

  • 如果文本输入或文本区域输入被标记为可选,并且没有填写,并且最小 length === 0,则该调查 extra_var 将传递给剧本,其值设置为一个空字符串(“”)。

23.7. 工作流可视化器

工作流可视化器提供了一种图形化方式,可以将作业模板、工作流模板、项目同步和库存同步链接在一起以构建工作流模板。在构建工作流模板之前,请参阅工作流部分,了解与父节点、子节点和兄弟节点的不同场景相关的注意事项。

23.7.1. 构建工作流

您可以设置以下两种或多种节点类型的任意组合来构建工作流:模板(作业模板或工作流作业模板)、项目同步、库存同步或审批。每个节点都由一个矩形表示,而关系及其关联的边类型则由连接它们的线(或链接)表示。

  1. 在工作流模板的详细信息/编辑视图中,单击可视化器选项卡,或从模板列表视图中单击(工作流可视化器图标)图标以启动工作流可视化器。

Workflow Visualizer start page.
  1. 单击工作流可视化器开始按钮。按钮以显示要添加到工作流中的节点列表。

Workflow Visualizer wizard, step 1 specifying the node type.
  1. 在右侧窗格中,从下拉菜单中选择要添加的节点类型

Node type showing the drop-down menu of node type options.

如果选择审批节点,请参见审批节点以获取更多详细信息。

选择一个节点将提供与其关联的可用有效选项。

注意

如果选择一个在填充工作流图时没有默认库存的作业模板,则将使用父工作流的库存。尽管作业模板中不需要凭证,但如果您选择的作业模板具有需要密码的凭证,则您将无法为工作流选择该作业模板,除非凭证被替换为提示凭证。

  1. 选择一个节点后,工作流将开始构建,您必须指定要对所选节点执行的操作类型。此操作也称为边类型

  2. 如果该节点是根节点,则边类型默认为始终且不可编辑。

对于后续节点,您可以选择以下场景之一(边类型)以应用于每个节点

  • 始终:无论成功还是失败,都继续执行。

  • 成功时:成功完成后,执行下一个模板。

  • 失败时:失败后,执行另一个模板。

  1. 收敛字段中选择该节点是收敛节点时的行为

  • 任意是默认行为,允许任意节点按指定方式完成,然后触发下一个收敛节点。只要一个父节点的状态满足这些运行条件之一,任何子节点都将运行。换句话说,任何节点都需要所有节点完成,但只有一个节点必须以预期的结果完成。

  • 选择全部以确保所有节点都按指定方式完成,然后收敛并触发下一个节点。所有节点的目的是确保每个父节点都以预期结果运行,以便运行子节点。工作流检查以确保每个父节点都按预期方式运行,以便运行子节点。否则,它将不会运行子节点。

如果选择,图形视图将使用代表性颜色指示节点类型。请参阅图例(工作流可视化器图例按钮。)以查看相应的运行场景及其作业类型。

注意

如果一个节点是根节点,或者没有任何节点汇聚到它的节点,则设置**Convergence**规则不适用,因为它的行为由触发它的操作决定。

  1. 如果工作流程中使用的作业模板为其任何参数选择了**启动时提示**,则会出现一个**提示**按钮,允许您在节点级别更改这些值。使用向导更改每个选项卡中的值,然后在预览选项卡中单击**确认**。

Workflow Visualizer wizard with Prompt on Launch options.

同样,如果工作流程中使用的工作流程模板为库存选项选择了**启动时提示**,请使用向导在提示时提供库存。如果父工作流程有自己的库存,它将覆盖此处提供的任何库存。

Workflow Visualizer wizard with Prompt on Launch for Inventory.

注意

对于具有可提示字段且必填但没有默认值的工作流程作业模板,您必须在创建节点之前提供这些值,然后**选择**按钮才会启用。有两种情况会导致**选择**按钮在通过**提示**按钮提供值之前被禁用:1)当您在工作流程作业模板中选中**启动时提示**复选框但未提供默认值时,或 2)当您创建必填但未提供默认答案的调查问题时。但是,**凭证**并非如此。创建工作流程节点时**不允许**使用需要在启动时输入密码的凭证,因为在创建节点时必须提供启动节点所需的一切。因此,如果工作流程作业模板提示输入凭证,AWX 会阻止您选择需要密码的凭证。

创建节点后,它将用其作业类型标记。与每个工作流程节点关联的模板将根据选择的运行场景在继续时运行。单击指南 (工作流程可视化器图例按钮。) 图标以显示每个运行场景及其作业类型的图例。

Workflow Visualizer legend expanded.
  1. 将鼠标悬停在节点上,您可以添加 添加节点图标。 另一个节点,查看信息 查看节点详细信息图标。 有关节点的信息,编辑 编辑节点详细信息图标。 节点详细信息,编辑现有链接 编辑链接图标。,或删除 删除节点图标。 所选节点。

Building a new example workflow job template in the Workflow Visualizer
  1. 完成添加/编辑节点后,单击**保存**以保存所有修改并在图形视图中呈现它。有关构建工作流程的可能方法,请参见 节点构建场景.

  2. 完成构建工作流程模板后,单击**保存**以保存整个工作流程模板并返回到新的工作流程模板详细信息页面。

重要

关闭向导而不保存不会保存您的工作,而是关闭整个工作流程可视化器,您将不得不从上次保存的地方开始。

23.7.1.1. 审批节点

选择**审批**节点需要用户干预才能推进工作流程。这作为一种在剧本之间暂停工作流程的手段,以便用户可以批准继续执行工作流程中的下一个剧本,从而为用户提供指定的时间进行干预,但也允许用户尽快继续而无需等待其他触发器。

Workflow Visualizer Approval node form.

超时默认为无,但您可以指定请求过期并自动被拒绝的时间长度。选择并提供审批节点的信息后,它将在图形视图中显示,旁边有一个暂停 (工作流程节点 - 批准图标。) 图标。

Workflow Visualizer showing approval node with pause icon.

审批者可以是任何可以执行包含审批节点的工作流程作业模板的人员,拥有组织管理员或更高权限(对于与该工作流程作业模板关联的组织),或在该特定工作流程作业模板中被明确分配了“批准”权限的任何用户。

Workflows requesting approval from notifications

如果待审批节点在指定时间限制内未被批准(如果分配了过期时间)或被拒绝,则它们将分别标记为“超时”或“失败”,并继续到下一个“失败时节点”或“始终节点”。如果批准,“成功时”路径将被采用。如果您尝试在 API 中将 POST 发送到已批准、拒绝或超时的节点,错误消息会通知您此操作是多余的,不会采取任何进一步的措施。

以下是审批工作流程允许的各种权限级别

Workflow nodes approval RBAC table.

23.7.1.2. 节点构建场景

您可以通过单击父节点上的 添加节点图标。 添加同级节点

Workflow Visualizer showing how to create a sibling node.

您可以将另一个节点插入两个节点之间,方法是将鼠标悬停在连接这两个节点的线上,直到 添加节点图标。 出现。单击 添加节点图标。 会自动将节点插入两个节点之间。

Workflow Visualizer showing how to insert a node.

要添加根节点以描述拆分场景,请再次单击 工作流程可视化器开始按钮。 按钮

Workflow Visualizer showing how depict a split scnario.

在您要创建拆分场景的任何节点处,将鼠标悬停在拆分场景开始的节点上,然后单击 添加节点图标。。这本质上是从同一个父节点添加多个节点,创建同级节点

Workflow Visualizer showing how to create sibling nodes.

注意

添加新节点时,**提示**按钮也适用于工作流程模板。工作流程模板将提示提供库存和调查。

如果要撤消上次插入的节点,请单击另一个节点,不要从右窗格中进行选择。或者,从右窗格中单击**取消**。

以下是一个工作流程示例,其中包含所有三种类型的作业,这些作业是由作业模板启动的,如果作业模板运行失败,则继续执行项目同步作业,无论该作业失败还是成功,都会继续执行库存同步作业。

Workflow Visualizer showing a workflow job that contains a job template, a project, and an inventory source.

请记住,参考窗口顶部的图例以识别与图形描述相关的符号和颜色的含义。

注意

在具有多个同级节点且边缘类型不同的工作流程中,如果删除具有附加后继节点的节点,则附加节点会自动加入同级节点集并保留其边缘类型

Workflow Visualizer showing a workflow job with a deleted node.

以下几种方法可以修改节点

  • 如果要编辑节点,请单击要编辑的节点。右窗格将显示当前选择。进行更改,然后单击**选择**以将更改应用于图形视图。

  • 要编辑现有链接的边缘类型(成功/失败/始终),请单击链接。右窗格将显示当前选择。进行更改,然后单击**保存**以将更改应用于图形视图。

Workflow Visualizer showing the wizard to edit the link.
  • 要从一个节点添加一个新链接到另一个节点,请单击出现在每个节点上的链接 编辑链接图标。 图标。执行此操作会突出显示可以链接的节点。这些可行的选项由虚线表示。无效选项由灰色的框(节点)表示,这些框(节点)否则会产生无效链接。以下示例显示**Demo Project** 作为**e2e-ec20de52-project** 可以链接的选项,如箭头所示

Workflow showing linking scenerio between two nodes.

链接后,在添加链接提示中指定您希望链接具有的运行场景类型。

Workflow Visualizer prompt specifying the run type when adding a new link.
  • 要删除链接,请单击链接,然后单击**取消链接** (删除节点图标。) 图标,然后在提示中单击**删除**以确认。

Workflow Visualizer showing the wizard to remove the link.

此按钮仅在右窗格中显示,如果目标或子节点有多个父节点。所有节点必须始终至少链接到另一个节点,因此您必须在删除旧链接之前创建新链接。

单击工具图标 (工作流程可视化器工具图标。) 以缩放、平移或重新定位视图。或者,您可以拖动工作流程图以在屏幕上重新定位它,或者使用鼠标上的滚轮进行缩放。

23.8. 启动工作流程模板

可以通过以下任一方式启动工作流程模板

  • 从左侧导航栏上的**模板**菜单访问工作流程模板列表,或者在工作流程模板详细信息视图中,滚动到底部以从模板列表中访问 工作流程模板启动按钮。 按钮。

Templates list view with arrow pointing to the launch button of the workflow job template.
  • 在要启动的作业的工作流程作业模板详细信息视图中,单击**启动**。

除了在工作流程作业模板和调查中设置的任何额外变量之外,AWX 会自动添加与启动工作流程作业模板时添加的变量相同的变量。此外,AWX 会自动将 Web 浏览器重定向到此作业的作业详细信息页面,显示进度和结果。

与工作流程批准相关的事件会显示在活动流 (活动流图标。) 顶部的顶部,其中包含有关批准请求的详细信息(如果有)。

23.9. 复制工作流程模板

AWX 允许您复制工作流程模板。如果您选择复制工作流程模板,它**不会**复制任何关联的计划、通知或权限。计划和通知必须由创建工作流程模板副本的用户或管理员重新创建。复制工作流程模板的用户将被授予管理员权限,但不会将任何权限分配(复制)给工作流程模板。

  1. 从左侧导航栏上的**模板**菜单访问要复制的工作流程模板,或者在工作流程作业模板详细信息视图中,滚动到底部以从模板列表中访问它。

  2. 单击 复制按钮。 按钮。

将打开一个新模板,其中包含您复制的模板的名称和时间戳。

Templates list view with example copied workflow.

选择复制的模板,将**名称**字段的内容替换为新名称,并提供或修改其他字段中的条目以完成此模板。

  1. 完成后点击保存

注意

如果一个资源关联着一个您没有足够权限访问的资源,您将无法复制该资源,例如,当一个项目使用当前用户只有读取权限的凭据时。然而,对于工作流模板,如果其任何节点使用未经授权的作业模板、清单或凭据,则工作流模板仍然可以被复制。但在复制的工作流模板中,工作流模板节点中的相应字段将不存在。

23.10. 额外变量

注意

传递给作业启动 API 的extra_vars 仅在以下情况之一为真时才会被接受

  • 它们对应于已启用的调查中的变量

  • ask_variables_on_launch 设置为 True

当您传递调查变量时,它们将作为额外变量 (extra_vars) 传递。这可能很棘手,因为将额外变量传递给工作流模板(就像您对调查所做的那样)可能会覆盖从清单和项目传递的其他变量。

例如,假设您为清单定义了一个变量 debug = true。完全有可能这个变量 debug = true 在工作流模板调查中被覆盖。

为了确保您需要传递的变量不会被覆盖,请确保在调查中重新定义它们以包含它们。请记住,额外变量可以在清单、组和主机级别定义。

下表列出了 AWX 中变量优先级(层次结构)的行为,与 Ansible 中的变量优先级进行比较。

变量优先级层次结构(最后列出者优先)

AWX Variable Precedence Hierarchy for Workflows