Networking ntc ansible模块的SSH连接问题

Networking ntc ansible模块的SSH连接问题,networking,automation,ansible,cisco-ios,Networking,Automation,Ansible,Cisco Ios,我正在尝试使用在Ubuntu(WSL)上运行ansible的ntc ansible模块。我有ssh连接到我的远程设备(Cisco 2960X),我可以使用内置的ansible网络模块(ios_命令)将ansible playbooks运行到同一个远程交换机,并且工作正常 问题: 当我尝试运行任何ntc ansible模块时,它失败,无法连接到设备。可能是一些简单的事情,但我遇到了麻烦。关于如何使用ntc ansible模块,我缺少一些东西。Ansible正在查看模块,因为我可以查看自述文件中建议

我正在尝试使用在Ubuntu(WSL)上运行ansible的
ntc ansible
模块。我有ssh连接到我的远程设备(Cisco 2960X),我可以使用内置的ansible网络模块(
ios_命令
)将ansible playbooks运行到同一个远程交换机,并且工作正常

问题:

当我尝试运行任何ntc ansible模块时,它失败,无法连接到设备。可能是一些简单的事情,但我遇到了麻烦。关于如何使用ntc ansible模块,我缺少一些东西。Ansible正在查看模块,因为我可以查看自述文件中建议的测试文档

我在这里安装了ntc ansible模块:/home/melshman/.ansible/plugins/modules/ntc ansible 我在这里运行我的剧本:~/projects/ansible/ 第一次使用ntc ansible模块运行playbook时,它失败了,根据错误消息和一些研究,我安装了sshpass(sudo apt get install sshpass)。但是在使用ntc ansible时仍然存在ssh问题…(下面是剧本和回溯)

我听到人们在谈论一个索引文件,但我找不到那个文件?它住在哪里?我需要用它做什么

我的连接应该设置为什么?地方的嘘?奈特米科

我应该使用什么作为平台?思科ios?cisco\u ios\u ssh

谢谢你给我的任何帮助。我已经绕圈子跑了好几个小时了


Ansible版本信息:

VTMNB17024:~/projects/ansible $ ansible --version
ansible 2.5.3
  config file = /home/melshman/projects/ansible/ansible.cfg
  configured module search path = [u'/home/melshman/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.12 (default, Dec  4 2017, 14:50:18) [GCC 5.4.0 20160609]
工作手册(ios_命令:)注意:组变量中的ansible_ssh_密码和ansible_用户:

- name:  Test Net Automation
  hosts:  ctil-ios-upgrade
  connection: local
  gather_facts: no

  tasks:
    - name:  Grab run config
      ios_command:
        commands:
          - show run
      register: config

    - name:  Create backup of running configuration
      copy:
        content:  "{{config.stdout[0]}}"
        dest: "backups/show_run_{{inventory_hostname}}.txt"
使用
ntc ansible
模块的Playbook(不工作)(注意:用户名和密码在组变量中定义:

- name: Cisco IOS Automation
  hosts: ctil-ios-upgrade
  connection: local
  gather_facts: no

  tasks:
  - name: GET UPTIME
    ntc_show_command:
       connection: ssh
       platform: "cisco_ios"
       command: 'show version | inc uptime'
       host: "{{ inventory_hostname }}"
       username: "{{ username }}"
       password: "{{ password }}"
       use_templates: True
       template_dir: /home/melshman/.ansible/plugins/modules/ntc-ansible/ntc-templates/templates
以下是我在错误发生时得到的回溯:

任务执行期间发生异常。若要查看完整回溯,请使用-vvv。错误为:netmiko.ssh_exception.NetMikoTimeoutException:与设备的连接超时:cisco_ios VTgroup_SW:22 致命:[VTgroup_SW]:失败!=>{“changed”:false,“module_stderr”:“回溯(最近一次调用):\n File\”/tmp/ansible_RJRY9m/ansible_module_ntc_save_config.py\”,第279行,在\n main()\n File\“/tmp/ansible_RJRY9m/ansible_module_ntc_save_config.py\”,第251行,在main设备=ntc_设备中(设备类型、主机、用户名、密码,**kwargs)\n文件\“/usr/local/lib/python2.7/dist-packages/pyntc-0.0.6-py2.7.egg/pyntc/**kwargs init.py\”,第35行,在ntc\u设备\n返回设备类(*args,**kwargs)\n文件\“/usr/local lib/python2.7/dist-packages/pyntc-0.0.6-py2.7.egg/pyntc/devices/ios\”,在NTU设备的第39行,打开\n文件\“/usr/local/lib/python2.7/dist packages/pyntc-0.6-py2.7.egg/pyntc/devices/ios_device.py\”,第55行,打开\n verbose=False)\n文件\“build/bdist.linux-x86_64/egg/netmiko/ssh_dispatcher.py\”,第178行,在ConnectHandler\n文件\“build/bdist.linux-x86_64/egg/netmiko/base_connection.py\”的第207;行中build/bdist.linux-x86_64/egg/netmiko/base_connection.py\”,第693行,在build_connection\nnetmiko.ssh_exception.NetMikoTimeoutException:connection to device timeout:cisco_ios VTgroup_SW:22\n,“module_stdout”:“msg”:“module FAILURE”,“rc:1}


下面是一个使用ntc_show_命令到Cisco IOS设备的工作解决方案

- name: Cisco IOS Automation
  hosts: pynet-rtr1
  connection: local
  gather_facts: no

  tasks:
  - name: GET UPTIME
    ntc_show_command:
       connection: ssh
       platform: "cisco_ios"
       command: 'show version'
       host: "{{ ansible_host }}"
       username: "{{ ansible_user }}"
       password: "{{ ansible_ssh_pass }}"
       use_templates: True
       template_dir: '/home/kbyers/ntc-templates/templates'
如果要使用ntc模板,我可能不会在“显示版本”中使用“包括正常运行时间”。换句话说,让TextFSM先将输出转换为结构化数据,然后从结构化数据中获取正常运行时间

我将inventory\u主机名修改为ansible\u主机,以与我的清单格式一致(我的inventory\u主机名在DNS中实际上没有解析)

我将用户名和密码修改为“ansible\u user”和“ansible\u ssh\u pass”,以与我的清单保持一致,并与ansible 2.5/2.6变量命名更加一致

在您的上述问题上,您的异常消息与您的playbook不匹配(即,您是否确定这是该playbook的异常)

这是我的清单文件(我简化了它以删除一些不必要的设备并隐藏机密信息)


你确定这就是你从剧本中得到的输出吗?我这样说是因为异常输出指的是“ansible\u module\u ntc\u save\u config.py”?你可能还需要发布你的清单文件(你可以隐藏IP地址、用户名、密码)。关于我提供的回溯,你是对的…我想我在某一点剪切/粘贴了它,然后更新了剧本,但它们不匹配。如果这造成了任何混乱,请对此表示抱歉。我能够获得所有内容(ntc_文件副本、ntc_显示命令、ntc_配置命令、ntc_保存配置、ntc_安装操作系统、ntc_重新启动)根据您的回复工作。非常感谢!后续问题:如何从show_命令中访问“module_args”和“response”,即如果使用“show ip int-brief”我想知道int gi1/0/5的状态。我如何访问该状态?另外,在设备重新启动后,您如何使playbook在失去连接后自动与设备重新签入,而无需手动干预进行验证?任何指针或建议都将非常好。再次感谢。因为这些附加问题已从ori中删除ginal主题,我在这里创建了一个新的问题:还有这个关于设备重启验证的问题:
[all:vars]
ansible_connection=local
ansible_python_interpreter=/home/kbyers/VENV/ansible/bin/python
ansible_user=user
ansible_ssh_pass=password

[local]
localhost ansible_connection=local

[cisco]
pynet-rtr1 ansible_host=cisco1.domain.com
pynet-rtr2 ansible_host=cisco2.domain.com