Getting authentication issue while connection to Cisco Switch

I am trying to connect to a cisco switch using ansible creds(username and password that are being fetched from PAM) while trying to execute a command sh version, I’m getting authentication issue. Both user name and password are correct.

Below is the code and error:


  • name: Playbook to check Nodedown details on Cisco_devices
    tasks:

    • name: Gather inputs from incident
      set_fact:
      device_name: “{{ device_name }}”
      incident_number: “{{ incident_number }}”
      incident_sysid: “{{ incident_sysid}}”
      failed_when: false

    • name: Display inputs Captured from Incident
      debug:
      msg:
      - Device Name: “{{ device_name }}”
      - Incident Number: “{{ incident_number }}”
      - Incident Sys_id: “{{ incident_sysid }}”

    • name: Executing task when device name is defined and not empty
      block:

      • name: Creating Inmemory inventory
        add_host:
        name: “{{ item }}”
        groups: network_devices
        with_items:

        • “{{ device_name }}”
          when: “device_name is defined and (device_name | length > 0)”
      • name: Display Inventory details
        debug:
        msg: “{{ groups[‘network_devices’] }}”
        when: “device_name is defined and (device_name | length >0)”
        when: “device_name is defined and (device_name | length > 0)”

    • name: Executing task when device name is not defined and empty
      debug:
      msg: “The device_name details is not defined”
      when: “device_name is not defined and (device_name | length == 0)”

  • name: Fetching credentials from PAM
    hosts: all
    gather_facts: false
    tasks:

    • name: Include role to get creds from PAM
      include_role:
      name: PAM_Connection
  • name: Connecting to Network Device
    hosts: network_devices
    gather_facts: false
    ignore_unreachable: true
    connection: network_cli
    vars:
    ansible_network_os: ios
    ansible_user: "{{ device_username }} "
    ansible_password: “{{ device_password }}”
    ansible_command_timeout: 240
    ansible_python_interpreter: “/usr/libexec/platform-python”
    ansible_become: yes
    ansible_become_method: enable
    tasks:

    • name: Setting environment variable globally
      set_fact:
      ansible_env_var:
      ANSIBLE_PARAMIKO_LOOK_FOR_KEYS: “False”

      vars:
      ansible_user: "{{ device_username }} "
      ansible_password: “{{ device_password }}”
      ansible_command_timeout: 240
      ansible_become: yes
      ansible_become_method: enable

    • name: Execute Command On Network Device
      include_role:
      name: nodedown_check( file to execute sh version command and register in a variable and printing it)

Error:

fatal: [xx-xxxx-xx-xx-a01.domain.net]: FAILED! => {
“changed”: false,
“invocation”: {
“module_args”: {
“auth_pass”: null,
“authorize”: null,
“commands”: [
“show version”
],
“host”: null,
“interval”: 1,
“match”: “all”,
“password”: null,
“port”: null,
“provider”: null,
“retries”: 10,
“ssh_keyfile”: null,
“timeout”: null,
“username”: null,
“wait_for”: null
}
},
“msg”: “Failed to authenticate: Authentication failed.”

For testing purpose do you got the same error while setting this statement

vars:
ansible_user: "{{ device_username }} "
ansible_password: “{{ device_password }}”
ansible_command_timeout: 240
ansible_become: yes
ansible_become_method: enable

within your task name: Execute Command On Network Device ?