使用属性名作为其他变量访问ansible变量属性

使用属性名作为其他变量访问ansible变量属性,ansible,ansible-facts,Ansible,Ansible Facts,我有以下代码: - name: "Get output from ec2.py" shell: python convinventory/ec2.py register: ec2_py_output - set_fact: EC2_MY_AP_HOST: "{{(ec2_py_output.stdout | from_json ).myIPs[0]}}" - set_fact: EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | fro

我有以下代码:

- name: "Get output from ec2.py"
  shell: python convinventory/ec2.py
  register: ec2_py_output
- set_fact:
    EC2_MY_AP_HOST: "{{(ec2_py_output.stdout | from_json ).myIPs[0]}}"
- set_fact:
    EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | from_json)._meta.hostvars. }}-{{EC2_IFX_AP_HOST}} "    //Need to know the syntax on this line
我确认
EC2\u MY\u AP\u HOST
返回类似
10.0.1.2

我从
python/ec2.py
收到的json结构如下所示:

{
  "_meta": {
    "hostvars": {
      "10.0.1.2": {

    < need to access this data in EC2_MY_AP_DATA > 
}
} } }
{
“_meta”:{
“hostvars”:{
"10.0.1.2": {
<需要访问EC2\u MY\u AP\u数据中的此数据>
}
} } }

访问此数据的正确方法是什么?

回答您的问题:

- set_fact:
    EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | from_json)._meta.hostvars[EC2_MY_AP_HOST] }}"

但我的猜测是,您走错了路,您试图用这段代码解决的任务有不同的解决方案。

我试图理解这个问题,但我做不到。
10.0.1.2
10.0.36.13
之间有什么关系?
myIPs
列表存储在哪里(为什么不在您发布的示例中,当然不是为了清楚,因为根本不清楚)?您需要访问哪些数据?以何种方式访问?你是在问在圆点后面放什么(怎么会有人知道)?您是否在询问如何参考字典
10.0.36.13
(所有文档和常见问题解答中都描述了访问同名的事实
hostvars
)?