Ansible: El script Python de inventario dinámico de AWS no se ejecuta

Creado en 19 ago. 2016  ·  2Comentarios  ·  Fuente: ansible/ansible

TIPO DE PROBLEMA
  • Informe de error
    NOMBRE DEL COMPONENTE

Inventario dinámico: ec2.py

VERSION ANSIBLE
ansible 2.1.0.0
Python 2.7.10
SO / MEDIO AMBIENTE

Mac OS X 10.11.6

RESUMEN

La ejecución independiente de ec2.py provoca un error de importación.

PASOS PARA REPRODUCIR
  1. Descargue el script de inventario dinámico indica en los documentos .
  2. Ejecute el script con 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 PREVISTOS

Una lista de instancias

RESULTADOS ACTUALES

Error anterior.

Solución alterna

Si comento la línea from ansible.module_utils import ec2 as ec2_utils el script se ejecuta bien.

La línea se introdujo en # 16606.

aws bug cloud

Comentario más útil

Es bueno escuchar que no es un error. ¿Se describe esto en algún lugar de la documentación?

Descubrí qué lo causó al final: instalar Ansible con brew hizo que ansible no estuviera disponible para mi intérprete de Python.

Para solucionar esto, desinstalé Ansible y lo instalé nuevamente usando pip:

brew uninstall ansible
pip install ansible

Ahora ansible está disponible:

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

y el script funciona como se esperaba.

Puede valer la pena mencionar esto en alguna parte de la documentación, o hacer que el script arroje un error informativo si ansible no está disponible en la ruta de Python.

Todos 2 comentarios

@jonatanblue que la importación fue agregada por https://github.com/ansible/ansible/commit/59e499f8f00e4068b68c147b8f3002535ad706e0 que parece ser un intento de normalizar el código de configuración del cliente boto.

La implicación es que para usar el script de inventario, necesita tener ansible instalado en la máquina de manera que "ansible" esté disponible en la ruta de Python para su intérprete de Python predeterminado. Planeamos hacer más uso de las bibliotecas ansible en los scripts de inventario dinámico con el tiempo, por lo que no voy a revertir este cambio.

Es bueno escuchar que no es un error. ¿Se describe esto en algún lugar de la documentación?

Descubrí qué lo causó al final: instalar Ansible con brew hizo que ansible no estuviera disponible para mi intérprete de Python.

Para solucionar esto, desinstalé Ansible y lo instalé nuevamente usando pip:

brew uninstall ansible
pip install ansible

Ahora ansible está disponible:

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

y el script funciona como se esperaba.

Puede valer la pena mencionar esto en alguna parte de la documentación, o hacer que el script arroje un error informativo si ansible no está disponible en la ruta de Python.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

iven picture iven  ·  3Comentarios

hryamzik picture hryamzik  ·  3Comentarios

RaymiiOrg picture RaymiiOrg  ·  3Comentarios

aioue picture aioue  ·  3Comentarios

renaudguerin picture renaudguerin  ·  3Comentarios