Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在管理 Junos 设备时排除 Ansible 连接错误

以下部分概述了在使用 Ansible 管理 Junos 设备时可能遇到的连接错误。这些部分还介绍了每个错误的潜在原因和解决方案。

排查失败或无效的连接错误

问题

描述

在 Junos 设备上执行 juniper.device or Juniper.junos 模块期间,Ansible 控制节点会生成有关 SSH 连接失败或未知命令的错误。例如:

原因

当模块未在 Ansible 控制节点上本地运行时,可能会出现这些错误。

通常,Ansible 需要在托管式节点上使用 Python,Ansible 控制节点将模块发送到节点,在那里执行然后删除。瞻博网络模块在 Junos 设备上不需要 Python,因为它们使用 Junos PyEZ 和基于 NETCONF 的 Junos XML API 与设备交互。因此,要在 Junos 设备上执行操作,必须在安装 Python 的 Ansible 控制节点上本地运行模块。如果 Ansible 尝试直接在 Junos 设备上执行模块,则会生成错误。

解决 方案

要指示 Ansible 控制节点在本地运行juniper.device或模块,请在执行单个模块时包含在 connection: local Ansible 操作手册中,或Juniper.junos包含--connection local命令行参数。例如:

排查未知主机错误

问题

描述

在执行 juniper.deviceJuniper.junos 模块期间,Ansible 控制节点会生成 ConnectUnknownHostError 错误。

原因

主机未在 Ansible 清单文件中定义,或者 Ansible 控制节点无法解析主机名。

直接或从剧本执行 Ansible 模块时,必须在 Ansible 清单文件中定义模块参数或剧本中引用的任何主机。清单文件的默认位置是 /etc/ ansible/hosts。如果清单文件引用主机名,则 Ansible 控制节点必须能够解析主机名。

解决 方案

更新 Ansible 清单文件以包含丢失的主机,并确保 DNS 解析正常工作。

有关 Ansible 清单文件的信息,请参阅 管理 Junos 设备时了解 Ansible 清单文件 以及 https://www.ansible.com/ 上的官方 Ansible 文档。

排查拒绝连接错误

问题

描述

在执行 juniper.deviceJuniper.junos 模块期间,Ansible 控制节点会生成 ConnectRefusedError 错误。例如:

原因

导致连接被拒绝错误的最可能原因是 Junos 设备上未启用基于 SSH 的 NETCONF。

要快速测试是否启用了 NETCONF,请验证执行 Ansible 模块的用户帐户是否可以成功启动与设备的 NETCONF 会话。

如果用户可以在默认 NETCONF 端口 (830) 或设备上专门为 NETCONF 配置的端口上成功与设备建立 NETCONF 会话,则 NETCONF 已启用。否则,您必须在设备上启用 NETCONF over SSH。

解决 方案

在 Junos 设备上启用 NETCONF-over-SSH 服务。