o inventário dinâmico ansible não está funcionando corretamente

2

Isso é para inventário dinâmico para uso com a AWS

RHEL 7.3

python2-boto-2.45.0-3.el7.noarch

VERSÃO ANSÍVEL

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

Eu tenho vários recursos em execução e quando executo

ec2.py --list

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

Além disso, quando eu tento rodar playbooks ansiosos visando hosts com determinadas tags, eu recebo isso

[WARNING]: Found both group and host with same name: localhost
...
...
...
skipping: no hosts matched

Estou com problemas para configurar o inventário dinâmico para funcionar corretamente. Eu tenho meus arquivos ec2.ini e ec2.py e o ec2.py está configurado para ser executável e acredito ter configurado corretamente. Também o comando não retorna erro apenas ele não retorna nada no corpo.

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

O que eu faço para solucionar problemas de inventário dinâmico?

ATUALIZAÇÃO:

pip freeze

boto3==1.4.4
botocore==1.5.82

rpm -qa | grep boto

python2-boto-2.45.0-3.el7.noarch
    
por uberrebu 11.07.2017 / 03:18

2 respostas

4

O inventário dinâmico de ec2.py usa boto para fazer chamadas de API para a AWS.

Então, você pode querer verificar se boto pode se conectar à AWS executando:

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

se você tiver algo assim:

boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials

suas credenciais não estão corretas. Existem várias maneiras de configurar o boto. Mas, para propósitos de depuração, você poderia simplesmente definir AWS_ACCESS_KEY_ID e 'AWS_SECRET_ACCESS_KEY' via linha de comando assim:

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

Ao usar IAM roles , você deve observar que:

IAM Roles are supported by plugins/inventory/ec2.py when using boto 2.5.0 or higher.

When running on an EC2 instance that has an IAM Role assigned, and the role policy allows the ec2:Describe* action, ec2.py --list will work without the need to specify aws_access_key_id or aws_secret_access_key.

Additional actions will need to be allowed in the role policy if ec2.ini defines route53 = True or rds = True. github issue

    
por 11.07.2017 / 20:37
0

Eu tive um problema semelhante e percebi o script de inventário ignorando instâncias que não têm sub-rede pública.

vim ec2.py

 924         if not dest:
 925             # Skip instances we cannot address (e.g. private VPC subnet)
 926             return
    
por 22.10.2018 / 10:48