将变量传递给 awx 工作流中的下一个剧本

将变量传递给 awx 工作流中的下一个剧本

我在进行以下设置时遇到困难:

  • AWX 部署在自托管 k8s 集群中
  • 剧本正在使用 AWX-EE
  • 剧本在工作流模板中执行如下:

开始 -> 1. EC2 库存同步 -> 2. Playbook Repo 同步 -> 3. 基于 Playbook 的 EC2 实例创建(作业) -> 4. EC2 库存同步 -> 5. 运行 Playbook 以应用角色

如果它不是不言自明的:我正在尝试在 aws 中启动实例,然后为它们提供相应的系统配置。

工作流模板配置了一项调查,该调查要求用户提供客户 ID、ec2 实例类和环境(“mxenv”)。从这一点开始,第一个剧本(3.)生成一个主机名并将其保存到变量(“vpc_hostname”)。我希望此变量在第 5 步中可用。

到目前为止我尝试过

(步骤 3 中的 yaml 文件,摘录)

  - ansible.builtin.set_fact:
      vpc_hostname: "{{ customer_id }}-frontend-01.{{ mxenv }}.example.com"
    delegate_to: localhost
    delegate_facts: true
  - ansible.builtin.set_stats:
      data:
        vpc_hostname: "{{ vpc_hostname }}"
      per_host: no

步骤 5 中的 yaml 文件(摘录)

- name: Provisioning new instance starts now.
  hosts: "{{ tower_job_launch_data.artifacts.vpc_hostname }}"
  remote_user: loginuser
  become: true
  roles:
    - network

- name: Network settings done, applying software and system configuration
  hosts: "{{ tower_job_launch_data.artifacts.vpc_hostname }}"
  remote_user: loginuser
  become: true
  roles:
    - baseinfra
    - frontend

在上一个文件中,我也尝试过

  hosts: "{{ workflow_job_artifacts.vpc_hostname }}"

以及第一个文件中的内容:

      tower_job_launch_data:
        artifacts:
          vpc_hostname: "{{ vpc_hostname }}"

但是,失败后,GUI 中作业概述中显示的工件部分仍然为空,并且出现此错误:

ERROR! The field 'hosts' has an invalid value, which includes an undefined variable. The error was: 'tower_job_launch_data' is undefined. 'tower_job_launch_data' is undefined
The error appears to be in '/runner/project/post-frontend-launch.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
---
- name: Provisioning new instance starts now.
  ^ here

我已经坐在这台电脑前好几个小时了,完全没有头绪,而且,我对 AWX 还很陌生——请问任何你需要了解的内容,以便获得充分的概述 :)

相关内容