0

我正在使用 Ansible 将配置推送到一些瞻博网络设备上。为了开始,我正在尝试从此处的官方演示中调整事实收集剧本。 我已修改主机文件以使用我的实际瞻博网络设备之一。Ansible 似乎知道所有模块库的位置,但由于某种原因,它抛出了一个似乎没有文档的错误:Netconf::OpenError

除了在我自己的主机上使用主机文件之外,我还在 tasks/nc_check.yml 中更改了端口 22 而不是端口 830。这是因为(据我所知),我可以进入交换机的只有 SSH(端口 22)

瞻博网络模块都是用 Ruby 编写的。以下是我安装的所有依赖项的版本:

junos-ez-stdlib (0.1.2)
mini_portile (0.5.2)
net-scp (1.1.2)
net-ssh (2.7.0)
netconf (0.3.1)
nokogiri (1.6.0)
serialport (1.2.3)

下面是运行演示提供的相同剧本的输出。我的问题是:

  1. 似乎是什么导致了 Netconf::OpenError 错误?
  2. 我应该期望在瞻博网络交换机上为 Netconf 使用不同的端口吗?我会在瞻博网络配置中查看什么以了解要使用的端口?(EX4200 和 EX4500)

    ansible-playbook junos/get_junos_facts.yml -i hosts -vvv

    PLAY [显示 Junos Facts,确保使用 -v] * ** * ** * ** * ** * ***

    任务:[检查设备的 NETCONF 可达性] * ** * ** * ** * ** * *** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.41-2345029032433 && echo $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433'] <10.113.7.002> REMOTE_MODULE wait_for host="10.113.7.002" port=22 timeout="002" <10.13. /10.13 tmp/tmpwhWU6X TO /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for <10.113.7.002> EXEC ['/bin/sh', '-c', '/usr/bin/python /home/网关/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for;rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/ >/dev/null 2>&1'] ok: [10.113.7.002] => {"changed": false, "elapsed": 0 , “物品”:

    任务:[联系目标以获取Junos事实] * ** * ** * ** * ** * **** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.48-89494360697375 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.48-8949494360697375 && echo $ home/.ansible/tmp/ansible-138499397979.48-8949494949494360697375'] gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts <10.113.7.002> PUT /tmp/tmp28DLzs TO /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/arguments <10002>EC.1 /bin/sh', '-c', '/usr/local/bin/ruby /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts /home/gateway/.ansible/tmp/ansible-1384993979.48 -89494360697375/参数;rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/ >/dev/null 2>&1'] 失败:[10.113.7.002] => {"failed": true, "parsed": false无效的输出是:/var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:49:inopen': Netconf::OpenError (Netconf::OpenError) from /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:28:in初始化'从 /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/ssh.rb:21:in initialize' from /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts:46:innew' 来自 /home/gateway/.ansible/tmp/ansible- 1384993979.48-89494360697375/junos_get_facts:46:in `'

    致命:所有主机都已失败——正在中止

    PLAY RECAP * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * * 重试,使用:--limit @/主页/网关/get_junos_facts.retry

    10.113.7.002 :正常=1 更改=0 无法访问=0 失败=1

4

1 回答 1

1

答案是:瞻博网络设备未正确设置为侦听普通 SSH 端口 22 上的 NETCONF 连接。在瞻博网络配置中更改此设置使其一切正常。这意味着Netconf::OpenError设备可能是可访问的,但 NETCONF 连接不可用。

于 2013-11-21T02:27:48.267 回答