Inventario dinámico: ec2.py
ansible 2.1.0.0
Python 2.7.10
Mac OS X 10.11.6
La ejecución independiente de ec2.py provoca un error de importación.
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
Una lista de instancias
Error anterior.
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.
@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.
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:
Ahora ansible está disponible:
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.