Ruby 从Ansible Juniper Netconf模块理解Netconf::OpenError

Ruby 从Ansible Juniper Netconf模块理解Netconf::OpenError,ruby,ansible,ietf-netconf,Ruby,Ansible,Ietf Netconf,我正在使用Ansible将配置推送到一些Juniper设备上。为了开始,我正在尝试从“我已经修改了主机”文件中调整事实收集剧本,以使用我的一个实际的Juniper设备。Ansible似乎知道所有模块库的位置,但出于某种原因,它抛出了一个似乎没有文档的错误:Netconf::OpenError 除了对自己的主机使用主机文件之外,我还更改了tasks/nc_check.yml中的端口22,而不是端口830。这是因为(据我所知),我可以进入交换机的只有SSH(端口22) JUniter模块都是用Rub

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

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

JUniter模块都是用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错误
  • 我应该为JUniter交换机上的Netconf使用不同的端口吗?我应该在Juniper配置中查看什么来了解要使用的端口?(EX4200和EX4500)

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

    播放[显示朱诺斯的事实,确保使用-v]***************

    任务:[检查设备的NETCONF可达性]****************** 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-138499393939979.41-2345029032433'] 远程模块等待主机=“10.113.7.002”端口=22超时=“1” 将/tmp/tmpwhWU6X放入/home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_ EXEC['/bin/sh','-c','/usr/bin/python/home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_-for;rm-rf/home/gateway/.ansible/tmp/ansible-138499393979.41-2345029032433/>/dev/null 2>&1'] 确定:[10.113.7.002]=>{“已更改”:false,“已用”:0,“项目”:““端口”:22,“状态”:“已启动”}

    任务:[联系目标以获取朱诺的事实]****************** 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-13849939979.48-89494360697375'] 远程模块junos get facts主机=10.113.7.002用户=viasat 将/tmp/tmpB4jBDM放到/home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_事实 将/tmp/tmp28DLzs放到/home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/arguments EXEC['/bin/sh','-c','/usr/local/bin/ruby/home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts/home/gateway/.ansible/tmp/ansible-1384993939979.48-89494360697375/arguments;rm-rf/home/gateway/.ansible/tmp/ansible/ansible/tmp/ansible-1384993993979.48-89494360697375/>/dev/null 2>&1'] 失败:[10.113.7.002]=>{“失败”:true,“已解析”:false} 无效输出为:/var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:49:in
    open]:netconf::OpenError(netconf::OpenError)
    从/var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:28:in
    initialize' 来自/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\u get\u facts:46:in`'

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

    播放重述 要重试,请使用:--limit@/home/gateway/get_junos_facts。重试

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


  • 答案是:JUniter设备没有正确设置,无法在正常的SSH端口22上侦听NETCONF连接。在Juniper配置中更改这一点可以让一切正常工作。这意味着
    Netconf::OpenError
    意味着可以访问设备,但Netconf连接不可用