ansible 动态库存无法正常工作

ansible 动态库存无法正常工作

这是用于 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动态库存用于对botoAWS 进行 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 问题

相关内容