Ansible 模块的 Junos PyEZ (junos-eznc) 安装错误疑难解答
问题
描述
在执行 juniper.device
模块或 Juniper.junos
模块期间,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`"
原因
集合和Juniper.junos
角色中的juniper.device
瞻博网络 Ansible 模块使用 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.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 安装。