Ansible: O script Python de inventário dinâmico da AWS falha ao executar

Criado em 19 ago. 2016  ·  2Comentários  ·  Fonte: ansible/ansible

TIPO DE PROBLEMA
  • Relatório de erro
    NOME DO COMPONENTE

Inventário dinâmico: ec2.py

VERSÃO ANSÍVEL
ansible 2.1.0.0
Python 2.7.10
OS / MEIO AMBIENTE

Mac OS X 10.11.6

RESUMO

Executar ec2.py autônomo causa um erro de importação.

PASSOS PARA REPRODUZIR
  1. Baixe o script de inventário dinâmico ec2.py e o arquivo ec2.ini conforme as instruções nos documentos .
  2. Execute o script com Python 2.7
python ec2.py --list
Traceback (most recent call last):
  File "ec2.py", line 134, in <module>
    from ansible.module_utils import ec2 as ec2_utils
ImportError: No module named ansible.module_utils
RESULTADOS ESPERADOS

Uma lista de instâncias

RESULTADOS REAIS

Erro acima.

Gambiarra

Se eu comentar a linha from ansible.module_utils import ec2 as ec2_utils o script funcionará bem.

A linha foi introduzida em # 16606.

aws bug cloud

Comentários muito úteis

Ótimo saber que não é um bug. Isso está descrito em algum lugar da documentação?

Eu descobri o que causou isso no meu fim: instalar o Ansible com brew tornado ansible indisponível para meu interpretador Python.

Para corrigir isso, desinstalei o Ansible e instalei-o novamente usando pip:

brew uninstall ansible
pip install ansible

Agora o ansible está disponível:

python -c "import ansible;print(ansible.__version__)"
2.1.1.0

e o script funciona conforme o esperado.

Pode valer a pena mencionar isso em algum lugar da documentação, ou fazer com que o script gere um erro informativo se ansible não estiver disponível no caminho do python.

Todos 2 comentários

@jonatanblue essa importação foi adicionada por https://github.com/ansible/ansible/commit/59e499f8f00e4068b68c147b8f3002535ad706e0, que parece ser uma tentativa de normalizar o código de configuração do cliente boto.

A implicação é que, para usar o script de inventário, você precisa ter o ansible instalado na máquina de forma que "ansible" esteja disponível no caminho python para seu interpretador python padrão. Planejamos fazer mais uso das bibliotecas ansible nos scripts de inventário dinâmico ao longo do tempo, portanto, não vou reverter essa alteração.

Ótimo saber que não é um bug. Isso está descrito em algum lugar da documentação?

Eu descobri o que causou isso no meu fim: instalar o Ansible com brew tornado ansible indisponível para meu interpretador Python.

Para corrigir isso, desinstalei o Ansible e instalei-o novamente usando pip:

brew uninstall ansible
pip install ansible

Agora o ansible está disponível:

python -c "import ansible;print(ansible.__version__)"
2.1.1.0

e o script funciona conforme o esperado.

Pode valer a pena mencionar isso em algum lugar da documentação, ou fazer com que o script gere um erro informativo se ansible não estiver disponível no caminho do python.

Esta página foi útil?
0 / 5 - 0 avaliações