使用Ansible迭代结果数组

时间:2015-11-27 22:57:14

标签: amazon-ec2 ansible ansible-playbook

我正在试图弄清楚如何使用Ansible迭代结果数组。

我正在启动一些 AWS EC2 实例,如下所示:

- name: ec2-static-instances
  ec2:
    <all atributes here...>
  with_itens:
    - instance1
    - instance2
  register: instances

好的,然后我在一个哈希/字典数组中得到上面实例的结果。我能够像这样得到每个实例id:

{{ instances.results[0].instance_ids[0] }}
{{ instances.results[1].instance_ids[0] }}

但是,我想让它更具动态性,而不需要事先知道我在数组中有多少元素。我尝试了类似的东西,但它不起作用。

# Elastic IPs for instances created above
- name: eip_static_instances
  ec2_eip:
    region: us-east-1
    in_vpc: yes
    instance_id: "{{ item.instance_id[0] }}"
  with_items:
   - "{{ instances.results }}"

我收到以下错误:

致命:[127.0.0.1]:失败! =&GT; {“failed”:true,“msg”:“错误!'dict对象'没有属性'instance_id'”}

我浏览了官方文档,但是那里显示的示例似乎都没有我想做的事情。有没有人有线索?

谢谢。

更新

事实证明我的问题是变量名称的简单错误,正如任何人都可以看到的那样( item.instance_id 而不是 item.instance_id s < / em>,后者是正确的一个)。作为读者的参考,修复它,上面的代码将起作用。感谢。

1 个答案:

答案 0 :(得分:1)

只需将我的评论作为答案发布,以便将问题标记为已回答:

您显示的输出具有名为instance_ids的属性,末尾带有s,但引用它的任务仅使用没有s的item.instance_id。确保您的变量名称正确无误。