Inventário dinâmico: ec2.py
ansible 2.1.0.0
Python 2.7.10
Mac OS X 10.11.6
Executar ec2.py autônomo causa um erro de importação.
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
Uma lista de instâncias
Erro acima.
Se eu comentar a linha from ansible.module_utils import ec2 as ec2_utils
o script funcionará bem.
A linha foi introduzida em # 16606.
@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.
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:
Agora o ansible está disponível:
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.