我有问题让它使用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相同。总是得到同样的错误。
我在这里缺少什么?
答案 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中取出最新版本,它应该可以正常工作。