AUF DIESER SEITE
Fehlerbehebung bei der Installation von Junos PyEZ (Junos-EZNC) für Ansible-Module
Problem
Beschreibung
Während der Ausführung eines juniper.device Moduls generiert der Ansible-Kontrollknoten einen Fehler, der junos-eznc nicht installiert ist. Zum Beispiel:
"msg": "junos-eznc (aka PyEZ) >= 2.6.0 is required for this module. However, junos-eznc does not appear to be currently installed. See https://github.com/Juniper/py-junos-eznc#installation for details on installing junos-eznc."
oder
"msg": "junos-eznc is required but does not appear to be installed. It can be installed using `pip install junos-eznc`"
Verursachen
Die Juniper Networks Ansible-Module in der juniper.device Sammlung verwenden die Junos PyEZ Python-Bibliothek, um Vorgänge auf Junos-Geräten auszuführen. Ansible generiert diesen Fehler, wenn die Bibliothek nicht installiert ist oder wenn Ansible die Bibliothek nicht finden kann. Ansible kann die Bibliothek möglicherweise nicht finden, z. B. wenn Sie Ansible in einer virtuellen Umgebung oder unter einer Python-Installation an einem nicht standardmäßigen Systemspeicherort installieren und Ansible die Bibliothek an einem anderen Speicherort als dem Standardspeicherort des Systems sucht.
Lösung
Installieren Sie Junos PyEZ auf dem Ansible-Steuerungsknoten und aktualisieren Sie alle erforderlichen Umgebungsvariablen. Weitere Informationen finden Sie unter https://github.com/Juniper/py-junos-eznc#installation .
Wenn Sie Ansible mit einer Python-Installation in einer virtuellen Umgebung oder an einem nicht standardmäßigen Systemspeicherort ausführen, müssen Sie:
-
Installieren Sie Junos PyEZ unter der gewünschten Python-Installation (je nach Bedarf in der virtuellen Umgebung oder am nicht standardmäßigen Systemspeicherort).
-
Geben Sie den Pfad zum Python-Interpreter an, indem Sie z. B. die
interpreter_pythonVariable in der Ansible-Konfigurationsdatei festlegen oder die Variable für die entsprechenden Geräte in der Ansible-Bestandsdatei definierenansible_python_interpreter.# file ansible.cfg [defaults] interpreter_python = /home/user/MyProjects/Ansible/venv/bin/python ...
Weitere Informationen finden Sie unter Interpreter Discovery in der offiziellen Ansible-Dokumentation.
Um zu überprüfen, ob Junos PyEZ erfolgreich auf dem Steuerungsknoten installiert wurde, starten Sie die interaktive Python-Shell mit derselben Python-Installation, die Sie für Ansible-Operationen verwenden. Importieren Sie dann das jnpr.junos Paket.
(venv) user@ansible-cn:~/MyProjects/Ansible$ python3 Python 3.6.9 (default, Oct 8 2020, 12:12:24) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> import jnpr.junos >>> jnpr.junos.__version__ '2.6.0'
Wenn Sie das jnpr.junos Paket erfolgreich importiert haben und keine Fehlermeldung angezeigt wird, wird Junos PyEZ auf dem Ansible-Steuerungsknoten installiert. Wenn beim Ausführen des Ansible-Moduls weiterhin dieselbe Fehlermeldung angezeigt wird, stellen Sie sicher, dass Sie den richtigen Speicherort für den Python-Interpreter in Ihrer Ansible-Umgebung angegeben haben.
Sie können die von Ansible verwendete Python-Installation überprüfen, indem Sie Ihr Ansible-Playbook mit der -vvv Option ausführen und die Protokollmeldungen überprüfen.