这是用于 AWS 的动态库存
RHEL 7.3
python2-boto-2.45.0-3.el7.noarch
ANSABLE 版本
ansible 2.3.1.0
config file = /projects/robomation/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, Aug 2 2016, 04:20:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]
我正在运行几个资源,当我运行时
ec2.py --list
{
"_meta": {
"hostvars": {}
}
}
此外,当我尝试运行针对具有特定标签的主机的 ansible playbook 时,我得到了这个
[WARNING]: Found both group and host with same name: localhost
...
...
...
skipping: no hosts matched
我在设置动态清单以使其正常工作时遇到问题。我有 ec2.ini 和 ec2.py 文件,并且 ec2.py 已设置为可执行文件,我相信我已经正确设置了。此外,命令不返回错误,只是它在正文中不返回任何内容。
[root@robomation robomation]# env | grep ANSIBLE
ANSIBLE_HOSTS=/projects/robomation/inventory/ec2.py
[root@robomation robomation]# env | grep EC2_INI
EC2_INI_PATH=/projects/robomation/inventory/ec2.ini
[root@robomation robomation]# env | grep AWS
AWS_REGION=us-west-2
[root@robomation robomation]# inventory/ec2.py --list
{
"_meta": {
"hostvars": {}
}
}
[root@robomation robomation]# ansible --version
ansible 2.3.1.0
config file = /projects/robomation/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, Aug 2 2016, 04:20:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]
我该如何解决动态库存问题?
更新:
pip freeze
boto3==1.4.4
botocore==1.5.82
rpm -qa | grep boto
python2-boto-2.45.0-3.el7.noarch
答案1
ec2.py
动态库存用于对boto
AWS 进行 API 调用。
因此,您可能需要boto
通过运行以下命令检查是否能够连接到 AWS:
python
>>> import boto
>>> s3 = boto.connect_s3()
如果你得到如下信息:
boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials
您的凭据不正确。有几种方法可以配置boto。但为了调试目的,您可以AWS_ACCESS_KEY_ID
通过命令行简单地设置“AWS_SECRET_ACCESS_KEY”,如下所示:
export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'
使用时应IAM roles
注意:
当使用 boto 2.5.0 或更高版本时,plugins/inventory/ec2.py 支持 IAM 角色。
在分配了 IAM 角色的 EC2 实例上运行时,并且角色策略允许 ec2:Describe* 操作,ec2.py --list 将正常工作,而无需指定 aws_access_key_id 或 aws_secret_access_key。
如果 ec2.ini 定义 route53 = True 或 rds = True,则需要在角色策略中允许其他操作。github 问题