22.2. 工作流额外变量
工作流使用调查来指定工作流中 playbook 中使用的变量,称为 extra_vars
。问卷调查变量与工作流作业模板上定义的 extra_vars
合并,并保存到工作流作业 extra_vars
中。在工作流内生成作业时,工作流作业中的 extra_vars
与作业模板变量合并。
工作流使用与作业模板相同的变量优先级行为(层次结构),但有三个额外变量除外。请参阅作业模板的额外变量部分中的 自动化控制器变量优先级层次结构。三个额外变量包括:
- 工作流作业模板额外变量
- 工作流作业模板问卷调查(defaults)
- 工作流作业启动额外变量
工作流中包含的工作流遵循相同的变量优先级,它们仅在特别提示或定义为调查的一部分时继承变量。
除了工作流 extra_vars
外,作为工作流的一部分运行的作业和工作流还可继承工作流中父作业的工件字典中的变量(也与分支中上游的祖先合并)。它们可由 set_stats
Ansible 模块 定义。
如果在 playbook 中使用 set_stats
模块,您可以生成可供下游其他作业使用的结果。
Example
向用户通知用户集成运行是成功还是失败。在本例中,工作流中可以合并两个 playbook,用于操作工件传递:
- invoke_set_stats.yml: 工作流中的第一个 playbook:
--- - hosts: localhost tasks: - name: "Artifact integration test results to the web" local_action: 'shell curl -F "file=@integration_results.txt" https://file.io' register: result - name: "Artifact URL of test results to Workflows" set_stats: data: integration_results_url: "{{ (result.stdout|from_json).link }}"
- use_set_stats.yml: second playbook in the workflow:
--- - hosts: localhost tasks: - name: "Get test results from the web" uri: url: "{{ integration_results_url }}" return_content: true register: results - name: "Output test results" debug: msg: "{{ results.content }}"
set_stats
模块处理此工作流,如下所示:
- 集成结果的内容将上传到 web。
-
通过
invoke_set_stats
playbook,调用set_stats
将上传的integration_results.txt
的 URL 打包到 Ansible 变量 "integration_results_url"。 - 工作流中的第二个 playbook 使用 Ansible 额外变量 "integration_results_url"。它使用 uri 模块调用 Web,以获取上一作业模板作业上传的文件内容。然后,它会输出获取的 文件的内容。
要使工件正常工作,请在 set
的默认设置。
_stats
模块中保留每个_host = False