Ansible 模块的 Junos PyEZ (junos-eznc) 安装错误故障排除
问题
描述
在执行 juniper.device 模块期间,Ansible 控制节点会生成未安装的 junos-eznc 错误。例如:
"msg": "junos-eznc is required but does not appear to be installed. It can be installed using `pip install junos-eznc`"
原因
集合中的 juniper.device 许多模块都使用 Junos PyEZ Python 库对 Junos 设备执行操作。如果未安装库或 Ansible 找不到库,则 Ansible 将生成此错误。例如,如果您在虚拟环境中或在非标准系统位置的 Python 安装下安装 Ansible,并且 Ansible 正在其他位置(例如默认系统位置)搜索库,则 Ansible 可能无法找到库。
解决方案
在 Ansible 控制节点上安装 Junos PyEZ 并更新所有必要的环境变量。有关详细信息,请参阅 https://github.com/Juniper/py-junos-eznc#installation 。
如果您在虚拟环境或非标准系统位置使用 Python 安装运行 Ansible,则必须:
-
在所需的 Python 安装下安装 Junos PyEZ(在虚拟环境或非标准系统位置,视情况而定)。
-
指定 Python 解释器的路径,例如,在 Ansible 配置文件中设置
interpreter_python变量,或在 Ansible 清单文件中为相应设备定义ansible_python_interpreter变量。# file ansible.cfg [defaults] interpreter_python = /home/user/MyProjects/Ansible/venv/bin/python ...
有关更多信息,请参阅 Ansible 官方文档中的 解释器发现 。
要验证 Junos PyEZ 是否已成功安装在控制节点上,请使用用于 Ansible 操作的相同 Python 安装启动 Python 交互式 shell。然后导入 jnpr.junos 包。
(venv) user@ansible-cn:~/MyProjects/Ansible$ python3 Python 3.12.3 (main, Nov 6 2025, 13:44:16) [GCC 13.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import jnpr.junos >>> jnpr.junos.__version__ '2.7.5'
如果成功导入软件 jnpr.junos 包,则 Junos PyEZ 将安装在 Ansible 控制节点上。如果您在执行 Ansible 模块时仍然看到相同的错误消息,请确保您已在 Ansible 环境中为 Python 解释器指定了正确的位置。
您可以使用该 -vvv 选项执行 Ansible 操作指南并查看日志消息,以验证 Ansible 使用的 Python 安装。