排除 Ansible 模块的 Junos PyEZ (junos-eznc) 安装错误
问题
描述
在执行模块期间 juniper.device
,Ansible 控制节点会生成未安装的错误 junos-eznc
。例如:
"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."
或
"msg": "junos-eznc is required but does not appear to be installed. It can be installed using `pip install junos-eznc`"
原因
该系列中的瞻博网络 Ansible 模块 juniper.device
使用 Junos PyEZ Python 库在 Junos 设备上执行操作。如果库未安装或 Ansible 找不到库,Ansible 将生成此错误。例如,如果您将 Ansible 安装在虚拟环境中或 Python 安装在非标准系统位置,而 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.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'
如果成功导入 jnpr.junos
软件包且未显示错误消息,则 Junos PyEZ 已安装在 Ansible 控制节点上。如果在执行 Ansible 模块时仍然看到相同的错误消息,请确保已为 Ansible 环境中的 Python 解释器指定了正确的位置。
您可以使用选项 -vvv
执行 Ansible 操作指南并查看日志消息,以验证 Ansible 使用的 Python 安装。