:term:`workflow job template`将一个由不同资源组成的序列链接在一起,完成的任务是将属于发布过程一部分的完整作业集合作为一个单元来跟踪。这些资源可能包括:
作业模板
工作流模板
项目同步
清单源同步
The Templates menu opens a list of the workflow and job templates that are currently available. The default view is collapsed (Compact), showing the template name, template type, and the statuses of the jobs that ran using that template, but you can click Expanded to view more information. This list is sorted alphabetically by name, but you can sort by other criteria, or search by various fields and attributes of a template. From this screen, you can launch (), edit (), and copy () a workflow job template.
只有工作流模板具有工作流可视化工具图标 () 作为访问工作流编辑器的快捷方式。
注解
工作流模板可以用作另一个工作流模板的构建块。工作流模板中的许多参数允许您启用 Prompt on Launch,这些参数可在工作流作业模板级别进行修改,且不会影响在单独工作流模板级别分配的值。如需了解相关说明,请参阅 工作流可视化工具 部分。
要创建新工作流作业模板,请执行以下操作:
点击 按钮,然后从菜单列表中选择 Workflow Template。
在以下字段中输入相关信息:
注解
If a field has the Prompt on launch checkbox selected, launching the workflow template, or when the workflow template is used within another workflow template, it will prompt for the value for that field upon launch. Most prompted values will override any values set in the workflow job template; exceptions are noted below.
Field |
Options |
Prompt on Launch |
---|---|---|
Name |
Enter a name for the job. |
N/A |
Description |
Enter an arbitrary description as appropriate (optional). |
N/A |
Organization |
Choose the organization to be used with this template from the organizations available to the currently logged in user. |
N/A |
Inventory |
Optionally choose the inventory to be used with this template from the inventories available to the currently logged in user. |
Yes |
Limit |
A host pattern to further constrain the list of hosts managed or affected by the playbook. Multiple patterns can be separated by colons ( |
Yes |
Source control branch |
Select a branch for the workflow. This branch is applied to all workflow job template nodes that prompt for a branch. |
Yes |
Labels |
|
|
Variables |
|
|
Job Tags |
Begin typing and selecting the Create x drop-down to specify which parts of the playbook should be executed. For more information and examples refer to Tags in the Ansible documentation. |
Yes |
Skip Tags |
Begin typing and selecting the Create x drop-down to specify certain tasks or parts of the playbook to skip. For more information and examples refer to Tags in the Ansible documentation. |
Yes |
Options: Specify options for launching this workflow job template, if necessary.
Check Enable Webhooks to turn on the ability to interface with a predefined SCM system web service that is used to launch a workflow job template. Currently supported SCM systems are GitHub and GitLab.
如果您启用 Webhook,会显示其他字段,提示输入更多信息:
Webhook Service:从中选择侦听 Webhook 的服务
**Webhook Credential**(可选):提供 GitHub 或 GitLab 个人访问令牌 (PAT) 作为凭证,用来向 Webhook 服务发回状态更新。在可以选择之前,凭证必须存在。请参阅 凭证类型 以创建一个凭证。
Save 后,会填充其他字段并自动打开工作流可视化工具。
Webhook URL:自动填充将 POST 请求发送到的 Webhook 服务的 URL。
Webhook Key:生成的共享 secret,供 Webhook 服务用来签署发送到 automation controller 的有效负载。必须在 Webhook 服务上的设置中对此进行配置,以使 automation controller 接受来自该服务的 Webhook。
有关设置 Webhook 的更多信息,请参阅 使用 Webhook。
选中 Enable Concurrent Jobs 以允许同时运行此工作流。如需了解更多信息,请参阅 自动化控制器容量确定和作业影响。
当您完成工作流模板配置后,请点击 Save。
Saving the template exits the workflow template page and the Workflow Visualizer opens to allow you to build a workflow. See the 工作流可视化工具 section for further instructions. Otherwise, you may close the Workflow Visualizer to return to the Details tab of the newly saved template in order to review, edit, add permissions, notifications, schedules, and surveys, or view completed jobs and build a workflow template at a later time. Alternatively, you can click Launch to launch the workflow, but you must first save the template prior to launching, otherwise, the Launch button remains grayed-out. Also, note the Notifications tab is present only after the template has been saved.
点击 Notifications 可以查看您设置的任何通知集成。只有在保存了模板后,Notifications 标签页才会显示。
请使用切换按钮启用或禁用要与特定模板搭配使用的通知。更多详情请参阅 启用和禁用通知。
如果没有设置通知,请参阅 创建通知模板。
有关配置各种通知类型的其他详情,请参阅 通知类型。
Completed Jobs 标签页提供了已运行的工作流模板列表。点击 Expanded 查看每个作业的各种详情。
从此视图中,您可以点击作业 ID - 工作流作业的名称并查看其图形表示。以下示例显示了一个工作流作业的作业详情。
您可以点击 Schedules 来查看为此模板设置的所有计划。
在工作流作业模板创建或编辑屏幕中,包含运行或检查作业类型的工作流将提供一种设置问卷调查的方法。问卷调查为 playbook 设置额外变量,类似于“Prompt for Extra Variables”,但是以用户友好的问答方式进行。问卷调查还可允许验证用户输入。点 **Survey**标签页创建问卷调查。
问卷调查的用例有很多。例如,运营人员可能希望向开发人员提供一个无需高级 Ansible 知识即可运行的“推送到阶段”按钮。启动时,该任务可能会提示输入问题的回答,例如:“我们应该发布什么标签?”
可以询问很多类型的问题,包括多项选择题。
要创建问卷调查,请执行以下操作:
点 Survey 标签页弹出 Add Survey 窗口。
使用屏幕顶部的 ON/OFF 切换按钮来快速激活或取消激活本次调查提示。
问卷调查可由任何数量的问题组成。对每个问题,请输入以下信息:
Name:询问用户的问题。
**Description**(可选):向用户询问的问题描述。
Answer Variable Name:将用户回答存储在其中的 Ansible 变量名称。这是供 playbook 使用的变量。变量名称不能包含空格。
Answer Type:从以下问题类型中选择。
Text:单行文本。您可以为该回答设置最小和最大长度(字符数)。
Textarea:多行文本字段。您可以为该回答设置最小和最大长度(字符数)。
Password:回答被视为敏感信息,和实际密码的处理方式很像。您可以为该回答设置最小和最大长度(字符)。
Multiple Choice (single select):选项列表,每次只能选择其中一个选项。请在 Multiple Choice Options 框中输入选项,每行一个。
Multiple Choice (multiple select):列表选项,每次可选择其中任意数量的选项。在 Multiple Choice Options 框中输入选项,每行一个。
Integer:整数。您可以为该回答设置最小和最大长度(字符数)。
Float:小数。您可以为该答案设置最小和最大长度(字符数)。
Default Answer:根据所选的类型,您可以问题的默认回答。这个值在界面中预先填充,并在用户未提供回答时使用。
Required:用户是否需要回答这个问题。
输入问题信息后,点 Add 按钮添加问题。
调查的样式化版本显示在 Preview 窗格中。对于任何问题,您可以点击 Edit 按钮编辑问题,Delete 按钮删除问题,然后点击并拖动网格图标来重新安排问题的顺序。
返回左窗格以添加其他问题。
完成后,点击 Save 保存问卷调查。
问卷调查问题的 Required 设置决定了对于与之交互的用户,回答是不是可选的。
在后台,可选的问卷调查变量可在 extra_vars
中传递给 playbook,即使没有填写也一样。
如果非文本变量(输入类型)标记为可选,且未填写,则不会将任何问卷调查 extra_var
传递给 playbook。
如果文本输入或文本区域输入标记为可选,未填充,且最小 length > 0
,则不会将任何问卷调查 extra_var
传递给 playbook。
如果文本输入或文本区域输入标记为可选,未填写,且最小 length === 0
,则会将该问卷调查 extra_var
传递给 playbook,并将值设为空字符串 ( "" )。
工作流可视化(Workflow Visualizer)是以图形化的方式将作业模板、工作流模板、项目同步和清单同步链接在一起以构建工作流模板的工具。在构建工作流模板之前,请参考 工作流 部分,以了解与父节点、子节点和同级节点的不同场景相关的注意事项。
您可以设置以下两个或更多节点类型的任意组合来构建工作流:模板(作业模板或工作流作业模板)、项目同步、清单同步或批准。每个节点都以矩形表示,而关系及其关联的边缘类型由连接它们的直线(或链接)表示。
在工作流模板的详情/编辑视图中,点 Visualizer 标签页或从 Templates 列表中点击()图标来启动工作流可视化工具。
点击 按钮显示要添加到工作流中的节点列表。
在右侧的窗格中,从下拉菜单中选择您要添加的节点类型:
如果选择一个 Approval 节点,请参阅 批准节点 了解更多详情。
选择节点会提供与其关联的可用的有效选项。
注解
如果在填充工作流图形时选择了没有默认清单的作业模板,则会使用父工作流的清单。虽然作业模板中不需要凭证,但如果作业模板具有需要密码的凭证,则您无法为工作流选择该作业模板,除非将凭证替换为提示的凭证。
选择节点后,工作流即开始构建,且您必须指定要为所选节点执行的操作类型。此操作也称为*边缘类型*。
如果是根节点,边缘类型默认为 Always,且不可编辑。
对于后续节点,您可以选择以下场景(类型)之一以应用到每个节点:
Always:无论成功还是失败都继续执行。
On Success:成功完成后执行下一个模板。
On Failure:失败后执行不同的模板。
如果是来自 Convergence 字段中的一个聚合节点,请选择其行为:
Any 是默认行为,它允许在触发下一个聚合节点前,只要*任何*节点如指定一般完成就可以。当一个父对象的状态满足其中一个运行状况,就会运行一个 ANY 子节点。换句话说,一个 ANY 节点需要**所有** 节点完成,但只有一个节点必须按预期完成。
选择 All 来确保在聚合并触发下一个节点前,*所有*节点都如指定一般完成。使用 ALL 节点的目的是为了确保每个父节点都满足其预期结果后才运行子节点。工作流检查确保每个父节点都按预期执行,以便运行子节点。否则,它不会运行子节点。
如果选择,在视图中会将节点标记为 ALL。
注解
如果某个节点是根节点,或者没有与其聚合的节点,设置 Convergence 规则并不会其作用,它的行为是由触发节点的操作决定的。
如果工作流中使用的作业模板为其任何参数选择了 Prompt on Launch,则会出现 Prompt 按钮,供您在节点级别更改这些值。使用向导更改每个标签页中的只值,在 Preview 标签页中点 Confirm。
同样,如果工作流中使用的工作流模板为清单选项选择了 Prompt on Launch,则使用向导在提示符处提供清单。如果父工作流有自己的清单,它将覆盖在此提供的任何清单。
注解
For workflow job templates with promptable fields that are required, but do not have a default, you must provide those values when creating a node before the Select button becomes enabled. The two cases that disable the Select button until a value is provided via the Prompt button: 1) when you select the Prompt on Launch checkbox in a workflow job template, but do not provide a default, or 2) when you create a survey question that is required but do not provide a default answer. However, this is NOT the case with credentials. Credentials that require a password on launch are not permitted when creating a workflow node, since everything needed to launch the node must be provided when the node is created. So, if a workflow job template prompts for credentials, automation controller prevents you from being able to select a credential that requires a password.
当提示向导关闭时,您还必须点击 Select 以将更改应用到该节点。否则,您所做的任何更改都将恢复到实际作业模板中设置的值。
当节点被创建后,它会使用它的作业类型标记。与每个工作流节点关联的模板将根据进行过程中所选的运行场景运行。点击指南针 () 图标可显示每个运行场景及其作业类型的图例。
将鼠标悬停在节点上可以添加 另一个节点,查看节点的 info ,编辑 节点详情,编辑现有链接 ,删除 所选节点。
完成节点添加/编辑后,请点击 Select 以保存任何修改并将其呈现在图形视图中。有关构建工作流的可用方式,请参阅 节点构建场景。
When done with building your workflow template, click Save to save your entire workflow template and return to the new workflow template details page.
重要
在此窗格上点击 Close 不会保存您的工作,而是会关闭整个工作流可视化工具,您必须重新开始。
选择 Approval 节点需要用户干预来推进工作流。此操作可用于在 playbook 间暂停工作流,以便用户批准继续到工作流中的下一个 playbook ,给用户指定的时间进行干预,此外,用户也可以尽快继续操作,而不需要等待某个其他触发器。
超时的默认设置是 none,但您可以指定请求到期并自动被拒绝前的时间限度。选择并提供批准节点的信息后,它会显示在图形视图中,旁边带有一个暂停 () 图标。
批准者是可以执行包含批准节点的工作流作业模板、具有机构管理员或以上权限(针对与该工作流作业模板关联的机构)的任何人,或在该特定工作流作业模板中被明确分配了 Approve 权限的任何用户。
如果待批准的节点没有在指定的时间限制内获得批准(如果分配了过期时间),或者被拒绝,则会分别被标记为“timed out”或“failed”,并移动到下一个“on fail 节点”或 "always 节点"。如果获得批准,则会采用“on success”路径。如果您尝试在 API 中 POST 到已经批准、拒绝或超时的节点,则会出现错误消息,通知您此操作是多余的,且不会再执行任何步骤。
以下显示了在批准工作流中允许的各种权限级别:
您可以点击父节点上的 按钮添加同级节点:
您可以在节点间插入另一个节点,方法是将鼠标悬停在连接这两个节点的直线上,直到 出现。点击 在两个节点间自动插入节点。
要添加一个根节点来描述分割场景,请再次点击 按钮:
在您要创建分割场景的任意节点处,将鼠标悬停在分割场景的起始节点上并点击 。这实质上会从同一父节点添加多个节点,创建同级节点:
注解
添加新节点时,PROMPT 按钮也会应用于工作流模板。工作流模板将提示设置清单和问卷调查。
如果您要撤消最后一个插入的节点,请点击另一个节点,而无需从右窗格中进行选择。或者,点击右窗格中的 Cancel。
下面是一个工作流示例,它包含由一个作业模板启动的所有三种类型的作业,如果运行失败,继续执行项目同步作业,而无论该作业是失败还是成功,都继续执行清单同步作业。
请参考窗口顶部的图例来识别与图形描述相关的符号和颜色的含义。
注解
在带有一组具有不同边缘类型的同级节点的工作流中,如果您删除了附加有后续节点的节点,则附加节点会自动加入同级节点组,并保留其边缘类型:
您可以通过以下方法修改节点:
如果您要编辑节点,请点击相关节点。右窗格显示当前的选择。进行更改并点击 Select 将它们应用到图形视图。
要编辑现有链接的边缘类型(success/failure/always),请点击相关链接。右窗格显示当前选择。进行更改并点击 Save 将它们应用到图形视图。
要将新链接从一个节点添加到另外一个节点,请点击每个节点上出现的链接 图标。此操作会突出显示可以链接到的节点。这些可用的选项由虚线表示。无效的选项由灰显框(节点)表示,否则会产生无效的链接。以下示例显示了 Demo Project 作为 e2e-ec20de52-project 可能链接的选项,如箭头所示:
要删除链接,点击链接并点击 Unlink 按钮。
只有当目标节点或子节点有多个父节点时,此按钮才会出现在右侧面板中。所有节点始终都必须链接到至少一个其他节点,因此您必须在删除旧链接前创建一个新链接。
点击设置按钮 () 对视图进行缩放、平移或位置调整。或者,您可以拖动工作流图来调整它在屏幕上的位置,或使用鼠标滚轮来缩放。
通过以下任一方法启动工作流模板:
Access the workflow templates list from the Templates menu on the left navigation bar or while in the workflow template Details view, scroll to the bottom to access the button from the list of templates.
While in the Workflow Job Template Details view of the job you want to launch, click Launch.
Along with any extra variables set in the workflow job template and survey, automation controller automatically adds the same variables as those added for a workflow job template upon launch. Additionally, automation controller automatically redirects the web browser to the Jobs Details page for this job, displaying the progress and the results.
与工作流上的批准相关的事件显示在活动流 () 中,包含有关批准请求的详细信息(如果存在)。
automation controller 提供了复制工作流模板的功能。选择复制工作流模板时,**不会**复制任何关联的计划、通知或权限。计划和通知必须由创建工作流模板副本的用户或管理员重新创建。将为复制工作流模板的用户授予管理员权限,但不会将任何权限分配(复制)到工作流模板。
从左侧导航栏上的 Templates 菜单或在工作流作业模板详情视图中访问您要复制的工作流模板,滚动到底部以从模板列表中访问它。
点击 按钮。
此时会打开一个新模板,带有作为复制来源的模板的名称和一个时间戳。
选择复制的模板,然后将 Name 字段的内容替换为新名称,并提供或者修改其他字段中的条目以完成此模板。
完成后请点击 Save。
注解
如果资源具有您没有正确权限级别的相关资源,则您无法复制该资源,比如项目使用了当前用户仅具有 Read 访问权限的凭证。但是,对于工作流模板,如果其任何节点使用了未经授权的作业模板、清单或凭证,则仍可复制工作流模板。但是,在复制的工作流模板中,工作流模板节点中的相应字段将缺失。
注解
只有在以下条件之一被满足时,传递给作业启动 API 的 extra_vars
才有效:
它们与启用的问卷调查(survey)中的变量对应
ask_variables_on_launch
被设为 True
当您传递问卷调查变量时,它们作为额外的变量 (extra_vars
) 传递。这可能很棘手,因为将额外变量传递给工作流模板(就像对问卷调查的操作一样)可能会覆盖从清单和项目传递的其他变量。
例如,假设您为清单定义了一个变量 debug = true
。在工作流模板问卷调查中完全有可能覆盖 debug = true
这个变量。
为确保不覆盖您需要传递的变量,请通过在问卷调查中重新定义变量来确保将其包括在内。请记住,可以在清单、组和主机级别定义额外的变量。
下表记录了 automation controller 中的变量优先级的行为(层次结构)与 Ansible 中的变量优先级比较情况。
变量优先级层次结构(最后列出的优先)