динамическая инвентаризация ansible не работает должным образом

Это для динамической инвентаризации для использования с AWS

RHEL 7.3

python2-boto-2.45.0-3.el7.noarch

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)]

У меня работает несколько ресурсов, и когда я запускаю

ec2.py --list

{
  "_meta": {
    "hostvars": {}
  }
}

Также, когда я пытаюсь запустить доступные playbooks, нацеленные на хосты с определенными теги, я получаю это

[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
2
задан 16 July 2017 в 02:24
1 ответ

Динамический инвентарь ec2.py использует boto для выполнения вызовов API к AWS.

Так что вы можете проверить, boto может подключиться к AWS, запустив:

python
>>> import boto
>>> s3 = boto.connect_s3()

, если вы получите что-то вроде этого:

boto.exception.NoAuthHandlerFound: Ни один обработчик не был готов к аутентификации. Проверено 1 обработчика. ['HmacAuthV1Handler'] Проверьте свои учетные данные

ваши учетные данные неверны. Есть несколько способов настроить boto. Но для целей отладки вы можете просто установить AWS_ACCESS_KEY_ID и `AWS_SECRET_ACCESS_KEY 'через командную строку следующим образом:

export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'

При использовании ролей IAM вы должны отметить, что:

Поддерживаются роли IAM by plugins / inventory / ec2.py при использовании boto 2.5.0 или выше.

При работе на экземпляре EC2, которому назначена роль IAM, а политика ролей разрешает действие ec2: Describe *, ec2.py - list будет работать без необходимости указывать aws_access_key_id или aws_secret_access_key.

Дополнительные действия должны быть разрешены в политике ролей, если ec2.ini определяет route53 = True или rds = True. проблема с github

4
ответ дан 3 December 2019 в 09:58

Теги

Похожие вопросы