首页 文章

了解Ansible Juniper NetConf模块中的Netconf :: OpenError

提问于
浏览
0

我试图从_406119调整事实收集Playbook我已经修改了hosts文件以使用我的一个真正的Juniper设备 . 似乎Ansible知道所有模块库的位置,但由于某种原因它会抛出一个似乎没有文档的错误: Netconf::OpenError

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

Juniper模块都是用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)

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

  • 什么似乎导致Netconf :: OpenError错误?

  • 我是否应该在Juniper交换机上为Netconf使用不同的端口?我将在Juniper配置中查看什么以了解要使用的端口? (EX4200和EX4500)

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

播放[显示Junos事实,确保使用-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 = "1" <10.113.7.002> PUT / 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/gateway/.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,"item": “", " port ": 22, " state ": " started”}

任务:[联系目标以获取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-89494360697375 && echo $HOME/.ansible/tmp/ansible-1384993979.48-89494360697375'] <10.113.7.002> REMOTE_MODULE junos_get_facts host = 10.113.7.002 user = viasat <10.113.7.002> PUT / tmp / tmpB4jBDM TO /home/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 <10.113.7.002>执行['/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/arguments; 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:in open': Netconf::OpenError (Netconf::OpenError) from /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:28:in initialize'from /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:in new ' from /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts:46:in `'

致命:所有主机都已经失败 - 中止

PLAY RECAP ****************************************** 重试,使用: - limit @ / home / gateway / get_junos_facts.retry

10.113.7.002:ok = 1 changed = 0 unreachable = 0 failed = 1

1 回答

  • 1

    答案如下:Juniper设备未正确设置为在正常SSH端口22上侦听NETCONF连接 . 在Juniper配置中更改此设备使其全部工作 . 这意味着 Netconf::OpenError 表示设备可以访问,但NETCONF连接不可用 .

相关问题