ansible-collections / ansible.netcommon

Ansible Network Collection for Common Code
GNU General Public License v3.0
144 stars 104 forks source link

network_cli connection plugin using paramiko doesn't work with environment variables #195

Closed IshwarKanse closed 3 years ago

IshwarKanse commented 3 years ago
SUMMARY

Environment variables used in jumphost connection vars doesn't work with network_cli + paramiko. For example if we specify the private key using a env var like below:

export JH1_SSH_PRIVATE_KEY="/root/ansible-awx/jumphost.pem"
echo $JH1_SSH_PRIVATE_KEY
/root/ansible-awx/jumphost.pem

In the inventory variable

ansible_ssh_common_args = '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ProxyCommand="ssh -W %h:%p ec2-user@15.206.79.110 -i $JH1_SSH_PRIVATE_KEY -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"'

network_cli + paramiko doesn't use the value of the env var which points to a private key file path. If we use network_cli + libssh, the connection works fine and the value of the env var is used.

Also the env vars work in SSH connection targeting and running tasks on a remote Linux hosts.

ISSUE TYPE
COMPONENT NAME

network_cli paramiko

ANSIBLE VERSION
2.10.4
CONFIGURATION
# ansible-config dump --only-changed
DEFAULT_LOG_PATH(env: ANSIBLE_LOG_PATH) = /root/ansible.log
HOST_KEY_CHECKING(/root/ansible-awx/ansible.cfg) = False
OS / ENVIRONMENT

CentOS Linux release 8.0.1905 (Core)

STEPS TO REPRODUCE
# export JH1_SSH_PRIVATE_KEY="/root/ansible-awx/jumphost.pem"
# echo $JH1_SSH_PRIVATE_KEY
/root/ansible-awx/jumphost.pem
172.31.15.70

[all:vars]
ansible_user = ec2-user
ansible_ssh_private_key_file = ios.pem
ansible_connection = ansible.netcommon.network_cli
ansible_network_os = cisco.ios.ios
ansible_ssh_common_args = '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ProxyCommand="ssh -W %h:%p ec2-user@15.206.79.110 -i $JH1_SSH_PRIVATE_KEY -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"'
- name: test ios
  hosts: all
  gather_facts: false

  collections:
  - cisco.ios

  tasks:
  - name: run show version on remote devices
    cisco.ios.ios_command:
      commands: show version
EXPECTED RESULTS

This works with libssh

pip3 install ansible-pylibssh
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting ansible-pylibssh
  Downloading https://files.pythonhosted.org/packages/f1/2f/1b4a0999ae1ba32788fe801d82b163332301f273128244611c27fe7ff2f4/ansible_pylibssh-0.1.0-cp36-cp36m-manylinux1_x86_64.whl (2.0MB)
    100% |████████████████████████████████| 2.1MB 361kB/s 
Installing collected packages: ansible-pylibssh
Successfully installed ansible-pylibssh-0.1.0

export ANSIBLE_NETWORK_CLI_SSH_TYPE="libssh"

ansible-playbook -i inventory ios_collection_test.yml -vvvv
ansible-playbook 2.10.4
  config file = /root/ansible-awx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Using /root/ansible-awx/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
script declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
auto declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
Parsed /root/ansible-awx/inventory inventory source with ini plugin
Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
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: ios_collection_test.yml *************************************************************************************
Positional arguments: ios_collection_test.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('/root/ansible-awx/inventory',)
forks: 5
1 plays in ios_collection_test.yml

PLAY [test ios] *******************************************************************************************************
META: ran handlers
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon

TASK [run show version on remote devices] *****************************************************************************
task path: /root/ansible-awx/ios_collection_test.yml:9
<172.31.15.70> attempting to start connection
<172.31.15.70> using connection plugin ansible.netcommon.network_cli
Found ansible-connection at path /usr/local/bin/ansible-connection
<172.31.15.70> local domain socket does not exist, starting it
<172.31.15.70> control socket path is /root/.ansible/pc/671c32a692
<172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
<172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
<172.31.15.70> local domain socket listeners started successfully
<172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
<172.31.15.70> 
<172.31.15.70> local domain socket path is /root/.ansible/pc/671c32a692
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
<172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
<172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-3325lzkrr5ee `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498 `" && echo ansible-tmp-1609733411.4351683-3331-196200011325498="` echo /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498 `" ) && sleep 0'
<172.31.15.70> Attempting python interpreter discovery
<172.31.15.70> 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'
<172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
<172.31.15.70> PUT /root/.ansible/tmp/ansible-local-3325lzkrr5ee/tmpk6f4vllr TO /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/AnsiballZ_ios_command.py
<172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/ /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/ > /dev/null 2>&1 && sleep 0'
ok: [172.31.15.70] => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "stdout": [
        "Cisco IOS XE Software, Version 17.03.02\nCisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2020 by Cisco Systems, Inc.\nCompiled Sat 31-Oct-20 13:16 by mcpre\n\n\nCisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.\nAll rights reserved.  Certain components of Cisco IOS-XE software are\nlicensed under the GNU General Public License (\"GPL\") Version 2.0.  The\nsoftware code licensed under GPL Version 2.0 is free software that comes\nwith ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such\nGPL code under the terms of GPL Version 2.0.  For more details, see the\ndocumentation or \"License Notice\" file accompanying the IOS-XE software,\nor the applicable URL provided on the flyer accompanying the IOS-XE\nsoftware.\n\n\nROM: IOS-XE ROMMON\n\nip-172-31-15-70 uptime is 31 minutes\nUptime for this control processor is 32 minutes\nSystem returned to ROM by reload\nSystem image file is \"bootflash:packages.conf\"\nLast reload reason: reload\n\n\n\nThis product contains cryptographic features and is subject to United\nStates and local country laws governing import, export, transfer and\nuse. Delivery of Cisco cryptographic products does not imply\nthird-party authority to import, export, distribute or use encryption.\nImporters, exporters, distributors and users are responsible for\ncompliance with U.S. and local country laws. By using this product you\nagree to comply with applicable laws and regulations. If you are unable\nto comply with U.S. and local laws, return this product immediately.\n\nA summary of U.S. laws governing Cisco cryptographic products may be found at:\nhttp://www.cisco.com/wwl/export/crypto/tool/stqrg.html\n\nIf you require further assistance please contact us by sending email to\nexport@cisco.com.\n\nLicense Level: ax\nLicense Type: N/A(Smart License Enabled)\nNext reload license Level: ax\n\nThe current throughput level is 1000 kbps \n\n\nSmart Licensing Status: UNREGISTERED/No Licenses in Use\n\ncisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.\nProcessor board ID 90UJOKAZON8\nRouter operating mode: Autonomous\n1 Gigabit Ethernet interface\n32768K bytes of non-volatile configuration memory.\n3976140K bytes of physical memory.\n6188032K bytes of virtual hard disk at bootflash:.\n\nConfiguration register is 0x2102"
    ],
    "stdout_lines": [
        [
            "Cisco IOS XE Software, Version 17.03.02",
            "Cisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)",
            "Technical Support: http://www.cisco.com/techsupport",
            "Copyright (c) 1986-2020 by Cisco Systems, Inc.",
            "Compiled Sat 31-Oct-20 13:16 by mcpre",
            "",
            "",
            "Cisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.",
            "All rights reserved.  Certain components of Cisco IOS-XE software are",
            "licensed under the GNU General Public License (\"GPL\") Version 2.0.  The",
            "software code licensed under GPL Version 2.0 is free software that comes",
            "with ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such",
            "GPL code under the terms of GPL Version 2.0.  For more details, see the",
            "documentation or \"License Notice\" file accompanying the IOS-XE software,",
            "or the applicable URL provided on the flyer accompanying the IOS-XE",
            "software.",
            "",
            "",
            "ROM: IOS-XE ROMMON",
            "",
            "ip-172-31-15-70 uptime is 31 minutes",
            "Uptime for this control processor is 32 minutes",
            "System returned to ROM by reload",
            "System image file is \"bootflash:packages.conf\"",
            "Last reload reason: reload",
            "",
            "",
            "",
            "This product contains cryptographic features and is subject to United",
            "States and local country laws governing import, export, transfer and",
            "use. Delivery of Cisco cryptographic products does not imply",
            "third-party authority to import, export, distribute or use encryption.",
            "Importers, exporters, distributors and users are responsible for",
            "compliance with U.S. and local country laws. By using this product you",
            "agree to comply with applicable laws and regulations. If you are unable",
            "to comply with U.S. and local laws, return this product immediately.",
            "",
            "A summary of U.S. laws governing Cisco cryptographic products may be found at:",
            "http://www.cisco.com/wwl/export/crypto/tool/stqrg.html",
            "",
            "If you require further assistance please contact us by sending email to",
            "export@cisco.com.",
            "",
            "License Level: ax",
            "License Type: N/A(Smart License Enabled)",
            "Next reload license Level: ax",
            "",
            "The current throughput level is 1000 kbps ",
            "",
            "",
            "Smart Licensing Status: UNREGISTERED/No Licenses in Use",
            "",
            "cisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.",
            "Processor board ID 90UJOKAZON8",
            "Router operating mode: Autonomous",
            "1 Gigabit Ethernet interface",
            "32768K bytes of non-volatile configuration memory.",
            "3976140K bytes of physical memory.",
            "6188032K bytes of virtual hard disk at bootflash:.",
            "",
            "Configuration register is 0x2102"
        ]
    ]
}
META: ran handlers
META: ran handlers

PLAY RECAP ************************************************************************************************************
172.31.15.70               : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

2021-01-04 04:10:09,158 p=3325 u=root n=ansible | ansible-playbook 2.10.4
  config file = /root/ansible-awx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
2021-01-04 04:10:09,158 p=3325 u=root n=ansible | Using /root/ansible-awx/ansible.cfg as config file
2021-01-04 04:10:09,159 p=3325 u=root n=ansible | setting up inventory plugins
2021-01-04 04:10:09,180 p=3325 u=root n=ansible | host_list declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-04 04:10:09,180 p=3325 u=root n=ansible | script declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-04 04:10:09,180 p=3325 u=root n=ansible | auto declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-04 04:10:09,184 p=3325 u=root n=ansible | Parsed /root/ansible-awx/inventory inventory source with ini plugin
2021-01-04 04:10:09,390 p=3325 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-04 04:10:09,391 p=3325 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 04:10:09,404 p=3325 u=root n=ansible | Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
2021-01-04 04:10:09,430 p=3325 u=root n=ansible | Skipping callback 'default', as we already have a stdout callback.
2021-01-04 04:10:09,430 p=3325 u=root n=ansible | Skipping callback 'minimal', as we already have a stdout callback.
2021-01-04 04:10:09,430 p=3325 u=root n=ansible | Skipping callback 'oneline', as we already have a stdout callback.
2021-01-04 04:10:09,430 p=3325 u=root n=ansible | PLAYBOOK: ios_collection_test.yml *************************************************************************************
2021-01-04 04:10:09,431 p=3325 u=root n=ansible | 1 plays in ios_collection_test.yml
2021-01-04 04:10:09,434 p=3325 u=root n=ansible | PLAY [test ios] *******************************************************************************************************
2021-01-04 04:10:09,476 p=3325 u=root n=ansible | META: ran handlers
2021-01-04 04:10:09,478 p=3325 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 04:10:09,489 p=3325 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-04 04:10:09,497 p=3325 u=root n=ansible | TASK [run show version on remote devices] *****************************************************************************
2021-01-04 04:10:09,550 p=3331 u=root n=ansible | <172.31.15.70> attempting to start connection
2021-01-04 04:10:09,551 p=3331 u=root n=ansible | <172.31.15.70> using connection plugin ansible.netcommon.network_cli
2021-01-04 04:10:09,551 p=3331 u=root n=ansible | Found ansible-connection at path /usr/local/bin/ansible-connection
2021-01-04 04:10:11,302 p=3337 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-04 04:10:11,378 p=3337 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-04 04:10:11,431 p=3331 u=root n=ansible | <172.31.15.70> local domain socket does not exist, starting it
2021-01-04 04:10:11,432 p=3331 u=root n=ansible | <172.31.15.70> control socket path is /root/.ansible/pc/671c32a692
2021-01-04 04:10:11,432 p=3331 u=root n=ansible | <172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-04 04:10:11,432 p=3331 u=root n=ansible | <172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-04 04:10:11,432 p=3331 u=root n=ansible | <172.31.15.70> local domain socket listeners started successfully
2021-01-04 04:10:11,432 p=3331 u=root n=ansible | <172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
2021-01-04 04:10:11,432 p=3331 u=root n=ansible | network_os is set to cisco.ios.ios
2021-01-04 04:10:11,432 p=3331 u=root n=ansible | <172.31.15.70> 
2021-01-04 04:10:11,433 p=3331 u=root n=ansible | <172.31.15.70> local domain socket path is /root/.ansible/pc/671c32a692
2021-01-04 04:10:11,434 p=3331 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 04:10:11,434 p=3331 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 04:10:11,435 p=3331 u=root n=ansible | <172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
2021-01-04 04:10:11,435 p=3331 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-3325lzkrr5ee `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498 `" && echo ansible-tmp-1609733411.4351683-3331-196200011325498="` echo /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498 `" ) && sleep 0'
2021-01-04 04:10:11,588 p=3331 u=root n=ansible | <172.31.15.70> Attempting python interpreter discovery
2021-01-04 04:10:11,589 p=3331 u=root n=ansible | <172.31.15.70> 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'
2021-01-04 04:10:11,596 p=3331 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
2021-01-04 04:10:11,640 p=3331 u=root n=ansible | Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
2021-01-04 04:10:11,641 p=3331 u=root n=ansible | <172.31.15.70> PUT /root/.ansible/tmp/ansible-local-3325lzkrr5ee/tmpk6f4vllr TO /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/AnsiballZ_ios_command.py
2021-01-04 04:10:11,642 p=3331 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/ /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/AnsiballZ_ios_command.py && sleep 0'
2021-01-04 04:10:11,649 p=3331 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/AnsiballZ_ios_command.py && sleep 0'
2021-01-04 04:10:11,840 p=3337 u=root n=ansible | <172.31.15.70> ESTABLISH LIBSSH CONNECTION FOR USER: ec2-user on PORT 22 TO 172.31.15.70
2021-01-04 04:10:14,236 p=3337 u=root n=ansible | ssh connection is OK: <pylibsshext.session.Session object at 0x7f6ac6a52f68>
2021-01-04 04:10:15,224 p=3331 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-3325lzkrr5ee/ansible-tmp-1609733411.4351683-3331-196200011325498/ > /dev/null 2>&1 && sleep 0'
2021-01-04 04:10:15,237 p=3325 u=root n=ansible | ok: [172.31.15.70] => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "stdout": [
        "Cisco IOS XE Software, Version 17.03.02\nCisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2020 by Cisco Systems, Inc.\nCompiled Sat 31-Oct-20 13:16 by mcpre\n\n\nCisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.\nAll rights reserved.  Certain components of Cisco IOS-XE software are\nlicensed under the GNU General Public License (\"GPL\") Version 2.0.  The\nsoftware code licensed under GPL Version 2.0 is free software that comes\nwith ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such\nGPL code under the terms of GPL Version 2.0.  For more details, see the\ndocumentation or \"License Notice\" file accompanying the IOS-XE software,\nor the applicable URL provided on the flyer accompanying the IOS-XE\nsoftware.\n\n\nROM: IOS-XE ROMMON\n\nip-172-31-15-70 uptime is 31 minutes\nUptime for this control processor is 32 minutes\nSystem returned to ROM by reload\nSystem image file is \"bootflash:packages.conf\"\nLast reload reason: reload\n\n\n\nThis product contains cryptographic features and is subject to United\nStates and local country laws governing import, export, transfer and\nuse. Delivery of Cisco cryptographic products does not imply\nthird-party authority to import, export, distribute or use encryption.\nImporters, exporters, distributors and users are responsible for\ncompliance with U.S. and local country laws. By using this product you\nagree to comply with applicable laws and regulations. If you are unable\nto comply with U.S. and local laws, return this product immediately.\n\nA summary of U.S. laws governing Cisco cryptographic products may be found at:\nhttp://www.cisco.com/wwl/export/crypto/tool/stqrg.html\n\nIf you require further assistance please contact us by sending email to\nexport@cisco.com.\n\nLicense Level: ax\nLicense Type: N/A(Smart License Enabled)\nNext reload license Level: ax\n\nThe current throughput level is 1000 kbps \n\n\nSmart Licensing Status: UNREGISTERED/No Licenses in Use\n\ncisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.\nProcessor board ID 90UJOKAZON8\nRouter operating mode: Autonomous\n1 Gigabit Ethernet interface\n32768K bytes of non-volatile configuration memory.\n3976140K bytes of physical memory.\n6188032K bytes of virtual hard disk at bootflash:.\n\nConfiguration register is 0x2102"
    ],
    "stdout_lines": [
        [
            "Cisco IOS XE Software, Version 17.03.02",
            "Cisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)",
            "Technical Support: http://www.cisco.com/techsupport",
            "Copyright (c) 1986-2020 by Cisco Systems, Inc.",
            "Compiled Sat 31-Oct-20 13:16 by mcpre",
            "",
            "",
            "Cisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.",
            "All rights reserved.  Certain components of Cisco IOS-XE software are",
            "licensed under the GNU General Public License (\"GPL\") Version 2.0.  The",
            "software code licensed under GPL Version 2.0 is free software that comes",
            "with ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such",
            "GPL code under the terms of GPL Version 2.0.  For more details, see the",
            "documentation or \"License Notice\" file accompanying the IOS-XE software,",
            "or the applicable URL provided on the flyer accompanying the IOS-XE",
            "software.",
            "",
            "",
            "ROM: IOS-XE ROMMON",
            "",
            "ip-172-31-15-70 uptime is 31 minutes",
            "Uptime for this control processor is 32 minutes",
            "System returned to ROM by reload",
            "System image file is \"bootflash:packages.conf\"",
            "Last reload reason: reload",
            "",
            "",
            "",
            "This product contains cryptographic features and is subject to United",
            "States and local country laws governing import, export, transfer and",
            "use. Delivery of Cisco cryptographic products does not imply",
            "third-party authority to import, export, distribute or use encryption.",
            "Importers, exporters, distributors and users are responsible for",
            "compliance with U.S. and local country laws. By using this product you",
            "agree to comply with applicable laws and regulations. If you are unable",
            "to comply with U.S. and local laws, return this product immediately.",
            "",
            "A summary of U.S. laws governing Cisco cryptographic products may be found at:",
            "http://www.cisco.com/wwl/export/crypto/tool/stqrg.html",
            "",
            "If you require further assistance please contact us by sending email to",
            "export@cisco.com.",
            "",
            "License Level: ax",
            "License Type: N/A(Smart License Enabled)",
            "Next reload license Level: ax",
            "",
            "The current throughput level is 1000 kbps ",
            "",
            "",
            "Smart Licensing Status: UNREGISTERED/No Licenses in Use",
            "",
            "cisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.",
            "Processor board ID 90UJOKAZON8",
            "Router operating mode: Autonomous",
            "1 Gigabit Ethernet interface",
            "32768K bytes of non-volatile configuration memory.",
            "3976140K bytes of physical memory.",
            "6188032K bytes of virtual hard disk at bootflash:.",
            "",
            "Configuration register is 0x2102"
        ]
    ]
}
2021-01-04 04:10:15,241 p=3325 u=root n=ansible | META: ran handlers
2021-01-04 04:10:15,246 p=3325 u=root n=ansible | META: ran handlers
2021-01-04 04:10:15,248 p=3325 u=root n=ansible | PLAY RECAP ************************************************************************************************************
2021-01-04 04:10:15,249 p=3325 u=root n=ansible | 172.31.15.70               : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
2021-01-04 04:10:15,355 p=3337 u=root n=ansible | shutdown complete
ACTUAL RESULTS
Jan  4 03:42:38 ip-172-31-4-162 sshd[1327]: Connection closed by authenticating user ec2-user 116.75.165.245 port 43870 [preauth]
ansible-playbook -i inventory ios_collection_test.yml -vvvv
ansible-playbook 2.10.4
  config file = /root/ansible-awx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Using /root/ansible-awx/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
script declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
auto declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
Parsed /root/ansible-awx/inventory inventory source with ini plugin
Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
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: ios_collection_test.yml *************************************************************************************
Positional arguments: ios_collection_test.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('/root/ansible-awx/inventory',)
forks: 5
1 plays in ios_collection_test.yml

PLAY [test ios] *******************************************************************************************************
META: ran handlers
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon

TASK [run show version on remote devices] *****************************************************************************
task path: /root/ansible-awx/ios_collection_test.yml:9
<172.31.15.70> attempting to start connection
<172.31.15.70> using connection plugin ansible.netcommon.network_cli
Found ansible-connection at path /usr/local/bin/ansible-connection
<172.31.15.70> local domain socket does not exist, starting it
<172.31.15.70> control socket path is /root/.ansible/pc/9575800eb6
<172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
<172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
<172.31.15.70> local domain socket listeners started successfully
<172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
<172.31.15.70> 
<172.31.15.70> local domain socket path is /root/.ansible/pc/9575800eb6
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
<172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
<172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-3202_yxn8tqa `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987 `" && echo ansible-tmp-1609731757.8274982-3208-203566527296987="` echo /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987 `" ) && sleep 0'
<172.31.15.70> Attempting python interpreter discovery
<172.31.15.70> 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'
<172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
<172.31.15.70> PUT /root/.ansible/tmp/ansible-local-3202_yxn8tqa/tmp67pp8kwg TO /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/AnsiballZ_ios_command.py
<172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/ /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
  File "/tmp/ansible_cisco.ios.ios_command_payload_r9bits_h/ansible_cisco.ios.ios_command_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 92, in get_capabilities
    capabilities = Connection(module._socket_path).get_capabilities()
  File "/tmp/ansible_cisco.ios.ios_command_payload_r9bits_h/ansible_cisco.ios.ios_command_payload.zip/ansible/module_utils/connection.py", line 195, in __rpc__
    raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)
fatal: [172.31.15.70]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "msg": "Error reading SSH protocol banner"
}

PLAY RECAP ************************************************************************************************************
172.31.15.70               : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
cat ~/ansible.log 
2021-01-04 03:42:35,397 p=3202 u=root n=ansible | ansible-playbook 2.10.4
  config file = /root/ansible-awx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
2021-01-04 03:42:35,398 p=3202 u=root n=ansible | Using /root/ansible-awx/ansible.cfg as config file
2021-01-04 03:42:35,398 p=3202 u=root n=ansible | setting up inventory plugins
2021-01-04 03:42:35,432 p=3202 u=root n=ansible | host_list declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-04 03:42:35,433 p=3202 u=root n=ansible | script declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-04 03:42:35,433 p=3202 u=root n=ansible | auto declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-04 03:42:35,438 p=3202 u=root n=ansible | Parsed /root/ansible-awx/inventory inventory source with ini plugin
2021-01-04 03:42:35,667 p=3202 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-04 03:42:35,669 p=3202 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 03:42:35,684 p=3202 u=root n=ansible | Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
2021-01-04 03:42:35,712 p=3202 u=root n=ansible | Skipping callback 'default', as we already have a stdout callback.
2021-01-04 03:42:35,712 p=3202 u=root n=ansible | Skipping callback 'minimal', as we already have a stdout callback.
2021-01-04 03:42:35,712 p=3202 u=root n=ansible | Skipping callback 'oneline', as we already have a stdout callback.
2021-01-04 03:42:35,712 p=3202 u=root n=ansible | PLAYBOOK: ios_collection_test.yml *************************************************************************************
2021-01-04 03:42:35,713 p=3202 u=root n=ansible | 1 plays in ios_collection_test.yml
2021-01-04 03:42:35,715 p=3202 u=root n=ansible | PLAY [test ios] *******************************************************************************************************
2021-01-04 03:42:35,790 p=3202 u=root n=ansible | META: ran handlers
2021-01-04 03:42:35,792 p=3202 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 03:42:35,803 p=3202 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-04 03:42:35,821 p=3202 u=root n=ansible | TASK [run show version on remote devices] *****************************************************************************
2021-01-04 03:42:35,882 p=3208 u=root n=ansible | <172.31.15.70> attempting to start connection
2021-01-04 03:42:35,882 p=3208 u=root n=ansible | <172.31.15.70> using connection plugin ansible.netcommon.network_cli
2021-01-04 03:42:35,882 p=3208 u=root n=ansible | Found ansible-connection at path /usr/local/bin/ansible-connection
2021-01-04 03:42:37,690 p=3213 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-04 03:42:37,770 p=3213 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-04 03:42:37,824 p=3208 u=root n=ansible | <172.31.15.70> local domain socket does not exist, starting it
2021-01-04 03:42:37,824 p=3208 u=root n=ansible | <172.31.15.70> control socket path is /root/.ansible/pc/9575800eb6
2021-01-04 03:42:37,824 p=3208 u=root n=ansible | <172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-04 03:42:37,824 p=3208 u=root n=ansible | <172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-04 03:42:37,825 p=3208 u=root n=ansible | <172.31.15.70> local domain socket listeners started successfully
2021-01-04 03:42:37,825 p=3208 u=root n=ansible | <172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
2021-01-04 03:42:37,825 p=3208 u=root n=ansible | network_os is set to cisco.ios.ios
2021-01-04 03:42:37,825 p=3208 u=root n=ansible | <172.31.15.70> 
2021-01-04 03:42:37,825 p=3208 u=root n=ansible | <172.31.15.70> local domain socket path is /root/.ansible/pc/9575800eb6
2021-01-04 03:42:37,826 p=3208 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 03:42:37,827 p=3208 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-04 03:42:37,827 p=3208 u=root n=ansible | <172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
2021-01-04 03:42:37,827 p=3208 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-3202_yxn8tqa `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987 `" && echo ansible-tmp-1609731757.8274982-3208-203566527296987="` echo /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987 `" ) && sleep 0'
2021-01-04 03:42:37,992 p=3208 u=root n=ansible | <172.31.15.70> Attempting python interpreter discovery
2021-01-04 03:42:37,993 p=3208 u=root n=ansible | <172.31.15.70> 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'
2021-01-04 03:42:38,001 p=3208 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
2021-01-04 03:42:38,044 p=3208 u=root n=ansible | Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
2021-01-04 03:42:38,045 p=3208 u=root n=ansible | <172.31.15.70> PUT /root/.ansible/tmp/ansible-local-3202_yxn8tqa/tmp67pp8kwg TO /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/AnsiballZ_ios_command.py
2021-01-04 03:42:38,045 p=3208 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/ /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/AnsiballZ_ios_command.py && sleep 0'
2021-01-04 03:42:38,053 p=3208 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/AnsiballZ_ios_command.py && sleep 0'
2021-01-04 03:42:38,233 p=3213 u=root n=ansible | <172.31.15.70> ESTABLISH PARAMIKO SSH CONNECTION FOR USER: ec2-user on PORT 22 TO 172.31.15.70
2021-01-04 03:42:38,236 p=3213 u=root n=ansible | <172.31.15.70> CONFIGURE PROXY COMMAND FOR CONNECTION: ssh -W 172.31.15.70:22 ec2-user@15.206.79.110 -i $JH1_SSH_PRIVATE_KEY -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
2021-01-04 03:42:38,237 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | starting thread (client mode): 0x3ce95a20
2021-01-04 03:42:38,237 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | Local version/idstring: SSH-2.0-paramiko_2.7.2
2021-01-04 03:42:53,240 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | Exception: Error reading SSH protocol banner
2021-01-04 03:42:53,243 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | Traceback (most recent call last):
2021-01-04 03:42:53,243 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |   File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 2211, in _check_banner
2021-01-04 03:42:53,243 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |     buf = self.packetizer.readline(timeout)
2021-01-04 03:42:53,243 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |   File "/usr/local/lib/python3.6/site-packages/paramiko/packet.py", line 380, in readline
2021-01-04 03:42:53,243 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |     buf += self._read_timeout(timeout)
2021-01-04 03:42:53,243 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |   File "/usr/local/lib/python3.6/site-packages/paramiko/packet.py", line 622, in _read_timeout
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |     raise socket.timeout()
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | socket.timeout
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | 
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | During handling of the above exception, another exception occurred:
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | 
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | Traceback (most recent call last):
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |   File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 2039, in run
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |     self._check_banner()
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |   File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 2216, in _check_banner
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] |     "Error reading SSH protocol banner" + str(e)
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
2021-01-04 03:42:53,244 p=3213 u=root n=p=3213 u=root | paramiko [172.31.15.70] | 
2021-01-04 03:42:53,249 p=3213 u=root n=ansible | Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 2211, in _check_banner
    buf = self.packetizer.readline(timeout)
  File "/usr/local/lib/python3.6/site-packages/paramiko/packet.py", line 380, in readline
    buf += self._read_timeout(timeout)
  File "/usr/local/lib/python3.6/site-packages/paramiko/packet.py", line 622, in _read_timeout
    raise socket.timeout()
socket.timeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 352, in _connect_uncached
    **ssh_connect_kwargs
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 406, in connect
    t.start_client(timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 660, in start_client
    raise e
  File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 2039, in run
    self._check_banner()
  File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 2216, in _check_banner
    "Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/ansible/utils/jsonrpc.py", line 46, in handle_request
    result = rpc_method(*args, **kwargs)
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 322, in get_capabilities
    result = super(Cliconf, self).get_capabilities()
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/cliconf/__init__.py", line 283, in get_capabilities
    result['device_info'] = self.get_device_info()
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 270, in get_device_info
    reply = self.get(command="show version")
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 263, in get
    check_all=check_all,
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/cliconf/__init__.py", line 127, in send_command
    resp = self._connection.send(**kwargs)
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/network_cli.py", line 313, in wrapped
    self._connect()
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/network_cli.py", line 538, in _connect
    ssh = self.ssh_type_conn._connect()
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 243, in _connect
    self.ssh = SSH_CONNECTION_CACHE[cache_key] = self._connect_uncached()
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 368, in _connect_uncached
    raise AnsibleConnectionFailure(msg)
ansible.errors.AnsibleConnectionFailure: Error reading SSH protocol banner

2021-01-04 03:42:53,263 p=3208 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-3202_yxn8tqa/ansible-tmp-1609731757.8274982-3208-203566527296987/ > /dev/null 2>&1 && sleep 0'
2021-01-04 03:42:53,273 p=3202 u=root n=ansible | The full traceback is:
  File "/tmp/ansible_cisco.ios.ios_command_payload_r9bits_h/ansible_cisco.ios.ios_command_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 92, in get_capabilities
    capabilities = Connection(module._socket_path).get_capabilities()
  File "/tmp/ansible_cisco.ios.ios_command_payload_r9bits_h/ansible_cisco.ios.ios_command_payload.zip/ansible/module_utils/connection.py", line 195, in __rpc__
    raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)

2021-01-04 03:42:53,273 p=3202 u=root n=ansible | fatal: [172.31.15.70]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "msg": "Error reading SSH protocol banner"
}
2021-01-04 03:42:53,275 p=3202 u=root n=ansible | PLAY RECAP ************************************************************************************************************
2021-01-04 03:42:53,275 p=3202 u=root n=ansible | 172.31.15.70               : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
2021-01-04 03:42:53,389 p=3213 u=root n=ansible | shutdown complete
IshwarKanse commented 3 years ago

For the jump host proxy vars, we are seeing issues with chained jump hosts too for network devices. It doesn't work with paramiko as well as libssh.

Inventory

172.31.4.139

[all:vars]
ansible_user = ec2-user
ansible_ssh_private_key_file = /root/ansible-awx/ios.pem
ansible_ssh_common_args = -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\\\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\\\" ec2-user@13.234.120.133\" ec2-user@13.233.88.57"

Playbook run:

[root@ubuntu ios-jumphost]# ansible-playbook -i managed managed-node.yml -vvvv
ansible-playbook 2.10.4
  config file = /root/ios-jumphost/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Using /root/ios-jumphost/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /root/ios-jumphost/managed as it did not pass its verify_file() method
script declined parsing /root/ios-jumphost/managed as it did not pass its verify_file() method
auto declined parsing /root/ios-jumphost/managed as it did not pass its verify_file() method
Parsed /root/ios-jumphost/managed inventory source with ini plugin
Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
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: managed-node.yml ********************************************************************************************
Positional arguments: managed-node.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('/root/ios-jumphost/managed',)
forks: 5
1 plays in managed-node.yml

PLAY [Run some tasks on managed node] *********************************************************************************

TASK [Gathering Facts] ************************************************************************************************
task path: /root/ios-jumphost/managed-node.yml:1
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'echo ~ec2-user && sleep 0'"'"''
<172.31.4.139> (0, b'/home/ec2-user\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket "/root/.ansible/cp/dd995fd338" does not exist\r\ndebug1: Executing proxy command: exec ssh -i /root/ansible-awx/jump3.pem -W 172.31.4.139:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\\\\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\\\\" ec2-user@13.234.120.133" ec2-user@13.233.88.57\r\ndebug3: timeout: 10000 ms remain after connect\r\ndebug1: identity file /root/ansible-awx/ios.pem type -1\r\ndebug1: identity file /root/ansible-awx/ios.pem-cert type -1\r\ndebug1: Local version string SSH-2.0-OpenSSH_7.8\r\nWarning: Permanently added \'13.127.247.172\' (ECDSA) to the list of known hosts.\r\nWarning: Permanently added \'13.234.120.133\' (ECDSA) to the list of known hosts.\r\nWarning: Permanently added \'13.233.88.57\' (ECDSA) to the list of known hosts.\r\ndebug1: Remote protocol version 2.0, remote software version OpenSSH_8.0\r\ndebug1: match: OpenSSH_8.0 pat OpenSSH* compat 0x04000000\r\ndebug2: fd 8 setting O_NONBLOCK\r\ndebug2: fd 7 setting O_NONBLOCK\r\ndebug1: Authenticating to 172.31.4.139:22 as \'ec2-user\'\r\ndebug3: hostkeys_foreach: reading file "/dev/null"\r\ndebug3: send packet: type 20\r\ndebug1: SSH2_MSG_KEXINIT sent\r\ndebug3: receive packet: type 20\r\ndebug1: SSH2_MSG_KEXINIT received\r\ndebug2: local client KEXINIT proposal\r\ndebug2: KEX algorithms: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c\r\ndebug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa\r\ndebug2: ciphers ctos: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc\r\ndebug2: ciphers stoc: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc\r\ndebug2: MACs ctos: hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512\r\ndebug2: MACs stoc: hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512\r\ndebug2: compression ctos: zlib@openssh.com,zlib,none\r\ndebug2: compression stoc: zlib@openssh.com,zlib,none\r\ndebug2: languages ctos: \r\ndebug2: languages stoc: \r\ndebug2: first_kex_follows 0 \r\ndebug2: reserved 0 \r\ndebug2: peer server KEXINIT proposal\r\ndebug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1\r\ndebug2: host key algorithms: rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519\r\ndebug2: ciphers ctos: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc\r\ndebug2: ciphers stoc: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc\r\ndebug2: MACs ctos: hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512\r\ndebug2: MACs stoc: hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512\r\ndebug2: compression ctos: none,zlib@openssh.com\r\ndebug2: compression stoc: none,zlib@openssh.com\r\ndebug2: languages ctos: \r\ndebug2: languages stoc: \r\ndebug2: first_kex_follows 0 \r\ndebug2: reserved 0 \r\ndebug1: kex: algorithm: curve25519-sha256@libssh.org\r\ndebug1: kex: host key algorithm: ecdsa-sha2-nistp256\r\ndebug1: kex: server->client cipher: aes256-gcm@openssh.com MAC: <implicit> compression: zlib@openssh.com\r\ndebug1: kex: client->server cipher: aes256-gcm@openssh.com MAC: <implicit> compression: zlib@openssh.com\r\ndebug1: kex: curve25519-sha256@libssh.org need=32 dh_need=32\r\ndebug1: kex: curve25519-sha256@libssh.org need=32 dh_need=32\r\ndebug3: send packet: type 30\r\ndebug1: expecting SSH2_MSG_KEX_ECDH_REPLY\r\ndebug3: receive packet: type 31\r\ndebug1: Server host key: ecdsa-sha2-nistp256 SHA256:usX1yHo9p+fGPEZ175Az0HRepKfy2I/LY41J/CNRrJY\r\ndebug3: hostkeys_foreach: reading file "/dev/null"\r\nWarning: Permanently added \'172.31.4.139\' (ECDSA) to the list of known hosts.\r\ndebug3: send packet: type 21\r\ndebug2: set_newkeys: mode 1\r\ndebug1: rekey after 4294967296 blocks\r\ndebug1: SSH2_MSG_NEWKEYS sent\r\ndebug1: expecting SSH2_MSG_NEWKEYS\r\ndebug3: receive packet: type 21\r\ndebug1: SSH2_MSG_NEWKEYS received\r\ndebug2: set_newkeys: mode 0\r\ndebug1: rekey after 4294967296 blocks\r\ndebug2: key: /root/ansible-awx/ios.pem ((nil)), explicit\r\ndebug3: send packet: type 5\r\ndebug3: receive packet: type 7\r\ndebug1: SSH2_MSG_EXT_INFO received\r\ndebug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>\r\ndebug3: receive packet: type 6\r\ndebug2: service_accept: ssh-userauth\r\ndebug1: SSH2_MSG_SERVICE_ACCEPT received\r\ndebug3: send packet: type 50\r\ndebug3: receive packet: type 51\r\ndebug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic\r\ndebug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic\r\ndebug3: preferred gssapi-with-mic,gssapi-keyex,hostbased,publickey\r\ndebug3: authmethod_lookup gssapi-with-mic\r\ndebug3: remaining preferred: gssapi-keyex,hostbased,publickey\r\ndebug3: authmethod_is_enabled gssapi-with-mic\r\ndebug1: Next authentication method: gssapi-with-mic\r\ndebug1: Unspecified GSS failure.  Minor code may provide more information\nNo Kerberos credentials available (default cache: KCM:)\n\n\r\ndebug1: Unspecified GSS failure.  Minor code may provide more information\nNo Kerberos credentials available (default cache: KCM:)\n\n\r\ndebug2: we did not send a packet, disable method\r\ndebug3: authmethod_lookup gssapi-keyex\r\ndebug3: remaining preferred: hostbased,publickey\r\ndebug3: authmethod_is_enabled gssapi-keyex\r\ndebug1: Next authentication method: gssapi-keyex\r\ndebug1: No valid Key exchange context\r\ndebug2: we did not send a packet, disable method\r\ndebug3: authmethod_lookup publickey\r\ndebug3: remaining preferred: ,publickey\r\ndebug3: authmethod_is_enabled publickey\r\ndebug1: Next authentication method: publickey\r\ndebug1: Trying private key: /root/ansible-awx/ios.pem\r\ndebug3: sign_and_send_pubkey: RSA SHA256:+eFXQVZkDPDybBz6/Jsqz6et9p44j2sYY1ICRwIGpCA\r\ndebug3: sign_and_send_pubkey: signing using rsa-sha2-256\r\ndebug3: send packet: type 50\r\ndebug2: we sent a publickey packet, wait for reply\r\ndebug3: receive packet: type 52\r\ndebug1: Enabling compression at level 6.\r\ndebug1: Authentication succeeded (publickey).\r\nAuthenticated to 172.31.4.139 (via proxy).\r\ndebug1: setting up multiplex master socket\r\ndebug3: muxserver_listen: temporary control path /root/.ansible/cp/dd995fd338.8rWExxcMbHVwmSB3\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug3: fd 6 is O_NONBLOCK\r\ndebug3: fd 6 is O_NONBLOCK\r\ndebug1: channel 0: new [/root/.ansible/cp/dd995fd338]\r\ndebug3: muxserver_listen: mux listener channel 0 fd 6\r\ndebug1: control_persist_detach: backgrounding master process\r\ndebug2: control_persist_detach: background process is 6270\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug1: forking to background\r\ndebug1: Entering interactive session.\r\ndebug1: pledge: id\r\ndebug2: set_control_persist_exit_time: schedule exit in 60 seconds\r\ndebug1: multiplexing control connection\r\ndebug2: fd 9 setting O_NONBLOCK\r\ndebug3: fd 9 is O_NONBLOCK\r\ndebug1: channel 1: new [mux-control]\r\ndebug3: channel_post_mux_listener: new mux channel 1 fd 9\r\ndebug3: mux_master_read_cb: channel 1: hello sent\r\ndebug2: set_control_persist_exit_time: cancel scheduled exit\r\ndebug3: mux_master_read_cb: channel 1 packet type 0x00000001 len 4\r\ndebug2: process_mux_master_hello: channel 1 slave version 4\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_master_read_cb: channel 1 packet type 0x10000004 len 4\r\ndebug2: process_mux_alive_check: channel 1: alive check\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_master_read_cb: channel 1 packet type 0x10000002 len 108\r\ndebug2: process_mux_new_session: channel 1: request tty 0, X 0, agent 0, subsys 0, term "xterm-256color", cmd "/bin/sh -c \'echo ~ec2-user && sleep 0\'", env 1\r\ndebug3: process_mux_new_session: got fds stdin 10, stdout 11, stderr 12\r\ndebug2: fd 11 setting O_NONBLOCK\r\ndebug2: fd 12 setting O_NONBLOCK\r\ndebug1: channel 2: new [client-session]\r\ndebug2: process_mux_new_session: channel_new: 2 linked to control channel 1\r\ndebug2: channel 2: send open\r\ndebug3: send packet: type 90\r\ndebug3: receive packet: type 80\r\ndebug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0\r\ndebug3: receive packet: type 4\r\ndebug1: Remote: /home/ec2-user/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding\r\ndebug3: receive packet: type 91\r\ndebug2: channel_input_open_confirmation: channel 2: callback start\r\ndebug2: client_session2_setup: id 2\r\ndebug1: Sending environment.\r\ndebug1: Sending env LANG = en_US.UTF-8\r\ndebug2: channel 2: request env confirm 0\r\ndebug3: send packet: type 98\r\ndebug1: Sending command: /bin/sh -c \'echo ~ec2-user && sleep 0\'\r\ndebug2: channel 2: request exec confirm 1\r\ndebug3: send packet: type 98\r\ndebug3: mux_session_confirm: sending success reply\r\ndebug2: channel_input_open_confirmation: channel 2: callback done\r\ndebug2: channel 2: open confirm rwindow 0 rmax 32768\r\ndebug2: channel 2: rcvd adjust 2097152\r\ndebug3: receive packet: type 99\r\ndebug2: channel_input_status_confirm: type 99 id 2\r\ndebug2: exec request accepted on channel 2\r\ndebug3: receive packet: type 98\r\ndebug1: client_input_channel_req: channel 2 rtype exit-status reply 0\r\ndebug3: mux_exit_message: channel 2: exit message, exitval 0\r\ndebug3: receive packet: type 98\r\ndebug1: client_input_channel_req: channel 2 rtype eow@openssh.com reply 0\r\ndebug2: channel 2: rcvd eow\r\ndebug2: channel 2: close_read\r\ndebug2: channel 2: input open -> closed\r\ndebug3: receive packet: type 96\r\ndebug2: channel 2: rcvd eof\r\ndebug2: channel 2: output open -> drain\r\ndebug3: receive packet: type 97\r\ndebug2: channel 2: rcvd close\r\ndebug3: channel 2: will not send data after close\r\ndebug3: channel 2: will not send data after close\r\ndebug2: channel 2: obuf empty\r\ndebug2: channel 2: close_write\r\ndebug2: channel 2: output drain -> closed\r\ndebug2: channel 2: send close\r\ndebug3: send packet: type 97\r\ndebug2: channel 2: is dead\r\ndebug2: channel 2: gc: notify user\r\ndebug3: mux_master_session_cleanup_cb: entering for channel 2\r\ndebug2: channel 1: rcvd close\r\ndebug2: channel 1: output open -> drain\r\ndebug2: channel 1: close_read\r\ndebug2: channel 1: input open -> closed\r\ndebug2: channel 2: gc: user detached\r\ndebug2: channel 2: is dead\r\ndebug2: channel 2: garbage collecting\r\ndebug1: channel 2: free: client-session, nchannels 3\r\ndebug3: channel 2: status: The following connections are open:\r\n  #1 mux-control (t16 nr0 i3/0 o1/0 fd 9/9 cc -1)\r\n  #2 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)\r\n\r\ndebug2: channel 1: obuf empty\r\ndebug2: channel 1: close_write\r\ndebug2: channel 1: output drain -> closed\r\ndebug2: channel 1: is dead (local)\r\ndebug2: channel 1: gc: notify user\r\ndebug3: mux_master_control_cleanup_cb: entering for channel 1\r\ndebug2: channel 1: gc: user detached\r\ndebug2: channel 1: is dead (local)\r\ndebug2: channel 1: garbage collecting\r\ndebug1: channel 1: free: mux-control, nchannels 2\r\ndebug3: channel 1: status: The following connections are open:\r\n  #1 mux-control (t16 nr0 i3/0 o3/0 fd 9/9 cc -1)\r\n\r\ndebug2: set_control_persist_exit_time: schedule exit in 60 seconds\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/ec2-user/.ansible/tmp `"&& mkdir "` echo /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275 `" && echo ansible-tmp-1610090180.0882702-6262-279084550780275="` echo /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275 `" ) && sleep 0'"'"''
<172.31.4.139> (0, b'ansible-tmp-1610090180.0882702-6262-279084550780275=/home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> Attempting python interpreter discovery
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/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'"'"''
<172.31.4.139> (0, b'PLATFORM\nLinux\nFOUND\n/usr/libexec/platform-python\nENDFOUND\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'/usr/libexec/platform-python && sleep 0'"'"''
<172.31.4.139> (0, b'{"platform_dist_result": ["redhat", "8.3", "Ootpa"], "osrelease_content": "NAME=\\"Red Hat Enterprise Linux\\"\\nVERSION=\\"8.3 (Ootpa)\\"\\nID=\\"rhel\\"\\nID_LIKE=\\"fedora\\"\\nVERSION_ID=\\"8.3\\"\\nPLATFORM_ID=\\"platform:el8\\"\\nPRETTY_NAME=\\"Red Hat Enterprise Linux 8.3 (Ootpa)\\"\\nANSI_COLOR=\\"0;31\\"\\nCPE_NAME=\\"cpe:/o:redhat:enterprise_linux:8.3:GA\\"\\nHOME_URL=\\"https://www.redhat.com/\\"\\nBUG_REPORT_URL=\\"https://bugzilla.redhat.com/\\"\\n\\nREDHAT_BUGZILLA_PRODUCT=\\"Red Hat Enterprise Linux 8\\"\\nREDHAT_BUGZILLA_PRODUCT_VERSION=8.3\\nREDHAT_SUPPORT_PRODUCT=\\"Red Hat Enterprise Linux\\"\\nREDHAT_SUPPORT_PRODUCT_VERSION=\\"8.3\\"\\n"}\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
Using module file /usr/local/lib/python3.6/site-packages/ansible/modules/setup.py
<172.31.4.139> PUT /root/.ansible/tmp/ansible-local-62568tzliwhy/tmpbddej88a TO /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275/AnsiballZ_setup.py
<172.31.4.139> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 '[172.31.4.139]'
<172.31.4.139> (0, b'sftp> put /root/.ansible/tmp/ansible-local-62568tzliwhy/tmpbddej88a /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275/AnsiballZ_setup.py\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug2: Remote version: 3\r\ndebug2: Server supports extension "posix-rename@openssh.com" revision 1\r\ndebug2: Server supports extension "statvfs@openssh.com" revision 2\r\ndebug2: Server supports extension "fstatvfs@openssh.com" revision 2\r\ndebug2: Server supports extension "hardlink@openssh.com" revision 1\r\ndebug2: Server supports extension "fsync@openssh.com" revision 1\r\ndebug2: Unrecognised server extension "lsetstat@openssh.com"\r\ndebug3: Sent message fd 3 T:16 I:1\r\ndebug3: SSH_FXP_REALPATH . -> /home/ec2-user size 0\r\ndebug3: Looking up /root/.ansible/tmp/ansible-local-62568tzliwhy/tmpbddej88a\r\ndebug3: Sent message fd 3 T:17 I:2\r\ndebug3: Received stat reply T:101 I:2\r\ndebug1: Couldn\'t stat remote file: No such file or directory\r\ndebug3: Sent message SSH2_FXP_OPEN I:3 P:/home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275/AnsiballZ_setup.py\r\ndebug3: Sent message SSH2_FXP_WRITE I:4 O:0 S:32768\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 4 32768 bytes at 0\r\ndebug3: Sent message SSH2_FXP_WRITE I:5 O:32768 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:6 O:65536 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:7 O:98304 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:8 O:131072 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:9 O:163840 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:10 O:196608 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:11 O:229376 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:12 O:262144 S:5296\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 5 32768 bytes at 32768\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 6 32768 bytes at 65536\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 7 32768 bytes at 98304\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 8 32768 bytes at 131072\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 9 32768 bytes at 163840\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 10 32768 bytes at 196608\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 11 32768 bytes at 229376\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 12 5296 bytes at 262144\r\ndebug3: Sent message SSH2_FXP_CLOSE I:4\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'chmod u+x /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275/ /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275/AnsiballZ_setup.py && sleep 0'"'"''
<172.31.4.139> (0, b'', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 -tt 172.31.4.139 '/bin/sh -c '"'"'/usr/libexec/platform-python /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275/AnsiballZ_setup.py && sleep 0'"'"''
<172.31.4.139> (0, b'\r\n{"ansible_facts": {"ansible_system": "Linux", "ansible_kernel": "4.18.0-240.1.1.el8_3.x86_64", "ansible_kernel_version": "#1 SMP Fri Oct 16 13:36:46 EDT 2020", "ansible_machine": "x86_64", "ansible_python_version": "3.6.8", "ansible_fqdn": "ip-172-31-4-139.ap-south-1.compute.internal", "ansible_hostname": "ip-172-31-4-139", "ansible_nodename": "ip-172-31-4-139.ap-south-1.compute.internal", "ansible_domain": "ap-south-1.compute.internal", "ansible_userspace_bits": "64", "ansible_architecture": "x86_64", "ansible_userspace_architecture": "x86_64", "ansible_machine_id": "f0dac33ef28e451da88e02affce1bb76", "ansible_user_id": "ec2-user", "ansible_user_uid": 1000, "ansible_user_gid": 1000, "ansible_user_gecos": "Cloud User", "ansible_user_dir": "/home/ec2-user", "ansible_user_shell": "/bin/bash", "ansible_real_user_id": 1000, "ansible_effective_user_id": 1000, "ansible_real_group_id": 1000, "ansible_effective_group_id": 1000, "ansible_virtualization_type": "xen", "ansible_virtualization_role": "guest", "ansible_cmdline": {"BOOT_IMAGE": "(hd0,gpt2)/boot/vmlinuz-4.18.0-240.1.1.el8_3.x86_64", "root": "UUID=949779ce-46aa-434e-8eb0-852514a5d69e", "ro": true, "console": "tty0", "net.ifnames": "0", "rd.blacklist": "nouveau", "nvme_core.io_timeout": "4294967295", "crashkernel": "auto"}, "ansible_proc_cmdline": {"BOOT_IMAGE": "(hd0,gpt2)/boot/vmlinuz-4.18.0-240.1.1.el8_3.x86_64", "root": "UUID=949779ce-46aa-434e-8eb0-852514a5d69e", "ro": true, "console": ["ttyS0,115200n8", "tty0"], "net.ifnames": "0", "rd.blacklist": "nouveau", "nvme_core.io_timeout": "4294967295", "crashkernel": "auto"}, "ansible_distribution": "RedHat", "ansible_distribution_release": "Ootpa", "ansible_distribution_version": "8.3", "ansible_distribution_major_version": "8", "ansible_distribution_file_path": "/etc/redhat-release", "ansible_distribution_file_variety": "RedHat", "ansible_distribution_file_parsed": true, "ansible_distribution_file_search_string": "Red Hat", "ansible_os_family": "RedHat", "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABgQDekm8vuLcoPRXLBH0cTBFnyMYcmuhBiZSleKSPGKyB5YDk+B82NfHPJCTp/QuSkk38G2A3Jn2uw62RUbVFw1miGFNPFJOrk2D5anpk7F/CDgUPpHo16dTmvsIlythViDM1jEYwu/VcfHwIOmR+cbwKFIt/1+aXqMV2LpTFw8j1aDuU9EA9Kmpb4aStyy6kh5jjUO8Tn1+PTcO40LyyZOWx7DLvkNRcz/hneseD5Ubl88opHsKT3UoqTzdve6tXpUDeLFpnSjWag4xdNiITHKeRxISwiS/qqs6C5nLaUPLucYRx/ATcCYaIzgdA/gxRhjMcGPKeao2MCmfcBJoPYW3sGd61EGuBIyugFhe8w+Q+2a0VFhjGWNygkoK4R23Ep4tBhoh21YSn3iPiwVKyRxvlOWyQoO+Cc3u3PpDEs62OujfMD1r01WHrXHSeNuR23SsfuRo5my1Wd5hk+luCgkkE5sdLVZvnO3DgyoQtdfP0KB+vGk3kJ2w/qwiIsRIRXl8=", "ansible_ssh_host_key_rsa_public_keytype": "ssh-rsa", "ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMviLu6jaezPbW5M2MM9DDxBVekB+n9lMnsW0xjikZiitwSyPIQXwXFYBDakK+YkZ//h+renRgpuDsrJ2rRcfio=", "ansible_ssh_host_key_ecdsa_public_keytype": "ecdsa-sha2-nistp256", "ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAIADlasMjRZ79R4j7WsmJoWxMzEHSqoY0jr/Cf0239D/L", "ansible_ssh_host_key_ed25519_public_keytype": "ssh-ed25519", "ansible_system_capabilities_enforced": "True", "ansible_system_capabilities": [""], "ansible_env": {"LS_COLORS": "rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.zst=38;5;9:*.tzst=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.wim=38;5;9:*.swm=38;5;9:*.dwm=38;5;9:*.esd=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.mjpg=38;5;13:*.mjpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.m4a=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.oga=38;5;45:*.opus=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:", "SSH_CONNECTION": "172.31.8.254 43426 172.31.4.139 22", "_": "/usr/libexec/platform-python", "LANG": "en_US.UTF-8", "XDG_SESSION_ID": "22", "USER": "ec2-user", "SELINUX_ROLE_REQUESTED": "", "PWD": "/home/ec2-user", "HOME": "/home/ec2-user", "SSH_CLIENT": "172.31.8.254 43426 22", "SELINUX_LEVEL_REQUESTED": "", "SSH_TTY": "/dev/pts/0", "SHELL": "/bin/bash", "TERM": "xterm-256color", "SELINUX_USE_CURRENT_RANGE": "", "SHLVL": "2", "LOGNAME": "ec2-user", "DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/1000/bus", "XDG_RUNTIME_DIR": "/run/user/1000", "PATH": "/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin", "LESSOPEN": "||/usr/bin/lesspipe.sh %s"}, "ansible_processor": ["0", "GenuineIntel", "Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz"], "ansible_processor_count": 1, "ansible_processor_cores": 1, "ansible_processor_threads_per_core": 1, "ansible_processor_vcpus": 1, "ansible_processor_nproc": 1, "ansible_memtotal_mb": 805, "ansible_memfree_mb": 349, "ansible_swaptotal_mb": 0, "ansible_swapfree_mb": 0, "ansible_memory_mb": {"real": {"total": 805, "used": 456, "free": 349}, "nocache": {"free": 624, "used": 181}, "swap": {"total": 0, "free": 0, "used": 0, "cached": 0}}, "ansible_bios_date": "08/24/2006", "ansible_bios_vendor": "Xen", "ansible_bios_version": "4.2.amazon", "ansible_board_asset_tag": "NA", "ansible_board_name": "NA", "ansible_board_serial": "NA", "ansible_board_vendor": "NA", "ansible_board_version": "NA", "ansible_chassis_asset_tag": "NA", "ansible_chassis_serial": "NA", "ansible_chassis_vendor": "Xen", "ansible_chassis_version": "NA", "ansible_form_factor": "Other", "ansible_product_name": "HVM domU", "ansible_product_serial": "NA", "ansible_product_uuid": "NA", "ansible_product_version": "4.2.amazon", "ansible_system_vendor": "Xen", "ansible_devices": {"xvda": {"virtual": 1, "links": {"ids": [], "uuids": [], "labels": [], "masters": []}, "vendor": null, "model": null, "sas_address": null, "sas_device_handle": null, "removable": "0", "support_discard": "0", "partitions": {"xvda2": {"links": {"ids": [], "uuids": ["949779ce-46aa-434e-8eb0-852514a5d69e"], "labels": [], "masters": []}, "start": "4096", "sectors": "20967391", "sectorsize": 512, "size": "10.00 GB", "uuid": "949779ce-46aa-434e-8eb0-852514a5d69e", "holders": []}, "xvda1": {"links": {"ids": [], "uuids": [], "labels": [], "masters": []}, "start": "2048", "sectors": "2048", "sectorsize": 512, "size": "1.00 MB", "uuid": null, "holders": []}}, "rotational": "0", "scheduler_mode": "mq-deadline", "sectors": "20971520", "sectorsize": "512", "size": "10.00 GB", "host": "", "holders": []}}, "ansible_device_links": {"ids": {}, "uuids": {"xvda2": ["949779ce-46aa-434e-8eb0-852514a5d69e"]}, "labels": {}, "masters": {}}, "ansible_uptime_seconds": 20224, "ansible_mounts": [{"mount": "/", "device": "/dev/xvda2", "fstype": "xfs", "options": "rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota", "size_total": 10724814848, "size_available": 9442275328, "block_size": 4096, "block_total": 2618363, "block_available": 2305243, "block_used": 313120, "inode_total": 5241792, "inode_available": 5208761, "inode_used": 33031, "uuid": "949779ce-46aa-434e-8eb0-852514a5d69e"}], "ansible_date_time": {"year": "2021", "month": "01", "weekday": "Friday", "weekday_number": "5", "weeknumber": "01", "day": "08", "hour": "07", "minute": "16", "second": "21", "epoch": "1610090181", "date": "2021-01-08", "time": "07:16:21", "iso8601_micro": "2021-01-08T07:16:21.918551Z", "iso8601": "2021-01-08T07:16:21Z", "iso8601_basic": "20210108T071621918551", "iso8601_basic_short": "20210108T071621", "tz": "UTC", "tz_offset": "+0000"}, "ansible_apparmor": {"status": "disabled"}, "ansible_iscsi_iqn": "", "ansible_pkg_mgr": "dnf", "ansible_dns": {"search": ["ap-south-1.compute.internal"], "nameservers": ["172.31.0.2"]}, "ansible_lsb": {}, "ansible_is_chroot": false, "ansible_fips": false, "ansible_interfaces": ["lo", "eth0"], "ansible_lo": {"device": "lo", "mtu": 65536, "active": true, "type": "loopback", "promisc": false, "ipv4": {"address": "127.0.0.1", "broadcast": "", "netmask": "255.0.0.0", "network": "127.0.0.0"}, "ipv6": [{"address": "::1", "prefix": "128", "scope": "host"}], "features": {"rx_checksumming": "on [fixed]", "tx_checksumming": "on", "tx_checksum_ipv4": "off [fixed]", "tx_checksum_ip_generic": "on [fixed]", "tx_checksum_ipv6": "off [fixed]", "tx_checksum_fcoe_crc": "off [fixed]", "tx_checksum_sctp": "on [fixed]", "scatter_gather": "on", "tx_scatter_gather": "on [fixed]", "tx_scatter_gather_fraglist": "on [fixed]", "tcp_segmentation_offload": "on", "tx_tcp_segmentation": "on", "tx_tcp_ecn_segmentation": "on", "tx_tcp_mangleid_segmentation": "on", "tx_tcp6_segmentation": "on", "generic_segmentation_offload": "on", "generic_receive_offload": "on", "large_receive_offload": "off [fixed]", "rx_vlan_offload": "off [fixed]", "tx_vlan_offload": "off [fixed]", "ntuple_filters": "off [fixed]", "receive_hashing": "off [fixed]", "highdma": "on [fixed]", "rx_vlan_filter": "off [fixed]", "vlan_challenged": "on [fixed]", "tx_lockless": "on [fixed]", "netns_local": "on [fixed]", "tx_gso_robust": "off [fixed]", "tx_fcoe_segmentation": "off [fixed]", "tx_gre_segmentation": "off [fixed]", "tx_gre_csum_segmentation": "off [fixed]", "tx_ipxip4_segmentation": "off [fixed]", "tx_ipxip6_segmentation": "off [fixed]", "tx_udp_tnl_segmentation": "off [fixed]", "tx_udp_tnl_csum_segmentation": "off [fixed]", "tx_gso_partial": "off [fixed]", "tx_sctp_segmentation": "on", "tx_esp_segmentation": "off [fixed]", "tx_udp_segmentation": "off [fixed]", "tls_hw_rx_offload": "off [fixed]", "fcoe_mtu": "off [fixed]", "tx_nocache_copy": "off [fixed]", "loopback": "on [fixed]", "rx_fcs": "off [fixed]", "rx_all": "off [fixed]", "tx_vlan_stag_hw_insert": "off [fixed]", "rx_vlan_stag_hw_parse": "off [fixed]", "rx_vlan_stag_filter": "off [fixed]", "l2_fwd_offload": "off [fixed]", "hw_tc_offload": "off [fixed]", "esp_hw_offload": "off [fixed]", "esp_tx_csum_hw_offload": "off [fixed]", "rx_udp_tunnel_port_offload": "off [fixed]", "tls_hw_tx_offload": "off [fixed]", "rx_gro_hw": "off [fixed]", "tls_hw_record": "off [fixed]"}, "timestamping": ["tx_software", "rx_software", "software"], "hw_timestamp_filters": []}, "ansible_eth0": {"device": "eth0", "macaddress": "02:7f:47:da:3b:66", "mtu": 9001, "active": true, "module": "xen_netfront", "type": "ether", "pciid": "vif-0", "promisc": false, "ipv4": {"address": "172.31.4.139", "broadcast": "172.31.15.255", "netmask": "255.255.240.0", "network": "172.31.0.0"}, "ipv6": [{"address": "fe80::7f:47ff:feda:3b66", "prefix": "64", "scope": "link"}], "features": {"rx_checksumming": "on [fixed]", "tx_checksumming": "on", "tx_checksum_ipv4": "on [fixed]", "tx_checksum_ip_generic": "off [fixed]", "tx_checksum_ipv6": "on", "tx_checksum_fcoe_crc": "off [fixed]", "tx_checksum_sctp": "off [fixed]", "scatter_gather": "on", "tx_scatter_gather": "on", "tx_scatter_gather_fraglist": "off [fixed]", "tcp_segmentation_offload": "on", "tx_tcp_segmentation": "on", "tx_tcp_ecn_segmentation": "off [fixed]", "tx_tcp_mangleid_segmentation": "off", "tx_tcp6_segmentation": "on", "generic_segmentation_offload": "on", "generic_receive_offload": "on", "large_receive_offload": "off [fixed]", "rx_vlan_offload": "off [fixed]", "tx_vlan_offload": "off [fixed]", "ntuple_filters": "off [fixed]", "receive_hashing": "off [fixed]", "highdma": "off [fixed]", "rx_vlan_filter": "off [fixed]", "vlan_challenged": "off [fixed]", "tx_lockless": "off [fixed]", "netns_local": "off [fixed]", "tx_gso_robust": "on [fixed]", "tx_fcoe_segmentation": "off [fixed]", "tx_gre_segmentation": "off [fixed]", "tx_gre_csum_segmentation": "off [fixed]", "tx_ipxip4_segmentation": "off [fixed]", "tx_ipxip6_segmentation": "off [fixed]", "tx_udp_tnl_segmentation": "off [fixed]", "tx_udp_tnl_csum_segmentation": "off [fixed]", "tx_gso_partial": "off [fixed]", "tx_sctp_segmentation": "off [fixed]", "tx_esp_segmentation": "off [fixed]", "tx_udp_segmentation": "off [fixed]", "tls_hw_rx_offload": "off [fixed]", "fcoe_mtu": "off [fixed]", "tx_nocache_copy": "off", "loopback": "off [fixed]", "rx_fcs": "off [fixed]", "rx_all": "off [fixed]", "tx_vlan_stag_hw_insert": "off [fixed]", "rx_vlan_stag_hw_parse": "off [fixed]", "rx_vlan_stag_filter": "off [fixed]", "l2_fwd_offload": "off [fixed]", "hw_tc_offload": "off [fixed]", "esp_hw_offload": "off [fixed]", "esp_tx_csum_hw_offload": "off [fixed]", "rx_udp_tunnel_port_offload": "off [fixed]", "tls_hw_tx_offload": "off [fixed]", "rx_gro_hw": "off [fixed]", "tls_hw_record": "off [fixed]"}, "timestamping": ["rx_software", "software"], "hw_timestamp_filters": []}, "ansible_default_ipv4": {"gateway": "172.31.0.1", "interface": "eth0", "address": "172.31.4.139", "broadcast": "172.31.15.255", "netmask": "255.255.240.0", "network": "172.31.0.0", "macaddress": "02:7f:47:da:3b:66", "mtu": 9001, "type": "ether", "alias": "eth0"}, "ansible_default_ipv6": {}, "ansible_all_ipv4_addresses": ["172.31.4.139"], "ansible_all_ipv6_addresses": ["fe80::7f:47ff:feda:3b66"], "ansible_selinux_python_present": true, "ansible_selinux": {"status": "enabled", "policyvers": 32, "config_mode": "enforcing", "mode": "enforcing", "type": "targeted"}, "ansible_local": {}, "ansible_hostnqn": "", "ansible_fibre_channel_wwn": [], "ansible_service_mgr": "systemd", "ansible_python": {"version": {"major": 3, "minor": 6, "micro": 8, "releaselevel": "final", "serial": 0}, "version_info": [3, 6, 8, "final", 0], "executable": "/usr/libexec/platform-python", "has_sslcontext": true, "type": "cpython"}, "gather_subset": ["all"], "module_setup": true}, "invocation": {"module_args": {"gather_subset": ["all"], "gather_timeout": 10, "filter": "*", "fact_path": "/etc/ansible/facts.d"}}}\r\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\nShared connection to 172.31.4.139 closed.\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'rm -f -r /home/ec2-user/.ansible/tmp/ansible-tmp-1610090180.0882702-6262-279084550780275/ > /dev/null 2>&1 && sleep 0'"'"''
<172.31.4.139> (0, b'', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
ok: [172.31.4.139]
META: ran handlers

TASK [setup] **********************************************************************************************************
task path: /root/ios-jumphost/managed-node.yml:5
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'echo ~ec2-user && sleep 0'"'"''
<172.31.4.139> (0, b'/home/ec2-user\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/ec2-user/.ansible/tmp `"&& mkdir "` echo /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876 `" && echo ansible-tmp-1610090182.3805296-6282-137940644610876="` echo /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876 `" ) && sleep 0'"'"''
<172.31.4.139> (0, b'ansible-tmp-1610090182.3805296-6282-137940644610876=/home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
Using module file /usr/local/lib/python3.6/site-packages/ansible/modules/setup.py
<172.31.4.139> PUT /root/.ansible/tmp/ansible-local-62568tzliwhy/tmp8wubh6f1 TO /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876/AnsiballZ_setup.py
<172.31.4.139> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 '[172.31.4.139]'
<172.31.4.139> (0, b'sftp> put /root/.ansible/tmp/ansible-local-62568tzliwhy/tmp8wubh6f1 /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876/AnsiballZ_setup.py\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug2: Remote version: 3\r\ndebug2: Server supports extension "posix-rename@openssh.com" revision 1\r\ndebug2: Server supports extension "statvfs@openssh.com" revision 2\r\ndebug2: Server supports extension "fstatvfs@openssh.com" revision 2\r\ndebug2: Server supports extension "hardlink@openssh.com" revision 1\r\ndebug2: Server supports extension "fsync@openssh.com" revision 1\r\ndebug2: Unrecognised server extension "lsetstat@openssh.com"\r\ndebug3: Sent message fd 3 T:16 I:1\r\ndebug3: SSH_FXP_REALPATH . -> /home/ec2-user size 0\r\ndebug3: Looking up /root/.ansible/tmp/ansible-local-62568tzliwhy/tmp8wubh6f1\r\ndebug3: Sent message fd 3 T:17 I:2\r\ndebug3: Received stat reply T:101 I:2\r\ndebug1: Couldn\'t stat remote file: No such file or directory\r\ndebug3: Sent message SSH2_FXP_OPEN I:3 P:/home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876/AnsiballZ_setup.py\r\ndebug3: Sent message SSH2_FXP_WRITE I:4 O:0 S:32768\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 4 32768 bytes at 0\r\ndebug3: Sent message SSH2_FXP_WRITE I:5 O:32768 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:6 O:65536 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:7 O:98304 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:8 O:131072 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:9 O:163840 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:10 O:196608 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:11 O:229376 S:32768\r\ndebug3: Sent message SSH2_FXP_WRITE I:12 O:262144 S:5203\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 5 32768 bytes at 32768\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 6 32768 bytes at 65536\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 7 32768 bytes at 98304\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 8 32768 bytes at 131072\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 9 32768 bytes at 163840\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 10 32768 bytes at 196608\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 11 32768 bytes at 229376\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 12 5203 bytes at 262144\r\ndebug3: Sent message SSH2_FXP_CLOSE I:4\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'chmod u+x /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876/ /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876/AnsiballZ_setup.py && sleep 0'"'"''
<172.31.4.139> (0, b'', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 -tt 172.31.4.139 '/bin/sh -c '"'"'/usr/libexec/platform-python /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876/AnsiballZ_setup.py && sleep 0'"'"''
<172.31.4.139> (0, b'\r\n{"ansible_facts": {"ansible_cmdline": {"BOOT_IMAGE": "(hd0,gpt2)/boot/vmlinuz-4.18.0-240.1.1.el8_3.x86_64", "root": "UUID=949779ce-46aa-434e-8eb0-852514a5d69e", "ro": true, "console": "tty0", "net.ifnames": "0", "rd.blacklist": "nouveau", "nvme_core.io_timeout": "4294967295", "crashkernel": "auto"}, "ansible_proc_cmdline": {"BOOT_IMAGE": "(hd0,gpt2)/boot/vmlinuz-4.18.0-240.1.1.el8_3.x86_64", "root": "UUID=949779ce-46aa-434e-8eb0-852514a5d69e", "ro": true, "console": ["ttyS0,115200n8", "tty0"], "net.ifnames": "0", "rd.blacklist": "nouveau", "nvme_core.io_timeout": "4294967295", "crashkernel": "auto"}, "ansible_system_capabilities_enforced": "True", "ansible_system_capabilities": [""], "ansible_system": "Linux", "ansible_kernel": "4.18.0-240.1.1.el8_3.x86_64", "ansible_kernel_version": "#1 SMP Fri Oct 16 13:36:46 EDT 2020", "ansible_machine": "x86_64", "ansible_python_version": "3.6.8", "ansible_fqdn": "ip-172-31-4-139.ap-south-1.compute.internal", "ansible_hostname": "ip-172-31-4-139", "ansible_nodename": "ip-172-31-4-139.ap-south-1.compute.internal", "ansible_domain": "ap-south-1.compute.internal", "ansible_userspace_bits": "64", "ansible_architecture": "x86_64", "ansible_userspace_architecture": "x86_64", "ansible_machine_id": "f0dac33ef28e451da88e02affce1bb76", "ansible_user_id": "ec2-user", "ansible_user_uid": 1000, "ansible_user_gid": 1000, "ansible_user_gecos": "Cloud User", "ansible_user_dir": "/home/ec2-user", "ansible_user_shell": "/bin/bash", "ansible_real_user_id": 1000, "ansible_effective_user_id": 1000, "ansible_real_group_id": 1000, "ansible_effective_group_id": 1000, "ansible_local": {}, "ansible_processor": ["0", "GenuineIntel", "Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz"], "ansible_processor_count": 1, "ansible_processor_cores": 1, "ansible_processor_threads_per_core": 1, "ansible_processor_vcpus": 1, "ansible_processor_nproc": 1, "ansible_memtotal_mb": 805, "ansible_memfree_mb": 349, "ansible_swaptotal_mb": 0, "ansible_swapfree_mb": 0, "ansible_memory_mb": {"real": {"total": 805, "used": 456, "free": 349}, "nocache": {"free": 624, "used": 181}, "swap": {"total": 0, "free": 0, "used": 0, "cached": 0}}, "ansible_bios_date": "08/24/2006", "ansible_bios_vendor": "Xen", "ansible_bios_version": "4.2.amazon", "ansible_board_asset_tag": "NA", "ansible_board_name": "NA", "ansible_board_serial": "NA", "ansible_board_vendor": "NA", "ansible_board_version": "NA", "ansible_chassis_asset_tag": "NA", "ansible_chassis_serial": "NA", "ansible_chassis_vendor": "Xen", "ansible_chassis_version": "NA", "ansible_form_factor": "Other", "ansible_product_name": "HVM domU", "ansible_product_serial": "NA", "ansible_product_uuid": "NA", "ansible_product_version": "4.2.amazon", "ansible_system_vendor": "Xen", "ansible_devices": {"xvda": {"virtual": 1, "links": {"ids": [], "uuids": [], "labels": [], "masters": []}, "vendor": null, "model": null, "sas_address": null, "sas_device_handle": null, "removable": "0", "support_discard": "0", "partitions": {"xvda2": {"links": {"ids": [], "uuids": ["949779ce-46aa-434e-8eb0-852514a5d69e"], "labels": [], "masters": []}, "start": "4096", "sectors": "20967391", "sectorsize": 512, "size": "10.00 GB", "uuid": "949779ce-46aa-434e-8eb0-852514a5d69e", "holders": []}, "xvda1": {"links": {"ids": [], "uuids": [], "labels": [], "masters": []}, "start": "2048", "sectors": "2048", "sectorsize": 512, "size": "1.00 MB", "uuid": null, "holders": []}}, "rotational": "0", "scheduler_mode": "mq-deadline", "sectors": "20971520", "sectorsize": "512", "size": "10.00 GB", "host": "", "holders": []}}, "ansible_device_links": {"ids": {}, "uuids": {"xvda2": ["949779ce-46aa-434e-8eb0-852514a5d69e"]}, "labels": {}, "masters": {}}, "ansible_uptime_seconds": 20226, "ansible_mounts": [{"mount": "/", "device": "/dev/xvda2", "fstype": "xfs", "options": "rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota", "size_total": 10724814848, "size_available": 9442275328, "block_size": 4096, "block_total": 2618363, "block_available": 2305243, "block_used": 313120, "inode_total": 5241792, "inode_available": 5208761, "inode_used": 33031, "uuid": "949779ce-46aa-434e-8eb0-852514a5d69e"}], "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABgQDekm8vuLcoPRXLBH0cTBFnyMYcmuhBiZSleKSPGKyB5YDk+B82NfHPJCTp/QuSkk38G2A3Jn2uw62RUbVFw1miGFNPFJOrk2D5anpk7F/CDgUPpHo16dTmvsIlythViDM1jEYwu/VcfHwIOmR+cbwKFIt/1+aXqMV2LpTFw8j1aDuU9EA9Kmpb4aStyy6kh5jjUO8Tn1+PTcO40LyyZOWx7DLvkNRcz/hneseD5Ubl88opHsKT3UoqTzdve6tXpUDeLFpnSjWag4xdNiITHKeRxISwiS/qqs6C5nLaUPLucYRx/ATcCYaIzgdA/gxRhjMcGPKeao2MCmfcBJoPYW3sGd61EGuBIyugFhe8w+Q+2a0VFhjGWNygkoK4R23Ep4tBhoh21YSn3iPiwVKyRxvlOWyQoO+Cc3u3PpDEs62OujfMD1r01WHrXHSeNuR23SsfuRo5my1Wd5hk+luCgkkE5sdLVZvnO3DgyoQtdfP0KB+vGk3kJ2w/qwiIsRIRXl8=", "ansible_ssh_host_key_rsa_public_keytype": "ssh-rsa", "ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMviLu6jaezPbW5M2MM9DDxBVekB+n9lMnsW0xjikZiitwSyPIQXwXFYBDakK+YkZ//h+renRgpuDsrJ2rRcfio=", "ansible_ssh_host_key_ecdsa_public_keytype": "ecdsa-sha2-nistp256", "ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAIADlasMjRZ79R4j7WsmJoWxMzEHSqoY0jr/Cf0239D/L", "ansible_ssh_host_key_ed25519_public_keytype": "ssh-ed25519", "ansible_distribution": "RedHat", "ansible_distribution_release": "Ootpa", "ansible_distribution_version": "8.3", "ansible_distribution_major_version": "8", "ansible_distribution_file_path": "/etc/redhat-release", "ansible_distribution_file_variety": "RedHat", "ansible_distribution_file_parsed": true, "ansible_distribution_file_search_string": "Red Hat", "ansible_os_family": "RedHat", "ansible_is_chroot": false, "ansible_virtualization_type": "xen", "ansible_virtualization_role": "guest", "ansible_selinux_python_present": true, "ansible_selinux": {"status": "enabled", "policyvers": 32, "config_mode": "enforcing", "mode": "enforcing", "type": "targeted"}, "ansible_lsb": {}, "ansible_fips": false, "ansible_iscsi_iqn": "", "ansible_dns": {"search": ["ap-south-1.compute.internal"], "nameservers": ["172.31.0.2"]}, "ansible_python": {"version": {"major": 3, "minor": 6, "micro": 8, "releaselevel": "final", "serial": 0}, "version_info": [3, 6, 8, "final", 0], "executable": "/usr/libexec/platform-python", "has_sslcontext": true, "type": "cpython"}, "ansible_interfaces": ["eth0", "lo"], "ansible_lo": {"device": "lo", "mtu": 65536, "active": true, "type": "loopback", "promisc": false, "ipv4": {"address": "127.0.0.1", "broadcast": "", "netmask": "255.0.0.0", "network": "127.0.0.0"}, "ipv6": [{"address": "::1", "prefix": "128", "scope": "host"}], "features": {"rx_checksumming": "on [fixed]", "tx_checksumming": "on", "tx_checksum_ipv4": "off [fixed]", "tx_checksum_ip_generic": "on [fixed]", "tx_checksum_ipv6": "off [fixed]", "tx_checksum_fcoe_crc": "off [fixed]", "tx_checksum_sctp": "on [fixed]", "scatter_gather": "on", "tx_scatter_gather": "on [fixed]", "tx_scatter_gather_fraglist": "on [fixed]", "tcp_segmentation_offload": "on", "tx_tcp_segmentation": "on", "tx_tcp_ecn_segmentation": "on", "tx_tcp_mangleid_segmentation": "on", "tx_tcp6_segmentation": "on", "generic_segmentation_offload": "on", "generic_receive_offload": "on", "large_receive_offload": "off [fixed]", "rx_vlan_offload": "off [fixed]", "tx_vlan_offload": "off [fixed]", "ntuple_filters": "off [fixed]", "receive_hashing": "off [fixed]", "highdma": "on [fixed]", "rx_vlan_filter": "off [fixed]", "vlan_challenged": "on [fixed]", "tx_lockless": "on [fixed]", "netns_local": "on [fixed]", "tx_gso_robust": "off [fixed]", "tx_fcoe_segmentation": "off [fixed]", "tx_gre_segmentation": "off [fixed]", "tx_gre_csum_segmentation": "off [fixed]", "tx_ipxip4_segmentation": "off [fixed]", "tx_ipxip6_segmentation": "off [fixed]", "tx_udp_tnl_segmentation": "off [fixed]", "tx_udp_tnl_csum_segmentation": "off [fixed]", "tx_gso_partial": "off [fixed]", "tx_sctp_segmentation": "on", "tx_esp_segmentation": "off [fixed]", "tx_udp_segmentation": "off [fixed]", "tls_hw_rx_offload": "off [fixed]", "fcoe_mtu": "off [fixed]", "tx_nocache_copy": "off [fixed]", "loopback": "on [fixed]", "rx_fcs": "off [fixed]", "rx_all": "off [fixed]", "tx_vlan_stag_hw_insert": "off [fixed]", "rx_vlan_stag_hw_parse": "off [fixed]", "rx_vlan_stag_filter": "off [fixed]", "l2_fwd_offload": "off [fixed]", "hw_tc_offload": "off [fixed]", "esp_hw_offload": "off [fixed]", "esp_tx_csum_hw_offload": "off [fixed]", "rx_udp_tunnel_port_offload": "off [fixed]", "tls_hw_tx_offload": "off [fixed]", "rx_gro_hw": "off [fixed]", "tls_hw_record": "off [fixed]"}, "timestamping": ["tx_software", "rx_software", "software"], "hw_timestamp_filters": []}, "ansible_eth0": {"device": "eth0", "macaddress": "02:7f:47:da:3b:66", "mtu": 9001, "active": true, "module": "xen_netfront", "type": "ether", "pciid": "vif-0", "promisc": false, "ipv4": {"address": "172.31.4.139", "broadcast": "172.31.15.255", "netmask": "255.255.240.0", "network": "172.31.0.0"}, "ipv6": [{"address": "fe80::7f:47ff:feda:3b66", "prefix": "64", "scope": "link"}], "features": {"rx_checksumming": "on [fixed]", "tx_checksumming": "on", "tx_checksum_ipv4": "on [fixed]", "tx_checksum_ip_generic": "off [fixed]", "tx_checksum_ipv6": "on", "tx_checksum_fcoe_crc": "off [fixed]", "tx_checksum_sctp": "off [fixed]", "scatter_gather": "on", "tx_scatter_gather": "on", "tx_scatter_gather_fraglist": "off [fixed]", "tcp_segmentation_offload": "on", "tx_tcp_segmentation": "on", "tx_tcp_ecn_segmentation": "off [fixed]", "tx_tcp_mangleid_segmentation": "off", "tx_tcp6_segmentation": "on", "generic_segmentation_offload": "on", "generic_receive_offload": "on", "large_receive_offload": "off [fixed]", "rx_vlan_offload": "off [fixed]", "tx_vlan_offload": "off [fixed]", "ntuple_filters": "off [fixed]", "receive_hashing": "off [fixed]", "highdma": "off [fixed]", "rx_vlan_filter": "off [fixed]", "vlan_challenged": "off [fixed]", "tx_lockless": "off [fixed]", "netns_local": "off [fixed]", "tx_gso_robust": "on [fixed]", "tx_fcoe_segmentation": "off [fixed]", "tx_gre_segmentation": "off [fixed]", "tx_gre_csum_segmentation": "off [fixed]", "tx_ipxip4_segmentation": "off [fixed]", "tx_ipxip6_segmentation": "off [fixed]", "tx_udp_tnl_segmentation": "off [fixed]", "tx_udp_tnl_csum_segmentation": "off [fixed]", "tx_gso_partial": "off [fixed]", "tx_sctp_segmentation": "off [fixed]", "tx_esp_segmentation": "off [fixed]", "tx_udp_segmentation": "off [fixed]", "tls_hw_rx_offload": "off [fixed]", "fcoe_mtu": "off [fixed]", "tx_nocache_copy": "off", "loopback": "off [fixed]", "rx_fcs": "off [fixed]", "rx_all": "off [fixed]", "tx_vlan_stag_hw_insert": "off [fixed]", "rx_vlan_stag_hw_parse": "off [fixed]", "rx_vlan_stag_filter": "off [fixed]", "l2_fwd_offload": "off [fixed]", "hw_tc_offload": "off [fixed]", "esp_hw_offload": "off [fixed]", "esp_tx_csum_hw_offload": "off [fixed]", "rx_udp_tunnel_port_offload": "off [fixed]", "tls_hw_tx_offload": "off [fixed]", "rx_gro_hw": "off [fixed]", "tls_hw_record": "off [fixed]"}, "timestamping": ["rx_software", "software"], "hw_timestamp_filters": []}, "ansible_default_ipv4": {"gateway": "172.31.0.1", "interface": "eth0", "address": "172.31.4.139", "broadcast": "172.31.15.255", "netmask": "255.255.240.0", "network": "172.31.0.0", "macaddress": "02:7f:47:da:3b:66", "mtu": 9001, "type": "ether", "alias": "eth0"}, "ansible_default_ipv6": {}, "ansible_all_ipv4_addresses": ["172.31.4.139"], "ansible_all_ipv6_addresses": ["fe80::7f:47ff:feda:3b66"], "ansible_env": {"LS_COLORS": "rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.zst=38;5;9:*.tzst=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.wim=38;5;9:*.swm=38;5;9:*.dwm=38;5;9:*.esd=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.mjpg=38;5;13:*.mjpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.m4a=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.oga=38;5;45:*.opus=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:", "SSH_CONNECTION": "172.31.8.254 43426 172.31.4.139 22", "_": "/usr/libexec/platform-python", "LANG": "en_US.UTF-8", "XDG_SESSION_ID": "22", "USER": "ec2-user", "SELINUX_ROLE_REQUESTED": "", "PWD": "/home/ec2-user", "HOME": "/home/ec2-user", "SSH_CLIENT": "172.31.8.254 43426 22", "SELINUX_LEVEL_REQUESTED": "", "SSH_TTY": "/dev/pts/0", "SHELL": "/bin/bash", "TERM": "xterm-256color", "SELINUX_USE_CURRENT_RANGE": "", "SHLVL": "2", "LOGNAME": "ec2-user", "DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/1000/bus", "XDG_RUNTIME_DIR": "/run/user/1000", "PATH": "/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin", "LESSOPEN": "||/usr/bin/lesspipe.sh %s"}, "ansible_hostnqn": "", "ansible_date_time": {"year": "2021", "month": "01", "weekday": "Friday", "weekday_number": "5", "weeknumber": "01", "day": "08", "hour": "07", "minute": "16", "second": "24", "epoch": "1610090184", "date": "2021-01-08", "time": "07:16:24", "iso8601_micro": "2021-01-08T07:16:24.118436Z", "iso8601": "2021-01-08T07:16:24Z", "iso8601_basic": "20210108T071624118436", "iso8601_basic_short": "20210108T071624", "tz": "UTC", "tz_offset": "+0000"}, "ansible_apparmor": {"status": "disabled"}, "ansible_pkg_mgr": "dnf", "ansible_fibre_channel_wwn": [], "ansible_service_mgr": "systemd", "gather_subset": ["all"], "module_setup": true}, "invocation": {"module_args": {"gather_subset": ["all"], "gather_timeout": 10, "filter": "*", "fact_path": "/etc/ansible/facts.d"}}}\r\n', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\nShared connection to 172.31.4.139 closed.\r\n')
<172.31.4.139> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<172.31.4.139> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/root/ansible-awx/ios.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ec2-user"' -o ConnectTimeout=10 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null '-oProxyCommand=ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\" ec2-user@13.234.120.133" ec2-user@13.233.88.57' -o ControlPath=/root/.ansible/cp/dd995fd338 172.31.4.139 '/bin/sh -c '"'"'rm -f -r /home/ec2-user/.ansible/tmp/ansible-tmp-1610090182.3805296-6282-137940644610876/ > /dev/null 2>&1 && sleep 0'"'"''
<172.31.4.139> (0, b'', b'OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug3: /etc/ssh/ssh_config line 52: Including file /etc/ssh/ssh_config.d/05-redhat.conf depth 0\r\ndebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf\r\ndebug3: /etc/ssh/ssh_config.d/05-redhat.conf line 2: Including file /etc/crypto-policies/back-ends/openssh.config depth 1\r\ndebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config\r\ndebug3: gss kex names ok: [gss-gex-sha1-,gss-group14-sha1-]\r\ndebug3: kex names ok: [curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1]\r\ndebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 172.31.4.139 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 6 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 6272\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
ok: [172.31.4.139]
META: ran handlers
META: ran handlers

PLAY RECAP ************************************************************************************************************
172.31.4.139               : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

Inventory:

172.31.15.70

[all:vars]
ansible_user = ec2-user
ansible_ssh_private_key_file = /root/ansible-awx/ios.pem
ansible_connection = ansible.netcommon.network_cli
ansible_network_os = cisco.ios.ios
ansible_ssh_common_args = -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand="ssh -i /root/ansible-awx/jump3.pem -W %h:%p -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\"ssh -i /root/ansible-awx/jump2.pem -W 13.233.88.57:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oProxyCommand=\\\"ssh -i /root/ansible-awx/jump1.pem -W 13.234.120.133:22 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ec2-user@13.127.247.172\\\" ec2-user@13.234.120.133\" ec2-user@13.233.88.57"

Playbook run:

[root@ubuntu ios-jumphost]# ansible-playbook -i inventory ios_collection_test.yml -vvvv
ansible-playbook 2.10.4
  config file = /root/ios-jumphost/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Using /root/ios-jumphost/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
script declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
auto declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
Parsed /root/ios-jumphost/inventory inventory source with ini plugin
Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
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: ios_collection_test.yml *************************************************************************************
Positional arguments: ios_collection_test.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('/root/ios-jumphost/inventory',)
forks: 5
1 plays in ios_collection_test.yml

PLAY [test ios] *******************************************************************************************************
META: ran handlers
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon

TASK [run show version on remote devices] *****************************************************************************
task path: /root/ios-jumphost/ios_collection_test.yml:9
<172.31.15.70> attempting to start connection
<172.31.15.70> using connection plugin ansible.netcommon.network_cli
Found ansible-connection at path /usr/local/bin/ansible-connection
<172.31.15.70> local domain socket does not exist, starting it
<172.31.15.70> control socket path is /root/.ansible/pc/598d70bb03
<172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
<172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
<172.31.15.70> local domain socket listeners started successfully
<172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
<172.31.15.70> 
<172.31.15.70> local domain socket path is /root/.ansible/pc/598d70bb03
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
<172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
<172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-6312j0r83xhr `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932 `" && echo ansible-tmp-1610090410.955114-6318-265715427124932="` echo /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932 `" ) && sleep 0'
<172.31.15.70> Attempting python interpreter discovery
<172.31.15.70> 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'
<172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
<172.31.15.70> PUT /root/.ansible/tmp/ansible-local-6312j0r83xhr/tmpxy4cehl9 TO /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/AnsiballZ_ios_command.py
<172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/ /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
  File "/tmp/ansible_cisco.ios.ios_command_payload_bpb15ie5/ansible_cisco.ios.ios_command_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 92, in get_capabilities
    capabilities = Connection(module._socket_path).get_capabilities()
  File "/tmp/ansible_cisco.ios.ios_command_payload_bpb15ie5/ansible_cisco.ios.ios_command_payload.zip/ansible/module_utils/connection.py", line 195, in __rpc__
    raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)
fatal: [172.31.15.70]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "msg": "command timeout triggered, timeout value is 30 secs.\nSee the timeout setting options in the Network Debug and Troubleshooting Guide."
}

PLAY RECAP ************************************************************************************************************
172.31.15.70               : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

Device interactive log:

[root@ubuntu ~]# cat ansible.log 
2021-01-08 07:20:07,971 p=6312 u=root n=ansible | ansible-playbook 2.10.4
  config file = /root/ios-jumphost/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
2021-01-08 07:20:07,972 p=6312 u=root n=ansible | Using /root/ios-jumphost/ansible.cfg as config file
2021-01-08 07:20:07,972 p=6312 u=root n=ansible | setting up inventory plugins
2021-01-08 07:20:07,999 p=6312 u=root n=ansible | host_list declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
2021-01-08 07:20:08,000 p=6312 u=root n=ansible | script declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
2021-01-08 07:20:08,000 p=6312 u=root n=ansible | auto declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
2021-01-08 07:20:08,006 p=6312 u=root n=ansible | Parsed /root/ios-jumphost/inventory inventory source with ini plugin
2021-01-08 07:20:08,263 p=6312 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-08 07:20:08,265 p=6312 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:20:08,281 p=6312 u=root n=ansible | Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
2021-01-08 07:20:08,309 p=6312 u=root n=ansible | Skipping callback 'default', as we already have a stdout callback.
2021-01-08 07:20:08,309 p=6312 u=root n=ansible | Skipping callback 'minimal', as we already have a stdout callback.
2021-01-08 07:20:08,309 p=6312 u=root n=ansible | Skipping callback 'oneline', as we already have a stdout callback.
2021-01-08 07:20:08,310 p=6312 u=root n=ansible | PLAYBOOK: ios_collection_test.yml *************************************************************************************
2021-01-08 07:20:08,310 p=6312 u=root n=ansible | 1 plays in ios_collection_test.yml
2021-01-08 07:20:08,313 p=6312 u=root n=ansible | PLAY [test ios] *******************************************************************************************************
2021-01-08 07:20:08,364 p=6312 u=root n=ansible | META: ran handlers
2021-01-08 07:20:08,367 p=6312 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:20:08,380 p=6312 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-08 07:20:08,392 p=6312 u=root n=ansible | TASK [run show version on remote devices] *****************************************************************************
2021-01-08 07:20:08,464 p=6318 u=root n=ansible | <172.31.15.70> attempting to start connection
2021-01-08 07:20:08,464 p=6318 u=root n=ansible | <172.31.15.70> using connection plugin ansible.netcommon.network_cli
2021-01-08 07:20:08,464 p=6318 u=root n=ansible | Found ansible-connection at path /usr/local/bin/ansible-connection
2021-01-08 07:20:10,787 p=6323 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-08 07:20:10,890 p=6323 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-08 07:20:10,951 p=6318 u=root n=ansible | <172.31.15.70> local domain socket does not exist, starting it
2021-01-08 07:20:10,951 p=6318 u=root n=ansible | <172.31.15.70> control socket path is /root/.ansible/pc/598d70bb03
2021-01-08 07:20:10,951 p=6318 u=root n=ansible | <172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-08 07:20:10,951 p=6318 u=root n=ansible | <172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-08 07:20:10,951 p=6318 u=root n=ansible | <172.31.15.70> local domain socket listeners started successfully
2021-01-08 07:20:10,951 p=6318 u=root n=ansible | <172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
2021-01-08 07:20:10,951 p=6318 u=root n=ansible | network_os is set to cisco.ios.ios
2021-01-08 07:20:10,952 p=6318 u=root n=ansible | <172.31.15.70> 
2021-01-08 07:20:10,952 p=6318 u=root n=ansible | <172.31.15.70> local domain socket path is /root/.ansible/pc/598d70bb03
2021-01-08 07:20:10,954 p=6318 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:20:10,954 p=6318 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:20:10,955 p=6318 u=root n=ansible | <172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
2021-01-08 07:20:10,955 p=6318 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-6312j0r83xhr `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932 `" && echo ansible-tmp-1610090410.955114-6318-265715427124932="` echo /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932 `" ) && sleep 0'
2021-01-08 07:20:11,156 p=6318 u=root n=ansible | <172.31.15.70> Attempting python interpreter discovery
2021-01-08 07:20:11,156 p=6318 u=root n=ansible | <172.31.15.70> 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'
2021-01-08 07:20:11,164 p=6318 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
2021-01-08 07:20:11,220 p=6318 u=root n=ansible | Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
2021-01-08 07:20:11,221 p=6318 u=root n=ansible | <172.31.15.70> PUT /root/.ansible/tmp/ansible-local-6312j0r83xhr/tmpxy4cehl9 TO /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/AnsiballZ_ios_command.py
2021-01-08 07:20:11,222 p=6318 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/ /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/AnsiballZ_ios_command.py && sleep 0'
2021-01-08 07:20:11,229 p=6318 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/AnsiballZ_ios_command.py && sleep 0'
2021-01-08 07:20:11,462 p=6323 u=root n=ansible | <172.31.15.70> ESTABLISH PARAMIKO SSH CONNECTION FOR USER: ec2-user on PORT 22 TO 172.31.15.70
2021-01-08 07:20:41,445 p=6323 u=root n=ansible | command timeout triggered, timeout value is 30 secs.
See the timeout setting options in the Network Debug and Troubleshooting Guide.
2021-01-08 07:20:41,449 p=6323 u=root n=ansible | Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 352, in _connect_uncached
    **ssh_connect_kwargs
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 349, in connect
    retry_on_signal(lambda: sock.connect(addr))
  File "/usr/local/lib/python3.6/site-packages/paramiko/util.py", line 283, in retry_on_signal
    return function()
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 349, in <lambda>
    retry_on_signal(lambda: sock.connect(addr))
  File "/usr/local/bin/ansible-connection", line 183, in command_timeout
    raise Exception(msg)
Exception: command timeout triggered, timeout value is 30 secs.
See the timeout setting options in the Network Debug and Troubleshooting Guide.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/ansible/utils/jsonrpc.py", line 46, in handle_request
    result = rpc_method(*args, **kwargs)
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 322, in get_capabilities
    result = super(Cliconf, self).get_capabilities()
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/cliconf/__init__.py", line 283, in get_capabilities
    result['device_info'] = self.get_device_info()
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 270, in get_device_info
    reply = self.get(command="show version")
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 263, in get
    check_all=check_all,
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/cliconf/__init__.py", line 127, in send_command
    resp = self._connection.send(**kwargs)
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/network_cli.py", line 313, in wrapped
    self._connect()
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/network_cli.py", line 538, in _connect
    ssh = self.ssh_type_conn._connect()
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 243, in _connect
    self.ssh = SSH_CONNECTION_CACHE[cache_key] = self._connect_uncached()
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 368, in _connect_uncached
    raise AnsibleConnectionFailure(msg)
ansible.errors.AnsibleConnectionFailure: command timeout triggered, timeout value is 30 secs.
See the timeout setting options in the Network Debug and Troubleshooting Guide.

2021-01-08 07:20:41,493 p=6318 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-6312j0r83xhr/ansible-tmp-1610090410.955114-6318-265715427124932/ > /dev/null 2>&1 && sleep 0'
2021-01-08 07:20:41,506 p=6312 u=root n=ansible | The full traceback is:
  File "/tmp/ansible_cisco.ios.ios_command_payload_bpb15ie5/ansible_cisco.ios.ios_command_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 92, in get_capabilities
    capabilities = Connection(module._socket_path).get_capabilities()
  File "/tmp/ansible_cisco.ios.ios_command_payload_bpb15ie5/ansible_cisco.ios.ios_command_payload.zip/ansible/module_utils/connection.py", line 195, in __rpc__
    raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)

2021-01-08 07:20:41,506 p=6312 u=root n=ansible | fatal: [172.31.15.70]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "msg": "command timeout triggered, timeout value is 30 secs.\nSee the timeout setting options in the Network Debug and Troubleshooting Guide."
}
2021-01-08 07:20:41,509 p=6312 u=root n=ansible | PLAY RECAP ************************************************************************************************************
2021-01-08 07:20:41,509 p=6312 u=root n=ansible | 172.31.15.70               : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
2021-01-08 07:20:41,608 p=6323 u=root n=ansible | shutdown complete

Inventory same as above.

export ANSIBLE_NETWORK_CLI_SSH_TYPE="libssh"

Playbook run:

[root@ubuntu ios-jumphost]# ansible-playbook -i inventory ios_collection_test.yml -vvvv
ansible-playbook 2.10.4
  config file = /root/ios-jumphost/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Using /root/ios-jumphost/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
script declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
auto declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
Parsed /root/ios-jumphost/inventory inventory source with ini plugin
Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
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: ios_collection_test.yml *************************************************************************************
Positional arguments: ios_collection_test.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('/root/ios-jumphost/inventory',)
forks: 5
1 plays in ios_collection_test.yml

PLAY [test ios] *******************************************************************************************************
META: ran handlers
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon

TASK [run show version on remote devices] *****************************************************************************
task path: /root/ios-jumphost/ios_collection_test.yml:9
<172.31.15.70> attempting to start connection
<172.31.15.70> using connection plugin ansible.netcommon.network_cli
Found ansible-connection at path /usr/local/bin/ansible-connection
<172.31.15.70> local domain socket does not exist, starting it
<172.31.15.70> control socket path is /root/.ansible/pc/b641fd7f6b
<172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
<172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
<172.31.15.70> local domain socket listeners started successfully
<172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
<172.31.15.70> 
<172.31.15.70> local domain socket path is /root/.ansible/pc/b641fd7f6b
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
<172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
<172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-6364x3b6py3_ `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893 `" && echo ansible-tmp-1610090804.199861-6370-241426102005893="` echo /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893 `" ) && sleep 0'
<172.31.15.70> Attempting python interpreter discovery
<172.31.15.70> 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'
<172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
<172.31.15.70> PUT /root/.ansible/tmp/ansible-local-6364x3b6py3_/tmpq535wyos TO /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/AnsiballZ_ios_command.py
<172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/ /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
  File "/tmp/ansible_cisco.ios.ios_command_payload_a8kasi13/ansible_cisco.ios.ios_command_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 92, in get_capabilities
    capabilities = Connection(module._socket_path).get_capabilities()
  File "/tmp/ansible_cisco.ios.ios_command_payload_a8kasi13/ansible_cisco.ios.ios_command_payload.zip/ansible/module_utils/connection.py", line 195, in __rpc__
    raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)
fatal: [172.31.15.70]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "msg": "ssh connection failed: ssh connect failed: Timeout connecting to 172.31.15.70"
}

PLAY RECAP ************************************************************************************************************
172.31.15.70               : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0 

Device interactive log:

[root@ubuntu ~]# cat ansible.log 
2021-01-08 07:26:41,133 p=6364 u=root n=ansible | ansible-playbook 2.10.4
  config file = /root/ios-jumphost/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
2021-01-08 07:26:41,134 p=6364 u=root n=ansible | Using /root/ios-jumphost/ansible.cfg as config file
2021-01-08 07:26:41,135 p=6364 u=root n=ansible | setting up inventory plugins
2021-01-08 07:26:41,163 p=6364 u=root n=ansible | host_list declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
2021-01-08 07:26:41,164 p=6364 u=root n=ansible | script declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
2021-01-08 07:26:41,164 p=6364 u=root n=ansible | auto declined parsing /root/ios-jumphost/inventory as it did not pass its verify_file() method
2021-01-08 07:26:41,171 p=6364 u=root n=ansible | Parsed /root/ios-jumphost/inventory inventory source with ini plugin
2021-01-08 07:26:41,437 p=6364 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-08 07:26:41,439 p=6364 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:26:41,471 p=6364 u=root n=ansible | Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
2021-01-08 07:26:41,510 p=6364 u=root n=ansible | Skipping callback 'default', as we already have a stdout callback.
2021-01-08 07:26:41,510 p=6364 u=root n=ansible | Skipping callback 'minimal', as we already have a stdout callback.
2021-01-08 07:26:41,510 p=6364 u=root n=ansible | Skipping callback 'oneline', as we already have a stdout callback.
2021-01-08 07:26:41,510 p=6364 u=root n=ansible | PLAYBOOK: ios_collection_test.yml *************************************************************************************
2021-01-08 07:26:41,511 p=6364 u=root n=ansible | 1 plays in ios_collection_test.yml
2021-01-08 07:26:41,515 p=6364 u=root n=ansible | PLAY [test ios] *******************************************************************************************************
2021-01-08 07:26:41,572 p=6364 u=root n=ansible | META: ran handlers
2021-01-08 07:26:41,576 p=6364 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:26:41,594 p=6364 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-08 07:26:41,607 p=6364 u=root n=ansible | TASK [run show version on remote devices] *****************************************************************************
2021-01-08 07:26:41,686 p=6370 u=root n=ansible | <172.31.15.70> attempting to start connection
2021-01-08 07:26:41,686 p=6370 u=root n=ansible | <172.31.15.70> using connection plugin ansible.netcommon.network_cli
2021-01-08 07:26:41,686 p=6370 u=root n=ansible | Found ansible-connection at path /usr/local/bin/ansible-connection
2021-01-08 07:26:44,027 p=6376 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-08 07:26:44,133 p=6376 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-08 07:26:44,196 p=6370 u=root n=ansible | <172.31.15.70> local domain socket does not exist, starting it
2021-01-08 07:26:44,196 p=6370 u=root n=ansible | <172.31.15.70> control socket path is /root/.ansible/pc/b641fd7f6b
2021-01-08 07:26:44,196 p=6370 u=root n=ansible | <172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-08 07:26:44,196 p=6370 u=root n=ansible | <172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-08 07:26:44,196 p=6370 u=root n=ansible | <172.31.15.70> local domain socket listeners started successfully
2021-01-08 07:26:44,197 p=6370 u=root n=ansible | <172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
2021-01-08 07:26:44,197 p=6370 u=root n=ansible | network_os is set to cisco.ios.ios
2021-01-08 07:26:44,197 p=6370 u=root n=ansible | <172.31.15.70> 
2021-01-08 07:26:44,197 p=6370 u=root n=ansible | <172.31.15.70> local domain socket path is /root/.ansible/pc/b641fd7f6b
2021-01-08 07:26:44,198 p=6370 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:26:44,199 p=6370 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-08 07:26:44,200 p=6370 u=root n=ansible | <172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
2021-01-08 07:26:44,200 p=6370 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-6364x3b6py3_ `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893 `" && echo ansible-tmp-1610090804.199861-6370-241426102005893="` echo /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893 `" ) && sleep 0'
2021-01-08 07:26:44,410 p=6370 u=root n=ansible | <172.31.15.70> Attempting python interpreter discovery
2021-01-08 07:26:44,411 p=6370 u=root n=ansible | <172.31.15.70> 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'
2021-01-08 07:26:44,419 p=6370 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
2021-01-08 07:26:44,475 p=6370 u=root n=ansible | Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
2021-01-08 07:26:44,476 p=6370 u=root n=ansible | <172.31.15.70> PUT /root/.ansible/tmp/ansible-local-6364x3b6py3_/tmpq535wyos TO /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/AnsiballZ_ios_command.py
2021-01-08 07:26:44,477 p=6370 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/ /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/AnsiballZ_ios_command.py && sleep 0'
2021-01-08 07:26:44,484 p=6370 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/AnsiballZ_ios_command.py && sleep 0'
2021-01-08 07:26:44,775 p=6376 u=root n=ansible | <172.31.15.70> ESTABLISH LIBSSH CONNECTION FOR USER: ec2-user on PORT 22 TO 172.31.15.70
2021-01-08 07:27:14,779 p=6376 u=root n=ansible | command timeout triggered, timeout value is 30 secs.
See the timeout setting options in the Network Debug and Troubleshooting Guide.
2021-01-08 07:27:16,782 p=6376 u=root n=ansible | <172.31.15.70> ESTABLISH LIBSSH CONNECTION FOR USER: ec2-user on PORT 22 TO 172.31.15.70
2021-01-08 07:27:46,824 p=6376 u=root n=ansible | Traceback (most recent call last):
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/libssh.py", line 330, in _connect_uncached
    **ssh_connect_kwargs
  File "src/pylibsshext/session.pyx", line 216, in pylibsshext.session.Session.connect
pylibsshext.errors.LibsshSessionException: ssh connect failed: Timeout connecting to 172.31.15.70

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/ansible/utils/jsonrpc.py", line 46, in handle_request
    result = rpc_method(*args, **kwargs)
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 322, in get_capabilities
    result = super(Cliconf, self).get_capabilities()
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/cliconf/__init__.py", line 283, in get_capabilities
    result['device_info'] = self.get_device_info()
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 270, in get_device_info
    reply = self.get(command="show version")
  File "/root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py", line 263, in get
    check_all=check_all,
  File "/usr/local/lib/python3.6/site-packages/ansible/plugins/cliconf/__init__.py", line 127, in send_command
    resp = self._connection.send(**kwargs)
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/network_cli.py", line 313, in wrapped
    self._connect()
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/network_cli.py", line 538, in _connect
    ssh = self.ssh_type_conn._connect()
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/libssh.py", line 231, in _connect
    ] = self._connect_uncached()
  File "/root/.ansible/collections/ansible_collections/ansible/netcommon/plugins/connection/libssh.py", line 334, in _connect_uncached
    raise AnsibleConnectionFailure(msg)
ansible.errors.AnsibleConnectionFailure: ssh connection failed: ssh connect failed: Timeout connecting to 172.31.15.70

2021-01-08 07:27:46,864 p=6370 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-6364x3b6py3_/ansible-tmp-1610090804.199861-6370-241426102005893/ > /dev/null 2>&1 && sleep 0'
2021-01-08 07:27:46,877 p=6364 u=root n=ansible | The full traceback is:
  File "/tmp/ansible_cisco.ios.ios_command_payload_a8kasi13/ansible_cisco.ios.ios_command_payload.zip/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 92, in get_capabilities
    capabilities = Connection(module._socket_path).get_capabilities()
  File "/tmp/ansible_cisco.ios.ios_command_payload_a8kasi13/ansible_cisco.ios.ios_command_payload.zip/ansible/module_utils/connection.py", line 195, in __rpc__
    raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)

2021-01-08 07:27:46,877 p=6364 u=root n=ansible | fatal: [172.31.15.70]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "msg": "ssh connection failed: ssh connect failed: Timeout connecting to 172.31.15.70"
}
2021-01-08 07:27:46,880 p=6364 u=root n=ansible | PLAY RECAP ************************************************************************************************************
2021-01-08 07:27:46,880 p=6364 u=root n=ansible | 172.31.15.70               : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
2021-01-08 07:27:46,982 p=6376 u=root n=ansible | shutdown complete
ganeshrn commented 3 years ago

@IshwarKanse Chained jump host is not yet supported with libssh (http://www.libssh.org/). Hence it is failing for chained jumpost when ssh_type is set to libssh

IshwarKanse commented 3 years ago

@ganeshrn I was able to get chained jumphost working with a SSH config file.

SSH config file:

[root@ubuntu .ssh]# ls -ltr
total 24
-rw-------. 1 root root 1675 Jan 13 05:08 ios.pem
-rw-------. 1 root root 1675 Jan 13 05:08 jump1.pem
-rw-------. 1 root root 1679 Jan 13 05:08 jump2.pem
-rw-------. 1 root root 1679 Jan 13 05:08 jump3.pem
-rw-r--r--. 1 root root 1437 Jan 13 05:26 known_hosts
-rw-------. 1 root root  479 Jan 13 05:44 config

[root@ubuntu .ssh]# cat config 
### First jumphost
Host 13.233.161.87
  HostName 13.233.161.87
  StrictHostKeyChecking no
  User ec2-user
  IdentityFile /root/.ssh/jump1.pem

### Second jumphost
Host 172.31.8.197
  HostName 172.31.8.197
  ProxyJump 13.233.161.87
  StrictHostKeyChecking no
  User ec2-user
  IdentityFile /root/.ssh/jump2.pem

### Third jumphost3
Host 172.31.8.254
  HostName 172.31.8.254
  ProxyJump 172.31.8.197
  StrictHostKeyChecking no
  User ec2-user
  IdentityFile /root/.ssh/jump3.pem

Inventory file: (Note using the 3rd jumphost in the common args which is a AWS EC2 private IP not reachable directly from my Vagrant box)

172.31.15.70

[all:vars]
ansible_user = ec2-user
ansible_ssh_private_key_file = /root/ansible-awx/ios.pem
ansible_connection = ansible.netcommon.network_cli
ansible_network_os = cisco.ios.ios
ansible_ssh_common_args = '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ProxyCommand="ssh -W %h:%p 172.31.8.254 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"'

With paramiko:

[root@ubuntu ansible-awx]# ansible-playbook -i inventory ios_collection_test.yml -vvvv
ansible-playbook 2.10.4
  config file = /root/ansible-awx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Using /root/ansible-awx/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
script declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
auto declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
Parsed /root/ansible-awx/inventory inventory source with ini plugin
Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
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: ios_collection_test.yml *************************************************************************************
Positional arguments: ios_collection_test.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('/root/ansible-awx/inventory',)
forks: 5
1 plays in ios_collection_test.yml

PLAY [test ios] *******************************************************************************************************
META: ran handlers
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon

TASK [run show version on remote devices] *****************************************************************************
task path: /root/ansible-awx/ios_collection_test.yml:9
<172.31.15.70> attempting to start connection
<172.31.15.70> using connection plugin ansible.netcommon.network_cli
Found ansible-connection at path /usr/local/bin/ansible-connection
<172.31.15.70> local domain socket does not exist, starting it
<172.31.15.70> control socket path is /root/.ansible/pc/ff68711d6e
<172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
<172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
<172.31.15.70> local domain socket listeners started successfully
<172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
<172.31.15.70> 
<172.31.15.70> local domain socket path is /root/.ansible/pc/ff68711d6e
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
<172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
<172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-74751x6bv3qy `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873 `" && echo ansible-tmp-1610521356.1165786-7481-123515820354873="` echo /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873 `" ) && sleep 0'
<172.31.15.70> Attempting python interpreter discovery
<172.31.15.70> 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'
<172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
<172.31.15.70> PUT /root/.ansible/tmp/ansible-local-74751x6bv3qy/tmp1orqdnh5 TO /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/AnsiballZ_ios_command.py
<172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/ /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/AnsiballZ_ios_command.py && sleep 0'
<172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/ > /dev/null 2>&1 && sleep 0'
ok: [172.31.15.70] => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "stdout": [
        "Cisco IOS XE Software, Version 17.03.02\nCisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2020 by Cisco Systems, Inc.\nCompiled Sat 31-Oct-20 13:16 by mcpre\n\n\nCisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.\nAll rights reserved.  Certain components of Cisco IOS-XE software are\nlicensed under the GNU General Public License (\"GPL\") Version 2.0.  The\nsoftware code licensed under GPL Version 2.0 is free software that comes\nwith ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such\nGPL code under the terms of GPL Version 2.0.  For more details, see the\ndocumentation or \"License Notice\" file accompanying the IOS-XE software,\nor the applicable URL provided on the flyer accompanying the IOS-XE\nsoftware.\n\n\nROM: IOS-XE ROMMON\n\nip-172-31-15-70 uptime is 2 hours, 25 minutes\nUptime for this control processor is 2 hours, 27 minutes\nSystem returned to ROM by reload\nSystem image file is \"bootflash:packages.conf\"\nLast reload reason: reload\n\n\n\nThis product contains cryptographic features and is subject to United\nStates and local country laws governing import, export, transfer and\nuse. Delivery of Cisco cryptographic products does not imply\nthird-party authority to import, export, distribute or use encryption.\nImporters, exporters, distributors and users are responsible for\ncompliance with U.S. and local country laws. By using this product you\nagree to comply with applicable laws and regulations. If you are unable\nto comply with U.S. and local laws, return this product immediately.\n\nA summary of U.S. laws governing Cisco cryptographic products may be found at:\nhttp://www.cisco.com/wwl/export/crypto/tool/stqrg.html\n\nIf you require further assistance please contact us by sending email to\nexport@cisco.com.\n\nLicense Level: ax\nLicense Type: N/A(Smart License Enabled)\nNext reload license Level: ax\n\nThe current throughput level is 1000 kbps \n\n\nSmart Licensing Status: UNREGISTERED/No Licenses in Use\n\ncisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.\nProcessor board ID 90UJOKAZON8\nRouter operating mode: Autonomous\n1 Gigabit Ethernet interface\n32768K bytes of non-volatile configuration memory.\n3976140K bytes of physical memory.\n6188032K bytes of virtual hard disk at bootflash:.\n\nConfiguration register is 0x2102"
    ],
    "stdout_lines": [
        [
            "Cisco IOS XE Software, Version 17.03.02",
            "Cisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)",
            "Technical Support: http://www.cisco.com/techsupport",
            "Copyright (c) 1986-2020 by Cisco Systems, Inc.",
            "Compiled Sat 31-Oct-20 13:16 by mcpre",
            "",
            "",
            "Cisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.",
            "All rights reserved.  Certain components of Cisco IOS-XE software are",
            "licensed under the GNU General Public License (\"GPL\") Version 2.0.  The",
            "software code licensed under GPL Version 2.0 is free software that comes",
            "with ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such",
            "GPL code under the terms of GPL Version 2.0.  For more details, see the",
            "documentation or \"License Notice\" file accompanying the IOS-XE software,",
            "or the applicable URL provided on the flyer accompanying the IOS-XE",
            "software.",
            "",
            "",
            "ROM: IOS-XE ROMMON",
            "",
            "ip-172-31-15-70 uptime is 2 hours, 25 minutes",
            "Uptime for this control processor is 2 hours, 27 minutes",
            "System returned to ROM by reload",
            "System image file is \"bootflash:packages.conf\"",
            "Last reload reason: reload",
            "",
            "",
            "",
            "This product contains cryptographic features and is subject to United",
            "States and local country laws governing import, export, transfer and",
            "use. Delivery of Cisco cryptographic products does not imply",
            "third-party authority to import, export, distribute or use encryption.",
            "Importers, exporters, distributors and users are responsible for",
            "compliance with U.S. and local country laws. By using this product you",
            "agree to comply with applicable laws and regulations. If you are unable",
            "to comply with U.S. and local laws, return this product immediately.",
            "",
            "A summary of U.S. laws governing Cisco cryptographic products may be found at:",
            "http://www.cisco.com/wwl/export/crypto/tool/stqrg.html",
            "",
            "If you require further assistance please contact us by sending email to",
            "export@cisco.com.",
            "",
            "License Level: ax",
            "License Type: N/A(Smart License Enabled)",
            "Next reload license Level: ax",
            "",
            "The current throughput level is 1000 kbps ",
            "",
            "",
            "Smart Licensing Status: UNREGISTERED/No Licenses in Use",
            "",
            "cisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.",
            "Processor board ID 90UJOKAZON8",
            "Router operating mode: Autonomous",
            "1 Gigabit Ethernet interface",
            "32768K bytes of non-volatile configuration memory.",
            "3976140K bytes of physical memory.",
            "6188032K bytes of virtual hard disk at bootflash:.",
            "",
            "Configuration register is 0x2102"
        ]
    ]
}
META: ran handlers
META: ran handlers

PLAY RECAP ************************************************************************************************************
172.31.15.70               : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Device interactive logging:

[root@ubuntu ~]# cat ansible.log 
2021-01-13 07:02:33,672 p=7475 u=root n=ansible | ansible-playbook 2.10.4
  config file = /root/ansible-awx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
2021-01-13 07:02:33,672 p=7475 u=root n=ansible | Using /root/ansible-awx/ansible.cfg as config file
2021-01-13 07:02:33,673 p=7475 u=root n=ansible | setting up inventory plugins
2021-01-13 07:02:33,695 p=7475 u=root n=ansible | host_list declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-13 07:02:33,695 p=7475 u=root n=ansible | script declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-13 07:02:33,695 p=7475 u=root n=ansible | auto declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-13 07:02:33,700 p=7475 u=root n=ansible | Parsed /root/ansible-awx/inventory inventory source with ini plugin
2021-01-13 07:02:33,912 p=7475 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-13 07:02:33,914 p=7475 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:02:33,927 p=7475 u=root n=ansible | Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
2021-01-13 07:02:33,953 p=7475 u=root n=ansible | Skipping callback 'default', as we already have a stdout callback.
2021-01-13 07:02:33,953 p=7475 u=root n=ansible | Skipping callback 'minimal', as we already have a stdout callback.
2021-01-13 07:02:33,953 p=7475 u=root n=ansible | Skipping callback 'oneline', as we already have a stdout callback.
2021-01-13 07:02:33,954 p=7475 u=root n=ansible | PLAYBOOK: ios_collection_test.yml *************************************************************************************
2021-01-13 07:02:33,955 p=7475 u=root n=ansible | 1 plays in ios_collection_test.yml
2021-01-13 07:02:33,957 p=7475 u=root n=ansible | PLAY [test ios] *******************************************************************************************************
2021-01-13 07:02:34,000 p=7475 u=root n=ansible | META: ran handlers
2021-01-13 07:02:34,003 p=7475 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:02:34,011 p=7475 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-13 07:02:34,023 p=7475 u=root n=ansible | TASK [run show version on remote devices] *****************************************************************************
2021-01-13 07:02:34,078 p=7481 u=root n=ansible | <172.31.15.70> attempting to start connection
2021-01-13 07:02:34,078 p=7481 u=root n=ansible | <172.31.15.70> using connection plugin ansible.netcommon.network_cli
2021-01-13 07:02:34,079 p=7481 u=root n=ansible | Found ansible-connection at path /usr/local/bin/ansible-connection
2021-01-13 07:02:35,982 p=7487 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-13 07:02:36,059 p=7487 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-13 07:02:36,111 p=7481 u=root n=ansible | <172.31.15.70> local domain socket does not exist, starting it
2021-01-13 07:02:36,112 p=7481 u=root n=ansible | <172.31.15.70> control socket path is /root/.ansible/pc/ff68711d6e
2021-01-13 07:02:36,112 p=7481 u=root n=ansible | <172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-13 07:02:36,113 p=7481 u=root n=ansible | <172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-13 07:02:36,113 p=7481 u=root n=ansible | <172.31.15.70> local domain socket listeners started successfully
2021-01-13 07:02:36,113 p=7481 u=root n=ansible | <172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
2021-01-13 07:02:36,113 p=7481 u=root n=ansible | network_os is set to cisco.ios.ios
2021-01-13 07:02:36,114 p=7481 u=root n=ansible | <172.31.15.70> 
2021-01-13 07:02:36,114 p=7481 u=root n=ansible | <172.31.15.70> local domain socket path is /root/.ansible/pc/ff68711d6e
2021-01-13 07:02:36,115 p=7481 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:02:36,116 p=7481 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:02:36,116 p=7481 u=root n=ansible | <172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
2021-01-13 07:02:36,117 p=7481 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-74751x6bv3qy `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873 `" && echo ansible-tmp-1610521356.1165786-7481-123515820354873="` echo /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873 `" ) && sleep 0'
2021-01-13 07:02:36,282 p=7481 u=root n=ansible | <172.31.15.70> Attempting python interpreter discovery
2021-01-13 07:02:36,283 p=7481 u=root n=ansible | <172.31.15.70> 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'
2021-01-13 07:02:36,290 p=7481 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
2021-01-13 07:02:36,335 p=7481 u=root n=ansible | Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
2021-01-13 07:02:36,336 p=7481 u=root n=ansible | <172.31.15.70> PUT /root/.ansible/tmp/ansible-local-74751x6bv3qy/tmp1orqdnh5 TO /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/AnsiballZ_ios_command.py
2021-01-13 07:02:36,337 p=7481 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/ /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/AnsiballZ_ios_command.py && sleep 0'
2021-01-13 07:02:36,344 p=7481 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/AnsiballZ_ios_command.py && sleep 0'
2021-01-13 07:02:36,527 p=7487 u=root n=ansible | <172.31.15.70> ESTABLISH PARAMIKO SSH CONNECTION FOR USER: ec2-user on PORT 22 TO 172.31.15.70
2021-01-13 07:02:36,530 p=7487 u=root n=ansible | <172.31.15.70> CONFIGURE PROXY COMMAND FOR CONNECTION: ssh -W 172.31.15.70:22 172.31.8.254 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
2021-01-13 07:02:36,531 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | starting thread (client mode): 0x383134e0
2021-01-13 07:02:36,532 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Local version/idstring: SSH-2.0-paramiko_2.7.2
2021-01-13 07:02:37,595 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Remote version/idstring: SSH-2.0-Cisco-1.25
2021-01-13 07:02:37,595 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Connected (version 2.0, client Cisco-1.25)
2021-01-13 07:02:37,600 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | kex algos:['ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp521', 'diffie-hellman-group14-sha1'] server key:['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa'] client encrypt:['aes128-gcm', 'aes256-gcm', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] server encrypt:['aes128-gcm', 'aes256-gcm', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] client mac:['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256', 'hmac-sha2-512'] server mac:['hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256', 'hmac-sha2-512'] client compress:['none'] server compress:['none'] client lang:[''] server lang:[''] kex follows?False
2021-01-13 07:02:37,600 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Kex agreed: ecdh-sha2-nistp256
2021-01-13 07:02:37,601 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | HostKey agreed: ssh-rsa
2021-01-13 07:02:37,601 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Cipher agreed: aes128-ctr
2021-01-13 07:02:37,601 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | MAC agreed: hmac-sha2-256
2021-01-13 07:02:37,601 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Compression agreed: none
2021-01-13 07:02:37,638 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | kex engine KexNistp256 specified hash_algo <built-in function openssl_sha256>
2021-01-13 07:02:37,639 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Switch to new keys ...
2021-01-13 07:02:37,655 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Trying discovered key b'46896c5154a404aeb7b22b847168b901' in /root/ansible-awx/ios.pem
2021-01-13 07:02:37,717 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | userauth is OK
2021-01-13 07:02:37,736 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Authentication (publickey) successful!
2021-01-13 07:02:37,737 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | [chan 0] Max packet in: 32768 bytes
2021-01-13 07:02:37,750 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | [chan 0] Max packet out: 4096 bytes
2021-01-13 07:02:37,750 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | Secsh channel 0 opened.
2021-01-13 07:02:37,764 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | [chan 0] Sesch channel 0 request ok
2021-01-13 07:02:37,777 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | [chan 0] Sesch channel 0 request ok
2021-01-13 07:02:39,137 p=7481 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-74751x6bv3qy/ansible-tmp-1610521356.1165786-7481-123515820354873/ > /dev/null 2>&1 && sleep 0'
2021-01-13 07:02:39,151 p=7475 u=root n=ansible | ok: [172.31.15.70] => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "stdout": [
        "Cisco IOS XE Software, Version 17.03.02\nCisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2020 by Cisco Systems, Inc.\nCompiled Sat 31-Oct-20 13:16 by mcpre\n\n\nCisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.\nAll rights reserved.  Certain components of Cisco IOS-XE software are\nlicensed under the GNU General Public License (\"GPL\") Version 2.0.  The\nsoftware code licensed under GPL Version 2.0 is free software that comes\nwith ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such\nGPL code under the terms of GPL Version 2.0.  For more details, see the\ndocumentation or \"License Notice\" file accompanying the IOS-XE software,\nor the applicable URL provided on the flyer accompanying the IOS-XE\nsoftware.\n\n\nROM: IOS-XE ROMMON\n\nip-172-31-15-70 uptime is 2 hours, 25 minutes\nUptime for this control processor is 2 hours, 27 minutes\nSystem returned to ROM by reload\nSystem image file is \"bootflash:packages.conf\"\nLast reload reason: reload\n\n\n\nThis product contains cryptographic features and is subject to United\nStates and local country laws governing import, export, transfer and\nuse. Delivery of Cisco cryptographic products does not imply\nthird-party authority to import, export, distribute or use encryption.\nImporters, exporters, distributors and users are responsible for\ncompliance with U.S. and local country laws. By using this product you\nagree to comply with applicable laws and regulations. If you are unable\nto comply with U.S. and local laws, return this product immediately.\n\nA summary of U.S. laws governing Cisco cryptographic products may be found at:\nhttp://www.cisco.com/wwl/export/crypto/tool/stqrg.html\n\nIf you require further assistance please contact us by sending email to\nexport@cisco.com.\n\nLicense Level: ax\nLicense Type: N/A(Smart License Enabled)\nNext reload license Level: ax\n\nThe current throughput level is 1000 kbps \n\n\nSmart Licensing Status: UNREGISTERED/No Licenses in Use\n\ncisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.\nProcessor board ID 90UJOKAZON8\nRouter operating mode: Autonomous\n1 Gigabit Ethernet interface\n32768K bytes of non-volatile configuration memory.\n3976140K bytes of physical memory.\n6188032K bytes of virtual hard disk at bootflash:.\n\nConfiguration register is 0x2102"
    ],
    "stdout_lines": [
        [
            "Cisco IOS XE Software, Version 17.03.02",
            "Cisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)",
            "Technical Support: http://www.cisco.com/techsupport",
            "Copyright (c) 1986-2020 by Cisco Systems, Inc.",
            "Compiled Sat 31-Oct-20 13:16 by mcpre",
            "",
            "",
            "Cisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.",
            "All rights reserved.  Certain components of Cisco IOS-XE software are",
            "licensed under the GNU General Public License (\"GPL\") Version 2.0.  The",
            "software code licensed under GPL Version 2.0 is free software that comes",
            "with ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such",
            "GPL code under the terms of GPL Version 2.0.  For more details, see the",
            "documentation or \"License Notice\" file accompanying the IOS-XE software,",
            "or the applicable URL provided on the flyer accompanying the IOS-XE",
            "software.",
            "",
            "",
            "ROM: IOS-XE ROMMON",
            "",
            "ip-172-31-15-70 uptime is 2 hours, 25 minutes",
            "Uptime for this control processor is 2 hours, 27 minutes",
            "System returned to ROM by reload",
            "System image file is \"bootflash:packages.conf\"",
            "Last reload reason: reload",
            "",
            "",
            "",
            "This product contains cryptographic features and is subject to United",
            "States and local country laws governing import, export, transfer and",
            "use. Delivery of Cisco cryptographic products does not imply",
            "third-party authority to import, export, distribute or use encryption.",
            "Importers, exporters, distributors and users are responsible for",
            "compliance with U.S. and local country laws. By using this product you",
            "agree to comply with applicable laws and regulations. If you are unable",
            "to comply with U.S. and local laws, return this product immediately.",
            "",
            "A summary of U.S. laws governing Cisco cryptographic products may be found at:",
            "http://www.cisco.com/wwl/export/crypto/tool/stqrg.html",
            "",
            "If you require further assistance please contact us by sending email to",
            "export@cisco.com.",
            "",
            "License Level: ax",
            "License Type: N/A(Smart License Enabled)",
            "Next reload license Level: ax",
            "",
            "The current throughput level is 1000 kbps ",
            "",
            "",
            "Smart Licensing Status: UNREGISTERED/No Licenses in Use",
            "",
            "cisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.",
            "Processor board ID 90UJOKAZON8",
            "Router operating mode: Autonomous",
            "1 Gigabit Ethernet interface",
            "32768K bytes of non-volatile configuration memory.",
            "3976140K bytes of physical memory.",
            "6188032K bytes of virtual hard disk at bootflash:.",
            "",
            "Configuration register is 0x2102"
        ]
    ]
}
2021-01-13 07:02:39,155 p=7475 u=root n=ansible | META: ran handlers
2021-01-13 07:02:39,160 p=7475 u=root n=ansible | META: ran handlers
2021-01-13 07:02:39,161 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | [chan 0] EOF sent (0)
2021-01-13 07:02:39,163 p=7475 u=root n=ansible | PLAY RECAP ************************************************************************************************************
2021-01-13 07:02:39,163 p=7475 u=root n=ansible | 172.31.15.70               : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
2021-01-13 07:02:39,187 p=7487 u=root n=p=7487 u=root | paramiko [172.31.15.70] | EOF in transport thread
2021-01-13 07:02:39,355 p=7487 u=root n=ansible | shutdown complete

Same using libssh: Interactive log using libssh:

2021-01-13 07:08:12,710 p=7540 u=root n=ansible | ansible-playbook 2.10.4
  config file = /root/ansible-awx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
2021-01-13 07:08:12,710 p=7540 u=root n=ansible | Using /root/ansible-awx/ansible.cfg as config file
2021-01-13 07:08:12,711 p=7540 u=root n=ansible | setting up inventory plugins
2021-01-13 07:08:12,733 p=7540 u=root n=ansible | host_list declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-13 07:08:12,733 p=7540 u=root n=ansible | script declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-13 07:08:12,733 p=7540 u=root n=ansible | auto declined parsing /root/ansible-awx/inventory as it did not pass its verify_file() method
2021-01-13 07:08:12,736 p=7540 u=root n=ansible | Parsed /root/ansible-awx/inventory inventory source with ini plugin
2021-01-13 07:08:12,961 p=7540 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-13 07:08:12,962 p=7540 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:08:12,975 p=7540 u=root n=ansible | Loading callback plugin default of type stdout, v2.0 from /usr/local/lib/python3.6/site-packages/ansible/plugins/callback/default.py
2021-01-13 07:08:13,000 p=7540 u=root n=ansible | Skipping callback 'default', as we already have a stdout callback.
2021-01-13 07:08:13,000 p=7540 u=root n=ansible | Skipping callback 'minimal', as we already have a stdout callback.
2021-01-13 07:08:13,001 p=7540 u=root n=ansible | Skipping callback 'oneline', as we already have a stdout callback.
2021-01-13 07:08:13,001 p=7540 u=root n=ansible | PLAYBOOK: ios_collection_test.yml *************************************************************************************
2021-01-13 07:08:13,001 p=7540 u=root n=ansible | 1 plays in ios_collection_test.yml
2021-01-13 07:08:13,004 p=7540 u=root n=ansible | PLAY [test ios] *******************************************************************************************************
2021-01-13 07:08:13,046 p=7540 u=root n=ansible | META: ran handlers
2021-01-13 07:08:13,048 p=7540 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:08:13,056 p=7540 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-13 07:08:13,068 p=7540 u=root n=ansible | TASK [run show version on remote devices] *****************************************************************************
2021-01-13 07:08:13,124 p=7546 u=root n=ansible | <172.31.15.70> attempting to start connection
2021-01-13 07:08:13,124 p=7546 u=root n=ansible | <172.31.15.70> using connection plugin ansible.netcommon.network_cli
2021-01-13 07:08:13,125 p=7546 u=root n=ansible | Found ansible-connection at path /usr/local/bin/ansible-connection
2021-01-13 07:08:15,012 p=7551 u=root n=ansible | Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-13 07:08:15,093 p=7551 u=root n=ansible | Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-13 07:08:15,146 p=7546 u=root n=ansible | <172.31.15.70> local domain socket does not exist, starting it
2021-01-13 07:08:15,146 p=7546 u=root n=ansible | <172.31.15.70> control socket path is /root/.ansible/pc/d46f915da5
2021-01-13 07:08:15,146 p=7546 u=root n=ansible | <172.31.15.70> Loading collection ansible.netcommon from /root/.ansible/collections/ansible_collections/ansible/netcommon
2021-01-13 07:08:15,146 p=7546 u=root n=ansible | <172.31.15.70> Loading collection cisco.ios from /root/.ansible/collections/ansible_collections/cisco/ios
2021-01-13 07:08:15,146 p=7546 u=root n=ansible | <172.31.15.70> local domain socket listeners started successfully
2021-01-13 07:08:15,147 p=7546 u=root n=ansible | <172.31.15.70> loaded cliconf plugin ansible_collections.cisco.ios.plugins.cliconf.ios from path /root/.ansible/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py for network_os cisco.ios.ios
2021-01-13 07:08:15,147 p=7546 u=root n=ansible | network_os is set to cisco.ios.ios
2021-01-13 07:08:15,147 p=7546 u=root n=ansible | <172.31.15.70> 
2021-01-13 07:08:15,147 p=7546 u=root n=ansible | <172.31.15.70> local domain socket path is /root/.ansible/pc/d46f915da5
2021-01-13 07:08:15,148 p=7546 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:08:15,149 p=7546 u=root n=ansible | redirecting (type: action) cisco.ios.ios_command to cisco.ios.ios
2021-01-13 07:08:15,149 p=7546 u=root n=ansible | <172.31.15.70> ESTABLISH LOCAL CONNECTION FOR USER: root
2021-01-13 07:08:15,150 p=7546 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-local-7540qmywbcq1 `"&& mkdir "` echo /root/.ansible/tmp/ansible-local-7540qmywbcq1/ansible-tmp-1610521695.1495004-7546-259044026297868 `" && echo ansible-tmp-1610521695.1495004-7546-259044026297868="` echo /root/.ansible/tmp/ansible-local-7540qmywbcq1/ansible-tmp-1610521695.1495004-7546-259044026297868 `" ) && sleep 0'
2021-01-13 07:08:15,316 p=7546 u=root n=ansible | <172.31.15.70> Attempting python interpreter discovery
2021-01-13 07:08:15,317 p=7546 u=root n=ansible | <172.31.15.70> 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'
2021-01-13 07:08:15,323 p=7546 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/bin/python3.6 && sleep 0'
2021-01-13 07:08:15,368 p=7546 u=root n=ansible | Using module file /root/.ansible/collections/ansible_collections/cisco/ios/plugins/modules/ios_command.py
2021-01-13 07:08:15,369 p=7546 u=root n=ansible | <172.31.15.70> PUT /root/.ansible/tmp/ansible-local-7540qmywbcq1/tmpcx9o7ndu TO /root/.ansible/tmp/ansible-local-7540qmywbcq1/ansible-tmp-1610521695.1495004-7546-259044026297868/AnsiballZ_ios_command.py
2021-01-13 07:08:15,369 p=7546 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-local-7540qmywbcq1/ansible-tmp-1610521695.1495004-7546-259044026297868/ /root/.ansible/tmp/ansible-local-7540qmywbcq1/ansible-tmp-1610521695.1495004-7546-259044026297868/AnsiballZ_ios_command.py && sleep 0'
2021-01-13 07:08:15,375 p=7546 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c '/usr/libexec/platform-python /root/.ansible/tmp/ansible-local-7540qmywbcq1/ansible-tmp-1610521695.1495004-7546-259044026297868/AnsiballZ_ios_command.py && sleep 0'
2021-01-13 07:08:15,565 p=7551 u=root n=ansible | <172.31.15.70> ESTABLISH LIBSSH CONNECTION FOR USER: ec2-user on PORT 22 TO 172.31.15.70
2021-01-13 07:08:16,640 p=7551 u=root n=ansible | ssh connection is OK: <pylibsshext.session.Session object at 0x7f1ab9800678>
2021-01-13 07:08:17,789 p=7546 u=root n=ansible | <172.31.15.70> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-local-7540qmywbcq1/ansible-tmp-1610521695.1495004-7546-259044026297868/ > /dev/null 2>&1 && sleep 0'
2021-01-13 07:08:17,803 p=7540 u=root n=ansible | ok: [172.31.15.70] => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "commands": [
                "show version"
            ],
            "interval": 1,
            "match": "all",
            "provider": null,
            "retries": 10,
            "wait_for": null
        }
    },
    "stdout": [
        "Cisco IOS XE Software, Version 17.03.02\nCisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2020 by Cisco Systems, Inc.\nCompiled Sat 31-Oct-20 13:16 by mcpre\n\n\nCisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.\nAll rights reserved.  Certain components of Cisco IOS-XE software are\nlicensed under the GNU General Public License (\"GPL\") Version 2.0.  The\nsoftware code licensed under GPL Version 2.0 is free software that comes\nwith ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such\nGPL code under the terms of GPL Version 2.0.  For more details, see the\ndocumentation or \"License Notice\" file accompanying the IOS-XE software,\nor the applicable URL provided on the flyer accompanying the IOS-XE\nsoftware.\n\n\nROM: IOS-XE ROMMON\n\nip-172-31-15-70 uptime is 2 hours, 31 minutes\nUptime for this control processor is 2 hours, 32 minutes\nSystem returned to ROM by reload\nSystem image file is \"bootflash:packages.conf\"\nLast reload reason: reload\n\n\n\nThis product contains cryptographic features and is subject to United\nStates and local country laws governing import, export, transfer and\nuse. Delivery of Cisco cryptographic products does not imply\nthird-party authority to import, export, distribute or use encryption.\nImporters, exporters, distributors and users are responsible for\ncompliance with U.S. and local country laws. By using this product you\nagree to comply with applicable laws and regulations. If you are unable\nto comply with U.S. and local laws, return this product immediately.\n\nA summary of U.S. laws governing Cisco cryptographic products may be found at:\nhttp://www.cisco.com/wwl/export/crypto/tool/stqrg.html\n\nIf you require further assistance please contact us by sending email to\nexport@cisco.com.\n\nLicense Level: ax\nLicense Type: N/A(Smart License Enabled)\nNext reload license Level: ax\n\nThe current throughput level is 1000 kbps \n\n\nSmart Licensing Status: UNREGISTERED/No Licenses in Use\n\ncisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.\nProcessor board ID 90UJOKAZON8\nRouter operating mode: Autonomous\n1 Gigabit Ethernet interface\n32768K bytes of non-volatile configuration memory.\n3976140K bytes of physical memory.\n6188032K bytes of virtual hard disk at bootflash:.\n\nConfiguration register is 0x2102"
    ],
    "stdout_lines": [
        [
            "Cisco IOS XE Software, Version 17.03.02",
            "Cisco IOS Software [Amsterdam], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.3.2, RELEASE SOFTWARE (fc3)",
            "Technical Support: http://www.cisco.com/techsupport",
            "Copyright (c) 1986-2020 by Cisco Systems, Inc.",
            "Compiled Sat 31-Oct-20 13:16 by mcpre",
            "",
            "",
            "Cisco IOS-XE software, Copyright (c) 2005-2020 by cisco Systems, Inc.",
            "All rights reserved.  Certain components of Cisco IOS-XE software are",
            "licensed under the GNU General Public License (\"GPL\") Version 2.0.  The",
            "software code licensed under GPL Version 2.0 is free software that comes",
            "with ABSOLUTELY NO WARRANTY.  You can redistribute and/or modify such",
            "GPL code under the terms of GPL Version 2.0.  For more details, see the",
            "documentation or \"License Notice\" file accompanying the IOS-XE software,",
            "or the applicable URL provided on the flyer accompanying the IOS-XE",
            "software.",
            "",
            "",
            "ROM: IOS-XE ROMMON",
            "",
            "ip-172-31-15-70 uptime is 2 hours, 31 minutes",
            "Uptime for this control processor is 2 hours, 32 minutes",
            "System returned to ROM by reload",
            "System image file is \"bootflash:packages.conf\"",
            "Last reload reason: reload",
            "",
            "",
            "",
            "This product contains cryptographic features and is subject to United",
            "States and local country laws governing import, export, transfer and",
            "use. Delivery of Cisco cryptographic products does not imply",
            "third-party authority to import, export, distribute or use encryption.",
            "Importers, exporters, distributors and users are responsible for",
            "compliance with U.S. and local country laws. By using this product you",
            "agree to comply with applicable laws and regulations. If you are unable",
            "to comply with U.S. and local laws, return this product immediately.",
            "",
            "A summary of U.S. laws governing Cisco cryptographic products may be found at:",
            "http://www.cisco.com/wwl/export/crypto/tool/stqrg.html",
            "",
            "If you require further assistance please contact us by sending email to",
            "export@cisco.com.",
            "",
            "License Level: ax",
            "License Type: N/A(Smart License Enabled)",
            "Next reload license Level: ax",
            "",
            "The current throughput level is 1000 kbps ",
            "",
            "",
            "Smart Licensing Status: UNREGISTERED/No Licenses in Use",
            "",
            "cisco CSR1000V (VXE) processor (revision VXE) with 2068935K/3075K bytes of memory.",
            "Processor board ID 90UJOKAZON8",
            "Router operating mode: Autonomous",
            "1 Gigabit Ethernet interface",
            "32768K bytes of non-volatile configuration memory.",
            "3976140K bytes of physical memory.",
            "6188032K bytes of virtual hard disk at bootflash:.",
            "",
            "Configuration register is 0x2102"
        ]
    ]
}
2021-01-13 07:08:17,808 p=7540 u=root n=ansible | META: ran handlers
2021-01-13 07:08:17,813 p=7540 u=root n=ansible | META: ran handlers
2021-01-13 07:08:17,816 p=7540 u=root n=ansible | PLAY RECAP ************************************************************************************************************
2021-01-13 07:08:17,816 p=7540 u=root n=ansible | 172.31.15.70               : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
2021-01-13 07:08:17,916 p=7551 u=root n=ansible | shutdown complete

Looks like an issue when we pass those multiple hosts via the inventory using ansible_ssh_common_args. With a SSH config file, it is working.

NilashishC commented 3 years ago

@IshwarKanse I have opened a PR to fix the first issue (expanding env vars) - https://github.com/ansible/ansible/pull/74305.

Regarding the chained jumphosts, @ganeshrn has confirmed from libssh maintainers that libssh does not have support for nested jumphosts in command line as of yet. We suspect the same to be true for paramiko as well. Based on the inventory you shared for the RHEL targets, you are using ansible_connection: ssh and not ansible_connection: paramiko_ssh, if you switch to paramiko_ssh, I believe you will notice the same issue. This is because we just extract the proxy_command by scanning all the relevant settings (in your case ssh_common_args) and hand it over to the transports (libssh/paramiko). At this point, we would recommend using libssh with the nested jumphost settings defined in the SSH config file, like you shared.

NilashishC commented 3 years ago

@IshwarKanse Also, just fyi, proxy_command is not being read from ssh_* setting in ansible/ansible devel. I have opened this issue to track it (https://github.com/ansible/ansible/issues/74292). Setting the proxy_command directly via the ANSIBLE_PARAMIKO_PROXY_COMMAND environment variable or in the [paramiko_connection] ini entry works.

NilashishC commented 3 years ago

@IshwarKanse As suggested in ansible/ansible#74305, expanding environment variables within Ansible paramiko_ssh is not the correct solution. We should instead be using the environment lookup plugin. I can verify that this works:

ansible_ssh_common_args = '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ProxyCommand="ssh -W %h:%p ec2-user@15.206.79.110 -i {{ lookup("env", "JH1_SSH_PRIVATE_KEY") }} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"'

Regarding the second issue, as described previously, the underlying libraries (paramiko/libssh) do not support setting nested jumphosts via ProxyCommand and hence, we are limited by it. As such, we will be closing this ticket. Please feel free to reach out, if you wish to discuss this further. Thank you!