文档

19. 工作流作业模板

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

  • 作业模板

  • 工作流模板

  • 项目同步

  • 库存源同步

templates-icon)菜单打开一个列表,其中包含当前可用的工作流和作业模板。 默认视图为折叠(紧凑),显示模板名称、模板类型以及使用该模板运行的作业的状态,但您可以单击**展开**以查看更多信息。 此列表按名称按字母顺序排序,但您可以按其他标准排序,或按模板的各种字段和属性进行搜索。 在此屏幕上,您可以启动(launch)、复制(copy)和删除(delete)作业模板。 在删除作业模板之前,请确保它未在工作流作业模板中使用。

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

Wf templates - home with example wf template

注意

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

19.1. 创建工作流模板

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

  1. 单击add options template 按钮,然后从菜单列表中选择**工作流模板**。

Wf templates - create new wf template

  1. 在以下字段中输入适当的详细信息

  • **名称**:为工作流模板输入名称。

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

  • **组织**:可选地输入或搜索要与工作流关联的组织。

  • **库存**:可选地输入或搜索要与该工作流模板一起使用的库存,从当前登录的 Tower 用户可用的库存中选择。

  • **启动时提示**:如果选中,您可以在启动该工作流模板时或在另一个工作流模板中使用该工作流模板时提供库存。

  • **限制**:可选地指定工作流要运行的服务器子集的限制。 此值为主机模式,用于进一步约束由剧本管理或影响的主机列表。 多个模式可以用冒号(“:”)分隔。 与核心 Ansible 一样,“a:b” 表示“在组 a 或 b 中”,“a:b:&c” 表示“在 a 或 b 中,但必须在 c 中”,“a:!b” 表示“在 a 中,但一定不在 b 中”。

  • **启动时提示**:如果选中,即使提供了默认值,您也会在启动时被提示选择限制。

  • **SCM 分支**:可选地指定分支以覆盖所有提示分支的作业模板节点。

    • **启动时提示**:如果选中,即使提供了默认值,您也会在启动时被提示选择 SCM 分支。

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

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

    • 保存工作流模板后,标签会出现在模板概述中。

    • 单击标签旁边的“x”以将其删除。 当标签被删除并且不再与工作流或工作流模板相关联时,该标签将从组织标签列表中永久删除。

    • 作业在启动时从工作流模板继承标签。 如果从工作流模板中删除标签,则该标签也会从作业中删除。

_images/job-template-create-labels.png _images/job-template-saved-labels.png
  • 选项:

  • 选中启用并发作业,允许同时运行此工作流。有关更多信息,请参见Ansible Tower 容量确定和作业影响

  • 选中启用 Webhook,以开启与预定义 SCM 系统 Web 服务的接口,该服务用于启动作业模板。目前支持的 SCM 系统包括 GitHub 和 GitLab。

如果启用 Webhook,则会显示其他字段,提示您输入其他信息。

  • Webhook 服务:选择要监听其 Webhook 的服务。

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

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

  • Webhook URL:自动填充 Webhook 服务要向其 POST 请求的 URL。

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

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

  • 额外变量:

    • 将额外的命令行变量传递到剧本中。这是 ansible-playbook 的“ -e”或“--extra-vars”命令行参数,在 Ansible 文档的命令行上传递变量中进行了说明。

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

      git_branch: production
      release_version: 1.5
      

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

    • 启动时提示:如果选中,即使提供了默认值,您在启动时也将被提示选择命令行变量。

注意

如果您想能够在计划中指定extra_vars,则必须为工作流模板的额外变量选择启动时提示,或在工作流模板上启用调查,然后这些已回答的调查问题将成为extra_vars

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

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

_images/wf-templates-wf-template-saved.png

您可以在屏幕底部的新建工作流模板列表中查看新创建的工作流模板是否已保存。

Wf templates - newly added wf template

注意

如果在工作流模板上指定了清单,则清单将在模板列表视图中显示。

_images/wf-templates-list-default-inventory.png

19.2. 使用权限

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

_images/wf-template-completed-permissions-view.png

单击add按钮,为该工作流模板创建新的权限。

在此示例中,已选择两个用户和一个团队,并且每个团队和用户都已获得该工作流模板的权限。

_images/wf-template-assign-permissions-view.png

请注意,您不必在团队或用户之间进行选择,并且可以同时为两者分配权限。

19.3. 使用通知

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

_images/wf-template-completed-notifications-view.png

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

如果未设置任何通知,请单击灰色框中的通知链接以创建新的通知。

_images/wf-template-no-notifications-blank.png

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

19.4. 查看已完成的作业

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

_images/wf-template-completed-jobs-list.png

注意

如果在运行时指定了工作流级别清单,则清单名称将显示在作业列表中的工作流作业中。

_images/wf-template-completed-jobs-list-with-inventory.png

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

_images/wf-template-jobID-detail-example.png

如果工作流模板在另一个工作流中使用,则作业详细信息将指示父工作流。

_images/wf-template-job-detail-with-parent.png

在上例中,单击父工作流模板总体,以查看其作业详细信息页面以及每个节点的图形详细信息以及它们启动时的状态。

_images/wf-template-jobs-detail-example.png

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

19.5. 使用计划

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

Workflow Template - schedule

19.5.1. 计划工作流模板

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

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

  • 如果未设置计划,请参见计划以了解更多信息。

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

19.6. 调查

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

调查用例很多。例如,如果操作人员想为开发人员提供一个“推送到暂存环境”按钮,他们可以在没有高级 Ansible 知识的情况下运行该按钮。启动后,此任务可能会提示用户回答诸如“我们应该发布什么标签?”之类的問題。

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

19.6.1. 创建调查

要创建调查,请执行以下操作:

  1. 单击survey按钮,以调出添加调查窗口。

Workflow Job Template - create survey

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Workflow-template-completed-survey

19.6.2. 可选调查问题

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

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

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

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

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

19.7. 工作流可视化器

工作流可视化器提供了一种图形化的方式,将作业模板、工作流模板、项目同步和清单同步链接在一起,以构建工作流模板。在构建工作流模板之前,请参考 工作流 部分,了解与父节点、子节点和兄弟节点在各种场景中的关联。

19.7.1. 构建工作流

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

  1. 在工作流模板的详细信息/编辑视图中,单击 workflow editor 按钮,或从模板列表视图中单击 (wf-viz-icon) 图标以启动工作流可视化器。

_images/wf-editor-create-new.png
  1. 单击 start 按钮以显示要添加到工作流中的节点列表。

_images/wf-editor-create-new-add-template-list.png
  1. 在右窗格中,从下拉菜单中选择要添加的节点类型。

_images/wf-add-node-selections.png

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

选择节点会提供与其关联的可用有效选项。通过单击其旁边的工具提示来访问有关节点的详细信息。

_images/wf-node-selection-tooltip.png

注意

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

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

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

_images/wf-editor-create-new-add-template-type.png

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

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

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

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

  1. 收敛 字段中选择节点的行为,如果它是收敛节点。

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

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

如果选择,图形视图将将节点标记为 全部

_images/wf-editor-convergent-node-all.png

注意

如果节点是根节点,或没有节点收敛到它的节点,则设置 收敛 规则不适用,因为它的行为由触发它的操作决定。

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

_images/wf-editor-prompt-button-wizard.png

同样,如果工作流中使用的工作流模板在其清单选项上选择了 启动时提示,则使用向导在提示符处提供清单。如果父工作流有自己的清单,它将覆盖此处提供的任何清单。

_images/wf-editor-prompt-button-inventory-wizard.png

注意

对于具有可提示字段(这些字段是必需的,但没有默认值)的作业模板,您必须在创建节点时提供这些值,然后才能启用 选择 按钮。禁用 选择 按钮直到通过 提示 按钮提供值的两种情况是:1)在作业模板中选中 启动时提示 复选框,但未提供默认值,或者 2)创建了一个必需的调查问题,但未提供默认答案。但是,对于凭据而言,情况并非如此。创建工作流节点时,不允许 需要在启动时提供密码的凭据,因为启动节点所需的一切都必须在创建节点时提供。因此,如果作业模板提示输入凭据,Tower 会阻止您选择需要密码的凭据。

您还必须在提示向导关闭时单击 选择 以将更改应用于该节点。否则,您所做的任何更改都将恢复到实际作业模板中设置的值。

_images/wf-editor-wizard-buttons.png

创建节点后,它将使用其作业类型进行标记。与每个工作流节点关联的模板将根据选择的运行场景在运行时执行。单击指南针 (compass) 图标以显示每个运行场景及其作业类型的图例。

_images/wf-editor-key-dropdown-list.png
  1. 将鼠标悬停在节点上,您可以添加 add node 另一个节点,编辑现有链接 edit link,或删除 delete node 所选节点。

_images/wf-editor-create-new-add-template.png
  1. 完成添加/编辑节点后,单击 选择 以保存任何修改并将其渲染在图形视图上。有关构建工作流的可能方法,请参阅 节点构建场景

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

重要

单击此窗格上的 关闭 不会保存您的工作,而是关闭整个工作流可视化器,您需要重新开始。

19.7.1.1. 审批节点

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

_images/wf-node-approval-form.png

超时时间的默认值为无,但您可以指定请求过期并自动被拒绝之前的持续时间。选择并提供审批节点的信息后,它将在图形视图上显示,旁边有一个暂停 (pause) 图标。

_images/wf-node-approval-node.png

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

_images/wf-node-approval-notifications.png

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

以下显示了审批工作流允许的各种权限级别

_images/wf-node-approval-rbac.png

19.7.1.2. 节点构建场景

您可以通过单击父节点上的 add node 添加兄弟节点。

_images/wf-editor-create-sibling-node.png

您可以通过将鼠标悬停在连接两个节点的线上,直到出现 add node 来在两个节点之间插入另一个节点。单击 add node 将自动在两个节点之间插入节点。

_images/wf-editor-insert-node-template.png

要添加一个根节点来描绘拆分场景,请再次单击 start 按钮。

_images/wf-editor-create-new-add-template-split.png

在您要创建拆分场景的任何节点处,将鼠标悬停在拆分场景开始的节点上,然后单击 add node。这实际上是从同一个父节点添加多个节点,创建兄弟节点。

_images/wf-editor-create-siblings.png

注意

添加新节点时,提示 按钮也适用于工作流模板。工作流模板将提示输入清单和调查。

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

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

_images/wf-editor-create-new-add-template-example.png

请务必参考窗口顶部的键,以识别与图形表示相关的符号和颜色的含义。

注意

在一个工作流中,一组兄弟节点具有不同的边类型,并且您删除了一个与其附加了后续节点的节点,则附加的节点将自动加入兄弟节点集并保留其边类型。

_images/wf-node-delete-scenario.png

您可以通过以下方式修改节点。

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

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

_images/wf-editor-wizard-edit-link.png
  • 要从一个节点添加新链接到另一个节点,请单击出现在每个节点上的链接 edit link 图标。这样做会突出显示可以链接到的节点。这些可行的选项由虚线表示。无效选项由灰色的方框(节点)表示,否则会产生无效链接。以下示例显示了 演示项目 作为 e2e-ec20de52-project 可链接到的选项,如箭头所示。

_images/wf-node-link-scenario.png
  • 要删除链接,请单击链接并单击 取消链接 按钮。

_images/wf-editor-wizard-unlink.png

只有当目标节点或子节点具有多个父节点时,此按钮才会出现在右侧面板中。所有节点都必须始终至少与另一个节点链接,因此您必须在删除旧链接之前创建新链接。

点击设置图标 (settings) 以缩放、平移或重新定位视图。或者,您可以拖动工作流图以在屏幕上重新定位它,或者使用鼠标滚轮进行缩放。

19.8. 启动工作流模板

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

  • templates-icon 导航链接访问工作流模板列表,或在工作流模板详细信息视图中,滚动到底部以从模板列表中访问 launch 按钮。

_images/wf-templates-wf-template-launch.png
  • 在要启动的作业模板的作业模板详细信息视图中,点击启动

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

_images/wf-launch-details-page-example.png

与工作流批准相关的事件显示在活动流 (activity-stream) 中,其中包含有关批准请求的详细信息。

_images/wf-activity-stream-events.png

19.9. 复制工作流模板

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

  1. 模板导航链接 (templates-icon) 访问要复制的工作流模板,或者在工作流作业模板详细信息视图中,滚动到底部以从模板列表中访问它。

Wf templates - newly added wf template

  1. 点击 copy 按钮。

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

_images/wf-list-view-copy-example.png

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

  1. 完成后,点击保存

注意

如果资源具有相关资源,而您没有相应的权限级别,则无法复制该资源,例如,在项目使用当前用户只有读取访问权限的凭证的情况下。但是,对于工作流模板,如果其任何节点使用未经授权的作业模板、清单或凭证,则仍可以复制工作流模板。但在复制的工作流模板中,工作流模板节点中的相应字段将不存在。

19.10. 额外变量

注意

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

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

  • ask_variables_on_launch 设置为 True

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

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

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

下表说明了 Ansible Tower 中变量优先级的行为(层次结构),因为它与 Ansible 中的变量优先级进行了比较。

Ansible Tower 变量优先级层次结构(最后列出的优先级最高)

_images/Architecture-Tower_Variable_Precedence_Hierarchy-Workflows.png