Dépannage des erreurs d’installation de Junos PyEZ (junos-eznc) pour les modules Ansible
Problème
Description
Lors de l’exécution d’un juniper.device module, le nœud de contrôle Ansible génère une erreur qui junos-eznc n’est pas installée. Par exemple:
"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."
ou
"msg": "junos-eznc is required but does not appear to be installed. It can be installed using `pip install junos-eznc`"
Cause
Les modules Ansible Juniper Networks de la juniper.device collection utilisent la bibliothèque Python Junos PyEZ pour effectuer des opérations sur les équipements Junos. Ansible génère cette erreur si la bibliothèque n’est pas installée ou s’il ne parvient pas à localiser la bibliothèque. Ansible peut ne pas localiser la bibliothèque, par exemple, si vous installez Ansible dans un environnement virtuel ou dans le cadre d’une installation Python dans un emplacement système non standard et qu’Ansible recherche la bibliothèque dans un autre emplacement, comme l’emplacement système par défaut.
Solution
Installez Junos PyEZ sur le nœud de contrôle Ansible et mettez à jour les variables d’environnement nécessaires. Consultez https://github.com/Juniper/py-junos-eznc#installation pour plus d’informations.
Si vous exécutez Ansible à l’aide d’une installation Python dans un environnement virtuel ou un emplacement système non standard, vous devez :
-
Installez Junos PyEZ sous l’installation Python souhaitée (dans l’environnement virtuel ou un emplacement système non standard, selon le cas).
-
Spécifiez le chemin d’accès à l’interpréteur Python, par exemple en définissant la
interpreter_pythonvariable dans le fichier de configuration Ansible ou en définissant laansible_python_interpretervariable pour les périphériques appropriés dans le fichier d’inventaire Ansible.# file ansible.cfg [defaults] interpreter_python = /home/user/MyProjects/Ansible/venv/bin/python ...
Pour plus d’informations, consultez Découverte d’interpréteurs dans la documentation officielle d’Ansible.
Pour vérifier que Junos PyEZ est correctement installé sur le nœud de contrôle, lancez l’interpréteur de commandes interactif Python à l’aide de la même installation Python que celle que vous utilisez pour les opérations Ansible. Importez ensuite le jnpr.junos package.
(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'
Si vous avez correctement importé le jnpr.junos package et qu’il n’y a pas de message d’erreur, alors Junos PyEZ est installé sur le nœud de contrôle Ansible. Si le même message d’erreur s’affiche lorsque vous exécutez le module Ansible, assurez-vous d’avoir spécifié l’emplacement correct de l’interpréteur Python dans votre environnement Ansible.
Vous pouvez vérifier l’installation Python utilisée par Ansible en exécutant votre playbook Ansible avec l’option -vvv et en consultant les messages du journal.