Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

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

排除连接失败、未知命令或未找到解释器错误

问题

描述

当您执行 juniper.device 模块或 junipernetworks.junos 集合中的 juniper.device 模块时,Ansible 控制节点会生成有关连接失败、未知命令或无法找到 Python 解释器的错误。例如:

原因

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

通常,Ansible 需要在托管节点上使用 Python。Ansible 控制节点将模块发送到节点,在该节点中执行模块,然后将其删除。 juniper.device 这些模块不需要托管设备上的 Python,因为这些模块使用 Junos XML API 和 NETCONF 与设备进行交互。因此,要在 Junos 设备上执行操作,必须在安装 Python 的 Ansible 控制节点上本地运行模块。如果 Ansible 尝试直接在 Junos 设备上执行模块,则会生成错误。

解决方案

要指示 Ansible 控制节点在本地运行模块,您必须为模块集定义适当的连接参数。您可以在不同位置定义参数,例如,在清单文件、主机或组变量文件、操作指南中或作为命令行参数。连接类型因您选择的模块集而异,在某些情况下,还取决于单个模块。有关详细信息,请参阅:

未知主机错误故障排除

问题

描述

执行juniper.device集合中的juniper.device模块或junipernetworks.junos模块时,Ansible 控制节点会生成有关未知主机、主机模式或地址的错误。

原因

当 Ansible 清单文件未定义主机或 Ansible 控制节点无法解析主机名时,将发生这些错误。

当您直接或从操作指南执行 Ansible 模块时,必须在 Ansible 清单文件中定义模块参数或操作指南中引用的任何主机。清单文件的默认位置为 /etc/ansible/hosts。Ansible 控制节点必须能够解析您在清单文件中定义的任何主机的主机名。

解决方案

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

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

排除拒绝连接错误和套接字错误

问题

描述

当您执行juniper.device集合中的juniper.device模块或模块junipernetworks.junos时,Ansible 控制节点会生成ConnectRefusedError错误或套接字错误。例如:

原因

导致这些错误的最可能原因是 Junos 设备上未启用通过 SSH 的 NETCONF。

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

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

解决方案

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

主机网络操作系统错误排解

问题

描述

当您执行junipernetworks.junos集合(模块)juniper.device.junos_*中的juniper.device模块时,Ansible 控制节点会生成host network os错误。例如:

原因

这些 juniper.device.junos_* 模块要求您为运行 Junos OS 的目标主机或运行 Junos OS Evolved 的目标主机指定 Ansible 网络操作系统 juniper.device.junos

解决方案

在适合您的环境的位置和文件格式所需的语法中定义 ansible_network_os 变量。例如,您可以在清单文件或主机或组变量文件中定义变量。

以下 INI 格式的清单文件示例定义了清单组中的junos主机的 Ansible 网络操作系统juniper.device.junos