Ansible ec2.py无法正常工作

时间:2017-08-09 13:09:14

标签: python amazon-web-services ansible

我有问题让它使用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相同。总是得到同样的错误。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

好的,所以如果你看一下引入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

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

现在实际上已经修复了(两小时前):

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

从git中取出最新版本,它应该可以正常工作。