Ansible: register: ec2 / with_items: ec2.instances - 结果是“str 对象没有属性”

创建于 2015-06-18  ·  3评论  ·  资料来源: ansible/ansible

我有一本与在线示例非常相似的剧本:


任务:
- 名称:创建一个 EC2 实例
ec2:
[-剪-]
注册:ec2
- 名称:打印
调试: msg="item 有 - {{ item.public_ip }}"
with_items: ec2.instances


这给出了错误:


致命:[localhost] => 一个或多个未定义的变量:'str object' 没有属性 'public_ip'

如果我将其更改为 {{ item }} 我会看到:

任务:[打印] * * * * * * * * * * * * * * * * * * * *
好的:[本地主机] => (item=ec2.instances) => {
"item": "ec2.instances",
"msg": "项目有 - ec2.instances"
}


'ec2.instances' 似乎只是一个字符串? 最后,如果我使用“with_items: ec2.results”,我可以遍历它,但我必须将它引用为 item.instances.0.public_ip

知道为什么 ec2_instances 看起来是一个字符串而不是字典吗?

编辑:
: arp_kiki/pts/55:0.08:new; ansible --version ansible 1.5.4

升级后:

好的:[本地主机] => (item=ec2.instances) => {
"item": "ec2.instances",
"msg": "项目有 - ec2.instances"
}

播放回顾* * * * * * * * * * * * * * * * * * * * * *
本地主机:ok=2 更改=1 无法访问=0 失败=0

: arp_kiki/pts/55:0.31:new; ansible --version
安全的 1.9.1

最有用的评论

明白了。 我认为这是一个错误,因为我正在关注文档并得到不同的结果。

所有3条评论

你好!

非常感谢您对 Ansible 的关注。 它真诚地对我们意义重大。

这似乎是一个用户问题,我们希望将这些内容发送到邮件列表或 IRC 频道。

另一个原因是因为使用了 with_items 因此会有多个实例,并且每个实例的创建结果都存储在 ec2.results 字典中。 如果只有一个实例创建避免 with_items 那么你应该得到你需要的或者如果你有多个实例要创建然后获得公共 ip 的 with_items 使用:ec2.results 和 item.public_ip

IRC:irc.freenode.net 上的 #ansible
邮件列表: https: //groups.google.com/forum/#!forum/ansible -project
如果你能在那里停下来,我们将不胜感激。 这使我们能够保持问题跟踪器的错误、拉取请求、RFE 等。

再次感谢您,我们期待在名单或 IRC 上见到您。 谢谢!

明白了。 我认为这是一个错误,因为我正在关注文档并得到不同的结果。

由于犯了同样的“用户错误”,我才来到这个线程, @bennojoy非常简洁地描述了原因。 发现这是一个非常“不明显”的情况,至少在 ec2 模块文档的示例中,参考这个会很棒,因为with_items将是一个非常常见的模式在设置的可用区中管理系统。

此页面是否有帮助?
0 / 5 - 0 等级