第 22 章 自动化控制器中的工作流
工作流允许您配置一系列不同的作业模板(或工作流模板),它们可能或不共享清单、playbook 或权限。
工作流具有
和执行权限,类似于作业模板。工作流完成的任务是将属于发布过程一部分的完整作业集合作为一个单元来跟踪。
管理员
作业或工作流模板使用类似图形的结构(称为节点)链接在一起。这些节点可以是作业、项目同步或清单同步。模板可以是不同工作流的一部分,也可以在同一工作流中多次使用。在启动工作流时,图形结构的副本会保存到工作流作业中。
以下示例显示了包含所有三个工作流以及工作流作业模板的工作流:

当工作流运行时,作业会从节点的链接模板生成。链接到具有提示驱动的字段(job_type、job_tags、skip_tags、limit)的节点可以包含这些字段,且不会在启动时提示。提示凭证或清单的作业模板没有默认值,无法包含在工作流中。
22.1. 工作流场景和注意事项
在构建工作流时,请考虑以下事项:
- 根节点默认设置为 ALWAYS,且无法编辑。

- 节点可以有多个父项,子项可以链接到任何 success, failure, 或 always 状态。如果为 always,则状态既不会成功,也没有失败。State 在节点级别应用,而不是在工作流作业模板级别应用。工作流作业标记为成功,除非被取消或遇到错误。

- 如果您删除工作流中的作业或工作流模板,则之前连接到删除的节点会自动连接上游,并保留边缘类型,如下例所示:

您可以有一个聚合的工作流,其中多个作业聚合成一个。在这种情况下,任何作业或所有作业都必须在下一个运行前完成,如下例所示:
- 在本例中,自动化控制器会并行运行前两个作业模板。当它们都按照指定完成并成功时,第三个下游(聚合节点)会触发。
- 应用于工作流作业模板中的工作流节点的清单和问卷调查提示。
-
如果从 API 启动,运行
get
命令会显示一个警告列表并突出显示缺少的组件。下图演示了工作流作业模板的基本工作流:

- 可以同时启动多个工作流,并为启动它们的时间设置一个调度。您可以在工作流上设置通知,如作业完成时,类似于作业模板的通知。
注意
- 您可以构建递归工作流,但如果自动化控制器检测到错误,它会在嵌套工作流尝试运行时停止。
- 在子工作流的作业中收集到的工件会被传递给下游节点。
- 清单可以在工作流级别设置,或在启动时提示设置清单。
-
启动后,带有
ask_inventory_on_launch=true
的工作流中的所有作业模板都使用工作流级别清单。 - 不提示清单的作业模板会忽略工作流清单,并针对自己的清单运行。
- 如果工作流提示提供清单,调度和其他工作流节点可以提供清单。
-
在工作流聚合场景中,
set_stats
数据会以未定义的方式合并,因此您必须设置唯一的键。