Ansible Tower-set_属性似乎不起作用

Ansible Tower-set_属性似乎不起作用,ansible,ansible-2.x,ansible-tower,Ansible,Ansible 2.x,Ansible Tower,寻求一些指导: 我有一个三步工作流程-前两个模板使用set_stats设置一些事实数据。例如: - set_stats: data: xldeploy_workstation_host : "{{ hostvars['localhost']['targethost'] }}" when: tower_job_id is defined 及 在第三个模板中,它使用app\u系统变量,如下所示: - name: Run {{ app_system }} playbook

寻求一些指导:

我有一个三步工作流程-前两个模板使用
set_stats
设置一些事实数据。例如:

- set_stats:
    data:
      xldeploy_workstation_host : "{{ hostvars['localhost']['targethost'] }}"
  when: tower_job_id is defined

在第三个模板中,它使用
app\u系统
变量,如下所示:

- name: Run {{ app_system }} playbook
  import_playbook: "{{ app_system }}.yml"
但是,我收到以下错误消息:

ERROR! 'app_system' is undefined
通过查看工作流中前面步骤的日志,我可以看出
set_stats
起到了作用:

ok: [1.2.3.4] => {
    "ansible_stats": {
        "aggregate": true, 
        "data": {
            "xldeploy_workstation_host": "*host.fqdn*"
        }, 
        "per_host": false
    }, 
    "changed": false
}

不确定为什么工作流中的最后一步没有提取
set_stats
数据-根据文档,它看起来应该可以工作

我使用的是Tower版本3.2.2和Ansible版本2.4.3.0

读取的
设置统计数据
这只是用来保存一些关于playbook运行的数据,因此不能用于变量

如果要定义名为
{{app_system}}
的变量,需要设置变量值或设置事实。

而不是

- set_stats:
    data:
      app_system: "{{ system | lower }}"
尝试使用模块
设置\u fact
,如下所示:

- set_fact:
    app_system: "{{ system | lower }}"
之后,您应该能够使用通常的
{{app_system}
获取变量值。但是这个变量是为您正在播放的主机设置的

如果您想在一个重头戏(为某个主持人#1播放)中设置一个变量,并想在另一个重头戏(为另一个主持人#2播放)中获取其值,您应该在第二个重头戏中使用类似的内容:

- set_fact:
    app_system: "{{ hostvars[host_#1][foo] }}"
然后,您可以在第二个剧本中再次使用
{{app_system}

Hi-阅读,示例显示运行剧本,使用
set_stats
设置变量,然后在工作流中的另一个剧本中使用该变量-请参阅步骤
2。通过invoke_set_stats playbook,set_stats随后被调用,以将上传的integration_results.txt的URL工件化到Ansible变量“integration_results_URL”中。
这正是我试图实现的。
- set_fact:
    app_system: "{{ system | lower }}"
- set_fact:
    app_system: "{{ hostvars[host_#1][foo] }}"