我正在试图弄清楚如何使用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>,后者是正确的一个)。作为读者的参考,修复它,上面的代码将起作用。感谢。
答案 0 :(得分:1)
只需将我的评论作为答案发布,以便将问题标记为已回答:
您显示的输出具有名为instance_ids的属性,末尾带有s,但引用它的任务仅使用没有s的item.instance_id。确保您的变量名称正确无误。