ansible-collections / cisco.ios

Ansible Network Collection for Cisco IOS
GNU General Public License v3.0
284 stars 169 forks source link

cisco.ios: Error whren gathering facts about vlans #202

Closed misch42 closed 3 years ago

misch42 commented 3 years ago
SUMMARY

Error when gathering facts about vlans on my Cisco 2960

ISSUE TYPE
COMPONENT NAME

cisco.ios.ios_facts

ANSIBLE VERSION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/usr/local/lib/python3.6/site-packages/napalm_ansible']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
CONFIGURATION
DEFAULT_MODULE_PATH(/etc/ansible/ansible.cfg) = ['/usr/local/lib/python3.6/site-packages/napalm_ansible']
OS / ENVIRONMENT
CentOS Linux release 8.2.2004 (Core)
STEPS TO REPRODUCE

execute playbook

---
- name: Test
  hosts: switch07
  gather_facts: False
  vars:
    ansible_network_os: cisco.ios.ios

  tasks:
  - name: Test
    cisco.ios.ios_facts:
      gather_subset: all
      gather_network_resources:
        - 'vlans'
EXPECTED RESULTS

show facts about vlans

ACTUAL RESULTS

invalid literal for int() with base 10: 'Ports'\n"

The full traceback is:
Traceback (most recent call last):
  File "/home/misch/.ansible/tmp/ansible-local-99485lcnp1n7/ansible-tmp-1604684945.173954-9967-8340257903531/AnsiballZ_ios_facts.py", line 102, in <module>
    _ansiballz_main()
  File "/home/misch/.ansible/tmp/ansible-local-99485lcnp1n7/ansible-tmp-1604684945.173954-9967-8340257903531/AnsiballZ_ios_facts.py", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/misch/.ansible/tmp/ansible-local-99485lcnp1n7/ansible-tmp-1604684945.173954-9967-8340257903531/AnsiballZ_ios_facts.py", line 40, in invoke_module
    runpy.run_module(mod_name='ansible_collections.cisco.ios.plugins.modules.ios_facts', init_globals=None, run_name='__main__', alter_sys=True)
  File "/usr/lib64/python3.6/runpy.py", line 205, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_facts.py", line 236, in <module>
  File "/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_facts.py", line 229, in main
  File "/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py", line 118, in get_facts
  File "/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts/facts.py", line 128, in get_network_resources_facts
  File "/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py", line 89, in populate_facts
  File "/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py", line 155, in render_config
ValueError: invalid literal for int() with base 10: 'Ports'
[DEPRECATION WARNING]: Distribution centos 8.2.2004 on host switch07 should use /usr/libexec/platform-python, but is using /usr/bin/python for backward compatibility with 
prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See 
https://docs.ansible.com/ansible/2.10/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation 
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
fatal: [switch07]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"/home/misch/.ansible/tmp/ansible-local-99485lcnp1n7/ansible-tmp-1604684945.173954-9967-8340257903531/AnsiballZ_ios_facts.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/misch/.ansible/tmp/ansible-local-99485lcnp1n7/ansible-tmp-1604684945.173954-9967-8340257903531/AnsiballZ_ios_facts.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/misch/.ansible/tmp/ansible-local-99485lcnp1n7/ansible-tmp-1604684945.173954-9967-8340257903531/AnsiballZ_ios_facts.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible_collections.cisco.ios.plugins.modules.ios_facts', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code\n    mod_name, mod_spec, pkg_name, script_name)\n  File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_facts.py\", line 236, in <module>\n  File \"/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_facts.py\", line 229, in main\n  File \"/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py\", line 118, in get_facts\n  File \"/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts/facts.py\", line 128, in get_network_resources_facts\n  File \"/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py\", line 89, in populate_facts\n  File \"/tmp/ansible_cisco.ios.ios_facts_payload_x1whicax/ansible_cisco.ios.ios_facts_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py\", line 155, in render_config\nValueError: invalid literal for int() with base 10: 'Ports'\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}
ibravo commented 3 years ago

I'm having a similar problem when running on the same Cisco WS-C2960-48TT-S with Version 12.2(50)SE5 My code:

- name: Configure Vlans
  cisco.ios.ios_vlans:
    config:
      - name: ansible_VLAN
        vlan_id: 52
        state: active
justjais commented 3 years ago

@misch42 can you please share your VLANs existing config where it's failing

misch42 commented 3 years ago

inventory:

all:
  hosts:
    switch02:
      ansible_host: 192.168.88.130
      vlans:
        - name: VLAN10
          id: 10
        - name: VLAN20
          id: 20
        - name: MGMT
          id: 999

originally I had:

- name: configure VLANs
  ios_vlans:
    config:
      - name: "{{ item.name }}"
        vlan_id: "{{ item.id }}"
        state: active
        shutdown: disabled
    state: merged
  loop: "{{ vlans }}"

but even the simper version:

- name: configure VLANs
  cisco.ios.ios_vlans:
    config:
    - name: VLAN10
      vlan_id: 10
      state: active
      shutdown: enabled
    state: merged

does run into that error.

justjais commented 3 years ago

@misch42 it's failing while gathering facts, so can u plz share the switch vlans config with which it has failed.

misch42 commented 3 years ago

Sorry, cannot repeat it now. Works for me at the moment.

Perhaps it was a syntax error somewhere.

misch42 commented 3 years ago

gather_facts and ios_vlans work for me now.

ibravo commented 3 years ago

I'm still having the same issue.

Device: WS-C2960-48TT-S Version: 15.0(2)SE11

This is the yaml file (I tried with vlan_id: 8, '8' and "8", all with same result):

---
- name: Test
  hosts: cisco
  gather_facts: False
  vars:
    ansible_network_os: cisco.ios.ios

  tasks:
  - name: Create VLAN 8
    cisco.ios.ios_vlans:
      config:
      - name: VLAN8
        vlan_id: 8
        state: active
        shutdown: enabled
      state: merged

And when running the code I got the following message:

  ansible-playbook 2.10.6
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/it/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
Using /etc/ansible/ansible.cfg as config file
host_list declined parsing /home/it/ansible/routers/hosts as it did not pass its verify_file() method
script declined parsing /home/it/ansible/routers/hosts as it did not pass its verify_file() method
auto declined parsing /home/it/ansible/routers/hosts as it did not pass its verify_file() method
Parsed /home/it/ansible/routers/hosts inventory source with ini plugin
[WARNING]: packaging Python module unavailable; unable to validate collection Ansible version requirements
redirecting (type: action) cisco.ios.ios_vlans to cisco.ios.ios
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: basic_config.yml **************************************************************************************************************
1 plays in ./playbooks/basic_config.yml

PLAY [Test] *****************************************************************************************************************************
META: ran handlers
redirecting (type: action) cisco.ios.ios_vlans to cisco.ios.ios

TASK [Create VLAN 8] ********************************************************************************************************************
task path: /home/it/ansible/routers/playbooks/basic_config.yml:9
redirecting (type: action) cisco.ios.ios_vlans to cisco.ios.ios
redirecting (type: action) cisco.ios.ios_vlans to cisco.ios.ios
<10.0.5.5> ESTABLISH LOCAL CONNECTION FOR USER: it
<10.0.5.5> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/it/.ansible/tmp/ansible-local-267191i56p1rly `"&& mkdir "` echo /home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098 `" && echo ansible-tmp-1614976974.6392074-267195-148597576039098="` echo /home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098 `" ) && sleep 0'
<10.0.5.5> Attempting python interpreter discovery
<10.0.5.5> EXEC /bin/sh -c 'echo PLATFORM; uname; echo FOUND; command -v '"'"'/usr/bin/python'"'"'; command -v '"'"'python3.7'"'"'; command -v '"'"'python3.6'"'"'; command -v '"'"'python3.5'"'"'; command -v '"'"'python2.7'"'"'; command -v '"'"'python2.6'"'"'; command -v '"'"'/usr/libexec/platform-python'"'"'; command -v '"'"'/usr/bin/python3'"'"'; command -v '"'"'python'"'"'; echo ENDFOUND && sleep 0'
<10.0.5.5> EXEC /bin/sh -c '/usr/bin/python3 && sleep 0'
Using module file /home/it/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py
<10.0.5.5> PUT /home/it/.ansible/tmp/ansible-local-267191i56p1rly/tmpsm451ng2 TO /home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py
<10.0.5.5> EXEC /bin/sh -c 'chmod u+x /home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/ /home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py && sleep 0'
<10.0.5.5> EXEC /bin/sh -c '/usr/bin/python3 /home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py && sleep 0'
<10.0.5.5> EXEC /bin/sh -c 'rm -f -r /home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
Traceback (most recent call last):
  File "/home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py", line 102, in <module>
    _ansiballz_main()
  File "/home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py", line 40, in invoke_module
    runpy.run_module(mod_name='ansible_collections.cisco.ios.plugins.modules.ios_vlans', init_globals=None, run_name='__main__', alter_sys=True)
  File "/usr/lib/python3.8/runpy.py", line 207, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib/python3.8/runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py", line 748, in <module>
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py", line 743, in main
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py", line 70, in execute_module
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py", line 51, in get_vlans_facts
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py", line 121, in get_facts
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts/facts.py", line 131, in get_network_resources_facts
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py", line 89, in populate_facts
  File "/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py", line 155, in render_config
ValueError: invalid literal for int() with base 10: 'Ports'
fatal: [10.0.5.5]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"/home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/it/.ansible/tmp/ansible-local-267191i56p1rly/ansible-tmp-1614976974.6392074-267195-148597576039098/AnsiballZ_ios_vlans.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible_collections.cisco.ios.plugins.modules.ios_vlans', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py\", line 748, in <module>\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py\", line 743, in main\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py\", line 70, in execute_module\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py\", line 51, in get_vlans_facts\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py\", line 121, in get_facts\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts/facts.py\", line 131, in get_network_resources_facts\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py\", line 89, in populate_facts\n  File \"/tmp/ansible_cisco.ios.ios_vlans_payload_x4ms672x/ansible_cisco.ios.ios_vlans_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py\", line 155, in render_config\nValueError: invalid literal for int() with base 10: 'Ports'\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}