Ansible: Das Python-Skript für dynamisches AWS-Inventar kann nicht ausgeführt werden

Erstellt am 19. Aug. 2016  ·  2Kommentare  ·  Quelle: ansible/ansible

AUSGABETYP
  • Fehlerbericht
    KOMPONENTENNAME

Dynamisches Inventar: ec2.py

ANSIBLE VERSION
ansible 2.1.0.0
Python 2.7.10
OS / UMWELT

Mac OS X 10.11.6

ZUSAMMENFASSUNG

Das eigenständige Ausführen von ec2.py führt zu Importfehlern.

SCHRITTE ZUM REPRODUZIEREN
  1. Laden Sie die ec2.py dynamische Bestands Skript und ec2.ini Datei als in der Dokumentation angewiesen .
  2. Führen Sie das Skript mit Python 2.7 aus
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
ERWARTETE ERGEBNISSE

Eine Liste von Instanzen

TATSÄCHLICHE ERGEBNISSE

Fehler oben.

Problemumgehung

Wenn ich die Zeile from ansible.module_utils import ec2 as ec2_utils auskommentiere, läuft das Skript einwandfrei.

Die Linie wurde in # 16606 eingeführt.

aws bug cloud

Hilfreichster Kommentar

Schön zu hören, dass es kein Fehler ist. Wird dies irgendwo in der Dokumentation beschrieben?

Ich habe herausgefunden, was es an meinem Ende verursacht hat: Die Installation von Ansible mit brew machte ansible für meinen Python-Interpreter nicht verfügbar.

Um dies zu beheben, habe ich Ansible deinstalliert und mit pip erneut installiert:

brew uninstall ansible
pip install ansible

Jetzt ist ansible verfügbar:

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

und das Skript funktioniert wie erwartet.

Es kann sinnvoll sein, dies irgendwo in der Dokumentation zu erwähnen oder das Skript einen informativen Fehler auslösen zu lassen, wenn ansible im Python-Pfad nicht verfügbar ist.

Alle 2 Kommentare

@jonatanblue, dass der Import von https://github.com/ansible/ansible/commit/59e499f8f00e4068b68c147b8f3002535ad706e0 hinzugefügt wurde. Dies scheint ein Versuch zu sein, den Setup-Code des Boto-Clients zu normalisieren.

Die Implikation ist, dass zur Verwendung des Inventarskripts ansible auf dem Computer installiert sein muss, sodass "ansible" im Python-Pfad für Ihren Standard-Python-Interpreter verfügbar ist. Wir planen, die ansiblen Bibliotheken in den dynamischen Inventarskripten im Laufe der Zeit stärker zu nutzen, daher werde ich diese Änderung nicht rückgängig machen.

Schön zu hören, dass es kein Fehler ist. Wird dies irgendwo in der Dokumentation beschrieben?

Ich habe herausgefunden, was es an meinem Ende verursacht hat: Die Installation von Ansible mit brew machte ansible für meinen Python-Interpreter nicht verfügbar.

Um dies zu beheben, habe ich Ansible deinstalliert und mit pip erneut installiert:

brew uninstall ansible
pip install ansible

Jetzt ist ansible verfügbar:

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

und das Skript funktioniert wie erwartet.

Es kann sinnvoll sein, dies irgendwo in der Dokumentation zu erwähnen oder das Skript einen informativen Fehler auslösen zu lassen, wenn ansible im Python-Pfad nicht verfügbar ist.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen