Amazon-Web-Services

ansible 動態庫存無法正常工作

  • October 22, 2018

這是用於與 AWS 一起使用的動態清單

RHEL 7.3

python2-boto-2.45.0-3.el7.noarch

ANSIBLE 版本

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 劇本時,我得到了這個

[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

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時應注意:

IAM 角色在使用 boto 2.5.0 或更高版本時受 plugins/inventory/ec2.py 支持。

在分配了 IAM 角色且角色策略允許 ec2:Describe* 操作的 EC2 實例上執行時,ec2.py –list 無需指定 aws_access_key_id 或 aws_secret_access_key 即可工作。

如果 ec2.ini 定義 route53 = True 或 rds = True,則需要在角色策略中允許其他操作。github問題

引用自:https://serverfault.com/questions/861407