微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Ansible ec2.py无法正常工作

我有问题让它使用ec2.py脚本来动态库存.

在CentOS 7上安装了ansible:

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum --enablerepo=epel install ansible

配置简单的hosts文件和ssl密钥访问.运行ansible:

ansible all -m ping

获得预期的输出. Ansible正在工作.

安装的aws-cli:

wget -q https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
unzip awscli-bundle.zip
./awscli-bundle/install -i /opt/aws -b /usr/bin/aws

在〜/ .aws中配置凭证文件.运行aws:

aws ec2 describe-instances

获得预期的输出. Aws-cli正在运作.

已安装boto.

yum --enablerepo=epel install python2-boto

从官方文档(http://docs.ansible.com/ansible/latest/intro_dynamic_inventory.html#example-aws-ec2-external-inventory-script)中下载链接中的ec2.py和ec2.ini.运行它我收到以下错误

[root@vm09 ansible]# ./ec2.py --list
Traceback (most recent call last):
  File "./ec2.py", line 1642, in <module>
    Ec2Inventory()
  File "./ec2.py", line 193, in __init__
    self.do_api_calls_update_cache()
  File "./ec2.py", line 525, in do_api_calls_update_cache
    self.get_instances_by_region(region)
  File "./ec2.py", line 615, in get_instances_by_region
    self.add_instance(instance, region)
  File "./ec2.py", line 934, in add_instance
    if self.group_by_platform:
AttributeError: 'Ec2Inventory' object has no attribute 'group_by_platform'

尝试从git和pip安装ansible,与boto相同.总是得到同样的错误.

在这里缺少什么?

解决方法:

好的,所以如果你看一下引入group_by_platform功能的PR:

https://github.com/ansible/ansible/pull/27848/files

您可以看到代码通过分组选项的可能属性.这些属性在脚本中更高可用:

https://github.com/ansible/ansible/blob/devel/contrib/inventory/ec2.py#L435-L462

set_tr循环迭代的列表中缺少group_by_platform属性.添加它,它会工作.

这实际上是现在修复的(两小时前):

https://github.com/ansible/ansible/commit/223f94ec563eb0f5fb95465bf440ffddd7828f8b

从git中提取最新内容它应该可以正常工作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐