networktocode / ntc-ansible

Multi-vendor network modules
Other
278 stars 112 forks source link

how to run ntc-ansible on Cisco ASA #254

Closed hrv231 closed 4 years ago

hrv231 commented 4 years ago

Hello,

for the past few days I have been trying to install ntc-ansible to be able to use it for the first time. First I noticed a problem [ issues/253 ] and thanks to @FragmentedPacket I was able to resolve it. Now that is working, I decided to run my first test playbook with ntc and get the below error:

The full traceback is:
Traceback (most recent call last):
  File "/home/user1/.ansible/tmp/ansible-tmp-1571164655.34-104469054640745/AnsiballZ_ntc_show_command.py", line 114, in <module>
    _ansiballz_main()
  File "/home/user1/.ansible/tmp/ansible-tmp-1571164655.34-104469054640745/AnsiballZ_ntc_show_command.py", line 106, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/user1/.ansible/tmp/ansible-tmp-1571164655.34-104469054640745/AnsiballZ_ntc_show_command.py", line 49, in invoke_module
    imp.load_module('__main__', mod, module, MOD_DESC)
  File "/tmp/ansible_ntc_show_command_payload_qaJoRc/__main__.py", line 523, in <module>
  File "/tmp/ansible_ntc_show_command_payload_qaJoRc/__main__.py", line 466, in main
  File "/home/user1/.local/lib/python2.7/site-packages/netmiko/ssh_dispatcher.py", line 246, in ConnectHandler
    return ConnectionClass(*args, **kwargs)
  File "/home/user1/.local/lib/python2.7/site-packages/netmiko/base_connection.py", line 317, in __init__
    self._open()
  File "/home/user1/.local/lib/python2.7/site-packages/netmiko/base_connection.py", line 322, in _open
    self.establish_connection()
  File "/home/user1/.local/lib/python2.7/site-packages/netmiko/base_connection.py", line 890, in establish_connection
    raise NetMikoTimeoutException(msg)
netmiko.ssh_exception.NetMikoTimeoutException: Connection to device timed-out: cisco_asa_ssh Clark-5506X:22

fatal: [Clark-5506X]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "module_stderr": "Traceback (most recent call last):\n  File \"/home/user1/.ansible/tmp/ansible-tmp-1571164655.34-104469054640745/AnsiballZ_ntc_show_command.py\", line 114, in <module>\n    _ansiballz_main()\n  File \"/home/user1/.ansible/tmp/ansible-tmp-1571164655.34-104469054640745/AnsiballZ_ntc_show_command.py\", line 106, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/user1/.ansible/tmp/ansible-tmp-1571164655.34-104469054640745/AnsiballZ_ntc_show_command.py\", line 49, in invoke_module\n    imp.load_module('__main__', mod, module, MOD_DESC)\n  File \"/tmp/ansible_ntc_show_command_payload_qaJoRc/__main__.py\", line 523, in <module>\n  File \"/tmp/ansible_ntc_show_command_payload_qaJoRc/__main__.py\", line 466, in main\n  File \"/home/user1/.local/lib/python2.7/site-packages/netmiko/ssh_dispatcher.py\", line 246, in ConnectHandler\n    return ConnectionClass(*args, **kwargs)\n  File \"/home/user1/.local/lib/python2.7/site-packages/netmiko/base_connection.py\", line 317, in __init__\n    self._open()\n  File \"/home/user1/.local/lib/python2.7/site-packages/netmiko/base_connection.py\", line 322, in _open\n    self.establish_connection()\n  File \"/home/user1/.local/lib/python2.7/site-packages/netmiko/base_connection.py\", line 890, in establish_connection\n    raise NetMikoTimeoutException(msg)\nnetmiko.ssh_exception.NetMikoTimeoutException: Connection to device timed-out: cisco_asa_ssh Clark-5506X:22\n", 
    "module_stdout": "", 
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", 
    "rc": 1
}

The simple playbook is below:

  - hosts: Clark-5506X,
    gather_facts: no
    connection: local
    vars:
      ansible_become: yes
      ansible_become_method: enable
      ansible_network_os: asa
      rommon: asa5500-firmware-1115.SPA
      rommon_md5: 659defaf17ca7bed5fe45fe32ab4e3b8
      # auth_pass: cisco
      ansible_user: admin
      ansible_password: "{{ansible_ssh_pass}}"
      platform: cisco_asa_ssh
    tasks:
      - ntc_show_command:
          connection=netmiko_ssh
          platform=cisco_asa_ssh
          command='show inventory'
          template_dir='/home/user1/ansible/library/ntc-ansible/ntc-templates/templates'
          host={{ inventory_hostname }}
          username={{ ansible_user }}
          password={{ ansible_password }}

Can someone please tell me what is the problem now? I tested this on two different VMs, both running python 2.7.15rc1

The pip freeze is below:

(test1) user1@NETMAN:~/ansible$ pip freeze
ansible==2.8.5
asn1crypto==1.1.0
attrs==19.3.0
bcrypt==3.1.7
bigsuds==1.0.6
certifi==2019.9.11
cffi==1.13.0
chardet==3.0.4
configparser==4.0.2
contextlib2==0.6.0.post1
coverage==4.5.4
cryptography==2.7
enum34==1.1.6
f5-icontrol-rest==1.3.13
f5-sdk==3.0.21
funcsigs==1.0.2
functools32==3.2.3.post2
future==0.18.0
idna==2.8
importlib-metadata==0.23
ipaddress==1.0.22
Jinja2==2.10.3
jsonschema==3.1.1
junos-eznc==2.2.1
lxml==4.4.1
MarkupSafe==1.1.1
mock==3.0.5
more-itertools==5.0.0
ncclient==0.6.6
netaddr==0.7.19
netmiko==2.4.2
ntc-ansible==0.1.0
paramiko==2.6.0
pathlib2==2.3.5
pycparser==2.19
pyeapi==0.8.2
PyNaCl==1.3.0
pyntc==0.0.9
pynxos==0.0.5
pyparsing==2.4.2
pyrsistent==0.15.4
pyserial==3.4
PyYAML==5.1.2
requests==2.22.0
scandir==1.10.0
scp==0.13.2
selectors2==2.0.1
six==1.12.0
suds-jurko==0.6
terminal==0.4.0
textfsm==1.1.0
transitions==0.7.1
urllib3==1.25.6
yamlordereddictloader==0.4.0
zipp==0.6.0
(test1) user1@NETMAN:~/ansible$ 

Thank you!

hrv231 commented 4 years ago

I ran a new VM with only python3 this time, and this is what I get below when I try to run the same playbook:

fatal: [Clark-5506X]: FAILED! => {
    "changed": false,
    "module_stderr": "/home/user1/.ansible/tmp/ansible-tmp-1571168106.6714008-235548126620749/AnsiballZ_ntc_show_command.py:18: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses\n  import imp\nTraceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/netmiko-2.4.2-py3.7.egg/netmiko/base_connection.py\", line 884, in establish_connection\n    self.remote_conn_pre.connect(**ssh_connect_params)\n  File \"/usr/local/lib/python3.7/dist-packages/paramiko-2.6.0-py3.7.egg/paramiko/client.py\", line 340, in connect\n    to_try = list(self._families_and_addresses(hostname, port))\n  File \"/usr/local/lib/python3.7/dist-packages/paramiko-2.6.0-py3.7.egg/paramiko/client.py\", line 204, in _families_and_addresses\n    hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM\n  File \"/usr/lib/python3.7/socket.py\", line 748, in getaddrinfo\n    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):\nsocket.gaierror: [Errno -3] Temporary failure in name resolution\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/user1/.ansible/tmp/ansible-tmp-1571168106.6714008-235548126620749/AnsiballZ_ntc_show_command.py\", line 114, in <module>\n    _ansiballz_main()\n  File \"/home/user1/.ansible/tmp/ansible-tmp-1571168106.6714008-235548126620749/AnsiballZ_ntc_show_command.py\", line 106, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/user1/.ansible/tmp/ansible-tmp-1571168106.6714008-235548126620749/AnsiballZ_ntc_show_command.py\", line 49, in invoke_module\n    imp.load_module('__main__', mod, module, MOD_DESC)\n  File \"/usr/lib/python3.7/imp.py\", line 234, in load_module\n    return load_source(name, filename, file)\n  File \"/usr/lib/python3.7/imp.py\", line 169, in load_source\n    module = _exec(spec, sys.modules[name])\n  File \"<frozen importlib._bootstrap>\", line 630, in _exec\n  File \"<frozen importlib._bootstrap_external>\", line 728, in exec_module\n  File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n  File \"/tmp/ansible_ntc_show_command_payload_i4i8snrm/__main__.py\", line 523, in <module>\n  File \"/tmp/ansible_ntc_show_command_payload_i4i8snrm/__main__.py\", line 466, in main\n  File \"/usr/local/lib/python3.7/dist-packages/netmiko-2.4.2-py3.7.egg/netmiko/ssh_dispatcher.py\", line 246, in ConnectHandler\n    return ConnectionClass(*args, **kwargs)\n  File \"/usr/local/lib/python3.7/dist-packages/netmiko-2.4.2-py3.7.egg/netmiko/base_connection.py\", line 317, in __init__\n    self._open()\n  File \"/usr/local/lib/python3.7/dist-packages/netmiko-2.4.2-py3.7.egg/netmiko/base_connection.py\", line 322, in _open\n    self.establish_connection()\n  File \"/usr/local/lib/python3.7/dist-packages/netmiko-2.4.2-py3.7.egg/netmiko/base_connection.py\", line 890, in establish_connection\n    raise NetMikoTimeoutException(msg)\nnetmiko.ssh_exception.NetMikoTimeoutException: Connection to device timed-out: cisco_asa_ssh Clark-5506X:22\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}
FragmentedPacket commented 4 years ago

Are you able to SSH via that hostname and port? Clark-5506X:22

Is that resolvable via DNS?

hrv231 commented 4 years ago

Are you able to SSH via that hostname and port? Clark-5506X:22

Is that resolvable via DNS?

You are right, it is not resolvable via DNS. I have a dynamic inventory pulling from NetBox, and thought that this module will not use DNS. I use many others that by using the "inventory_hostname" is enough. In this case I change that to "ansible_host" and it is working now.

Thank you again!