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 模块处理此工作流,如下所示:

  1. 集成结果的内容将上传到 web。
  2. 通过 invoke_set_stats playbook,调用 set_stats 将上传的 integration_results.txt 的 URL 打包到 Ansible 变量 "integration_results_url"。
  3. 工作流中的第二个 playbook 使用 Ansible 额外变量 "integration_results_url"。它使用 uri 模块调用 Web,以获取上一作业模板作业上传的文件内容。然后,它会输出获取的 文件的内容。
注意

要使工件正常工作,请在 set _stats 模块中保留每个_host = False 的默认设置。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.