![将变量传递给 awx 工作流中的下一个剧本](https://linux22.com/image/787589/%E5%B0%86%E5%8F%98%E9%87%8F%E4%BC%A0%E9%80%92%E7%BB%99%20awx%20%E5%B7%A5%E4%BD%9C%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%89%A7%E6%9C%AC.png)
我在进行以下设置时遇到困难:
- 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 还很陌生——请问任何你需要了解的内容,以便获得充分的概述 :)