napalm-automation/napalm-ansible

"the python module napalm is required"

penguin02007 opened this issue · 5 comments

Got "the python module napalm is required" when calling napalm_install_config, confirmed all the required python modules are installed along with the correct path in ansible.cfg.

$ pip freeze|grep -iE 'napalm|ansible'
ansible==2.6.3
napalm==2.3.2
napalm-ansible==0.10.0
$ grep -iE 'library|action_plugins' ansible.cfg 
library           = /usr/local/lib/python2.7/site-packages/napalm_ansible/modules
action_plugins    = /usr/local/lib/python2.7/site-packages/napalm_ansible/plugins/action
The full traceback is:
  File "/var/folders/hp/zbcbp7wd5zqgcph8b5bbr3f42vxdjf/T/ansible_Maungo/ansible_module_napalm_install_config.py", line 171, in <module>
    from napalm_base import get_network_driver   # noqa

fatal: [mgmtsw2-bos1]: FAILED! => {
    "changed": false, 
    "invocation": {
        "module_args": {
            "archive_file": null, 
            "candidate_file": null, 
            "commit_changes": false, 
            "config": null, 
            "config_file": "configs/mgmtsw2-bos1", 
            "dev_os": "ios", 
            "diff_file": "configs/mgmtsw2-bos1.diff", 
            "get_diffs": true, 
            "hostname": "mgmtsw2-bos1", 
            "optional_args": null, 
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "provider": {
                "hostname": "mgmtsw2-bos1", 
                "password": null, 
                "timeout": 60, 
                "username": "ansible"
            }, 
            "replace_config": false, 
            "timeout": 60, 
            "username": "labuser"
        }
    }, 
    "msg": "the python module napalm is required"
}

Are you sure you are using the right Python?

Make sure you are setting the following:

ansible_connection=local
ansible_python_interpreter=/path/to/python

As shown here these are inventory variables.

Yes, the path is /usr/local/bin/python. I tried re-installing the napalm module but no luck

$ which python
/usr/local/bin/python
$ pip install napalm
Collecting napalm
Requirement already satisfied: pyeapi in /usr/local/lib/python2.7/site-packages (from napalm) (0.8.2)
Requirement already satisfied: pynxos==0.0.3 in /usr/local/lib/python2.7/site-packages (from napalm) (0.0.3)
Requirement already satisfied: pyIOSXR>=0.53 in /usr/local/lib/python2.7/site-packages (from napalm) (0.53)
Requirement already satisfied: jinja2 in /usr/local/lib/python2.7/site-packages (from napalm) (2.10)
Requirement already satisfied: junos-eznc>=2.1.5 in /usr/local/lib/python2.7/site-packages (from napalm) (2.2.0)
Requirement already satisfied: netaddr in /usr/local/lib/python2.7/site-packages (from napalm) (0.7.19)
Requirement already satisfied: textfsm in /usr/local/lib/python2.7/site-packages (from napalm) (0.4.1)
Requirement already satisfied: netmiko>=2.1.1 in /usr/local/lib/python2.7/site-packages (from napalm) (2.2.2)
Requirement already satisfied: future in /usr/local/lib/python2.7/site-packages (from napalm) (0.16.0)
Requirement already satisfied: pyYAML in /usr/local/lib/python2.7/site-packages (from napalm) (3.13)
Requirement already satisfied: scp in /usr/local/lib/python2.7/site-packages (from napalm) (0.11.0)
Requirement already satisfied: cffi>=1.11.3 in /usr/local/lib/python2.7/site-packages (from napalm) (1.11.5)
Requirement already satisfied: setuptools>=38.4.0 in /usr/local/lib/python2.7/site-packages (from napalm) (39.2.0)
Requirement already satisfied: requests>=2.7.0 in /usr/local/lib/python2.7/site-packages (from pynxos==0.0.3->napalm) (2.19.1)
Requirement already satisfied: lxml>=3.2.4 in /usr/local/lib/python2.7/site-packages (from pyIOSXR>=0.53->napalm) (4.2.4)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python2.7/site-packages (from jinja2->napalm) (1.0)
Requirement already satisfied: paramiko>=1.15.2 in /usr/local/lib/python2.7/site-packages (from junos-eznc>=2.1.5->napalm) (2.4.1)
Requirement already satisfied: six in /usr/local/lib/python2.7/site-packages (from junos-eznc>=2.1.5->napalm) (1.11.0)
Requirement already satisfied: ncclient>=0.5.4 in /usr/local/lib/python2.7/site-packages (from junos-eznc>=2.1.5->napalm) (0.6.2)
Requirement already satisfied: pyserial in /usr/local/lib/python2.7/site-packages (from junos-eznc>=2.1.5->napalm) (3.4)
Requirement already satisfied: ipaddress in /usr/local/lib/python2.7/site-packages (from netmiko>=2.1.1->napalm) (1.0.22)
Requirement already satisfied: enum34 in /usr/local/lib/python2.7/site-packages (from netmiko>=2.1.1->napalm) (1.1.6)
Requirement already satisfied: pycparser in /usr/local/lib/python2.7/site-packages (from cffi>=1.11.3->napalm) (2.18)
Requirement already satisfied: idna<2.8,>=2.5 in /usr/local/lib/python2.7/site-packages (from requests>=2.7.0->pynxos==0.0.3->napalm) (2.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/site-packages (from requests>=2.7.0->pynxos==0.0.3->napalm) (2018.8.24)
Requirement already satisfied: urllib3<1.24,>=1.21.1 in /usr/local/lib/python2.7/site-packages (from requests>=2.7.0->pynxos==0.0.3->napalm) (1.23)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python2.7/site-packages (from requests>=2.7.0->pynxos==0.0.3->napalm) (3.0.4)
Requirement already satisfied: pynacl>=1.0.1 in /usr/local/lib/python2.7/site-packages (from paramiko>=1.15.2->junos-eznc>=2.1.5->napalm) (1.2.1)
Requirement already satisfied: cryptography>=1.5 in /usr/local/lib/python2.7/site-packages (from paramiko>=1.15.2->junos-eznc>=2.1.5->napalm) (2.3.1)
Requirement already satisfied: bcrypt>=3.1.3 in /usr/local/lib/python2.7/site-packages (from paramiko>=1.15.2->junos-eznc>=2.1.5->napalm) (3.1.4)
Requirement already satisfied: pyasn1>=0.1.7 in /usr/local/lib/python2.7/site-packages (from paramiko>=1.15.2->junos-eznc>=2.1.5->napalm) (0.4.4)
Requirement already satisfied: selectors2>=2.0.1 in /usr/local/lib/python2.7/site-packages (from ncclient>=0.5.4->junos-eznc>=2.1.5->napalm) (2.0.1)
Requirement already satisfied: asn1crypto>=0.21.0 in /usr/local/lib/python2.7/site-packages (from cryptography>=1.5->paramiko>=1.15.2->junos-eznc>=2.1.5->napalm) (0.24.0)
Installing collected packages: napalm
Successfully installed napalm-2.3.2
$ which napalm
/usr/local/bin/napalm
$ which napalm-ansible
/usr/local/bin/napalm-ansible
$ which python
/usr/local/bin/python
$ napalm
usage: napalm [-h] [--user USER] [--password PASSWORD] --vendor VENDOR
              [--optional_args OPTIONAL_ARGS] [--debug]
              hostname {configure,call,validate} ...
napalm: error: too few arguments
$ napalm-ansible 
To ensure Ansible can use the NAPALM modules you will have
to add the following configurtion to your Ansible configuration
file (ansible.cfg):

    [defaults]
    library = /usr/local/lib/python2.7/site-packages/napalm_ansible/modules
    action_plugins = /usr/local/lib/python2.7/site-packages/napalm_ansible/plugins/action

For more details on ansible's configuration file visit:
https://docs.ansible.com/ansible/latest/intro_configuration.html

$ ls -alh /usr/local/lib/python2.7/site-packages/napalm
total 32
drwxr-xr-x   13 foo  admin   442B Sep  6 10:24 .
drwxr-xr-x  122 foo  admin   4.1K Sep  6 10:12 ..
-rw-r--r--    1 foo  admin   112B Sep  6 10:12 _SUPPORTED_DRIVERS.py
-rw-r--r--    1 foo  admin   326B Sep  6 10:12 _SUPPORTED_DRIVERS.pyc
-rw-r--r--    1 foo  admin   661B Sep  6 10:12 __init__.py
-rw-r--r--    1 foo  admin   848B Sep  6 10:12 __init__.pyc
drwxr-xr-x   23 foo  admin   782B Sep  6 10:12 base
drwxr-xr-x    8 foo  admin   272B Sep  6 10:12 eos
drwxr-xr-x    8 foo  admin   272B Sep  6 10:12 ios
drwxr-xr-x    9 foo  admin   306B Sep  6 10:12 iosxr
drwxr-xr-x   10 foo  admin   340B Sep  6 10:12 junos
drwxr-xr-x    8 foo  admin   272B Sep  6 10:12 nxos
drwxr-xr-x    8 foo  admin   272B Sep  6 10:12 nxos_ssh

In an Ansible context which python is not particularly useful.

Can you post the output of ansible-playbook -vvv (running on the playbook that is failing)?

Yes -

$ ansible-playbook ios.yml -CD -vvv
ansible-playbook 2.6.3
  config file = /Users/penguin02007/Documents/rgithub/autoraknet/ansible.cfg
  configured module search path = [u'/usr/local/lib/python2.7/site-packages/napalm_ansible/modules']
  ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 2.7.15 (default, Jun 17 2018, 13:05:56) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)]
Using /Users/penguin02007/Documents/rgithub/autoraknet/ansible.cfg as config file
Parsed /Users/penguin02007/Documents/rgithub/autoraknet/inventory/dev inventory source with ini plugin
 ___________________ 
< PLAYBOOK: ios.yml >
 ------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

1 plays in ios.yml
 _____________________________________ 
< PLAY [Generate configuration files] >
 ------------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

META: ran handlers
 _______________________________ 
< TASK [ios : Generate configs] >
 ------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

task path: /Users/penguin02007/Documents/rgithub/autoraknet/roles/ios/tasks/main.yml:3
<mgmtsw1-pek1> ESTABLISH LOCAL CONNECTION FOR USER: penguin02007
<mgmtsw1-pek1> EXEC /bin/sh -c 'echo ~penguin02007 && sleep 0'
<mgmtsw1-pek1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185 `" && echo ansible-tmp-1536255495.23-151861826469185="` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185 `" ) && sleep 0'
<mgmtsw2-pek1> ESTABLISH LOCAL CONNECTION FOR USER: penguin02007
<mgmtsw2-pek1> EXEC /bin/sh -c 'echo ~penguin02007 && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605 `" && echo ansible-tmp-1536255495.26-133269631076605="` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605 `" ) && sleep 0'
<mgmtsw3-pek1> ESTABLISH LOCAL CONNECTION FOR USER: penguin02007
<mgmtsw3-pek1> EXEC /bin/sh -c 'echo ~penguin02007 && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542 `" && echo ansible-tmp-1536255495.3-149925628172542="` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542 `" ) && sleep 0'
Using module file /usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py
<mgmtsw1-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpxNepzQ TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/stat.py
Using module file /usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py
<mgmtsw1-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/stat.py && sleep 0'
Using module file /usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py
<mgmtsw3-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpWRASoP TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/stat.py
<mgmtsw2-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpjWkYhX TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/stat.py
<mgmtsw3-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/stat.py && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/stat.py && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/stat.py && sleep 0'
<mgmtsw1-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/stat.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/stat.py && sleep 0'
Using module file /usr/local/lib/python2.7/site-packages/ansible/modules/files/file.py
Using module file /usr/local/lib/python2.7/site-packages/ansible/modules/files/file.py
Using module file /usr/local/lib/python2.7/site-packages/ansible/modules/files/file.py
<mgmtsw1-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpC7TnFq TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/file.py
<mgmtsw3-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpPWM6Jn TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/file.py
<mgmtsw2-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpMlnkd6 TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/file.py
<mgmtsw1-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/file.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/file.py && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/file.py && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/file.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/file.py && sleep 0'
<mgmtsw1-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/file.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c 'rm -f -r /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.3-149925628172542/ > /dev/null 2>&1 && sleep 0'
<mgmtsw1-pek1> EXEC /bin/sh -c 'rm -f -r /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.23-151861826469185/ > /dev/null 2>&1 && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c 'rm -f -r /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255495.26-133269631076605/ > /dev/null 2>&1 && sleep 0'
ok: [mgmtsw3-pek1] => {
    "changed": false, 
    "checksum": "8e8b21533d581c49d694afe191850472e5d3ee35", 
    "dest": "configs/mgmtsw3-pek1", 
    "diff": {
        "after": {
            "path": "configs/mgmtsw3-pek1"
        }, 
        "before": {
            "path": "configs/mgmtsw3-pek1"
        }
    }, 
    "gid": 679754705, 
    "group": "679754705", 
    "invocation": {
        "module_args": {
            "_diff_peek": null, 
            "_original_basename": "main.j2", 
            "attributes": null, 
            "backup": null, 
            "content": null, 
            "delimiter": null, 
            "dest": "configs/mgmtsw3-pek1", 
            "directory_mode": null, 
            "follow": false, 
            "force": false, 
            "group": null, 
            "mode": null, 
            "owner": null, 
            "path": "configs/mgmtsw3-pek1", 
            "recurse": false, 
            "regexp": null, 
            "remote_src": null, 
            "selevel": null, 
            "serole": null, 
            "setype": null, 
            "seuser": null, 
            "src": null, 
            "state": "file", 
            "unsafe_writes": null
        }
    }, 
    "mode": "0644", 
    "owner": "penguin02007", 
    "path": "configs/mgmtsw3-pek1", 
    "size": 2461, 
    "state": "file", 
    "uid": 96384558
}
ok: [mgmtsw1-pek1] => {
    "changed": false, 
    "checksum": "731a620c6d62e28263e878414f4d4625ff1baa4d", 
    "dest": "configs/mgmtsw1-pek1", 
    "diff": {
        "after": {
            "path": "configs/mgmtsw1-pek1"
        }, 
        "before": {
            "path": "configs/mgmtsw1-pek1"
        }
    }, 
    "gid": 679754705, 
    "group": "679754705", 
    "invocation": {
        "module_args": {
            "_diff_peek": null, 
            "_original_basename": "main.j2", 
            "attributes": null, 
            "backup": null, 
            "content": null, 
            "delimiter": null, 
            "dest": "configs/mgmtsw1-pek1", 
            "directory_mode": null, 
            "follow": false, 
            "force": false, 
            "group": null, 
            "mode": null, 
            "owner": null, 
            "path": "configs/mgmtsw1-pek1", 
            "recurse": false, 
            "regexp": null, 
            "remote_src": null, 
            "selevel": null, 
            "serole": null, 
            "setype": null, 
            "seuser": null, 
            "src": null, 
            "state": "file", 
            "unsafe_writes": null
        }
    }, 
    "mode": "0644", 
    "owner": "penguin02007", 
    "path": "configs/mgmtsw1-pek1", 
    "size": 6038, 
    "state": "file", 
    "uid": 96384558
}
ok: [mgmtsw2-pek1] => {
    "changed": false, 
    "checksum": "3fba788d9906d636dbbcabd19b5884bfd318261d", 
    "dest": "configs/mgmtsw2-pek1", 
    "diff": {
        "after": {
            "path": "configs/mgmtsw2-pek1"
        }, 
        "before": {
            "path": "configs/mgmtsw2-pek1"
        }
    }, 
    "gid": 679754705, 
    "group": "679754705", 
    "invocation": {
        "module_args": {
            "_diff_peek": null, 
            "_original_basename": "main.j2", 
            "attributes": null, 
            "backup": null, 
            "content": null, 
            "delimiter": null, 
            "dest": "configs/mgmtsw2-pek1", 
            "directory_mode": null, 
            "follow": false, 
            "force": false, 
            "group": null, 
            "mode": null, 
            "owner": null, 
            "path": "configs/mgmtsw2-pek1", 
            "recurse": false, 
            "regexp": null, 
            "remote_src": null, 
            "selevel": null, 
            "serole": null, 
            "setype": null, 
            "seuser": null, 
            "src": null, 
            "state": "file", 
            "unsafe_writes": null
        }
    }, 
    "mode": "0644", 
    "owner": "penguin02007", 
    "path": "configs/mgmtsw2-pek1", 
    "size": 4533, 
    "state": "file", 
    "uid": 96384558
}
 ___________________________________________ 
< TASK [ios : Install Config and save diff] >
 ------------------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

task path: /Users/penguin02007/Documents/rgithub/autoraknet/roles/ios/tasks/main.yml:8
<mgmtsw1-pek1> ESTABLISH LOCAL CONNECTION FOR USER: penguin02007
<mgmtsw1-pek1> EXEC /bin/sh -c 'echo ~penguin02007 && sleep 0'
<mgmtsw2-pek1> ESTABLISH LOCAL CONNECTION FOR USER: penguin02007
<mgmtsw2-pek1> EXEC /bin/sh -c 'echo ~penguin02007 && sleep 0'
<mgmtsw1-pek1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297 `" && echo ansible-tmp-1536255496.09-178733999876297="` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297 `" ) && sleep 0'
<mgmtsw3-pek1> ESTABLISH LOCAL CONNECTION FOR USER: penguin02007
<mgmtsw3-pek1> EXEC /bin/sh -c 'echo ~penguin02007 && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021 `" && echo ansible-tmp-1536255496.1-87378251434021="` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021 `" ) && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026 `" && echo ansible-tmp-1536255496.12-268192579736026="` echo /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026 `" ) && sleep 0'
Using module file /usr/local/lib/python2.7/site-packages/napalm_ansible/modules/napalm_install_config.py
Using module file /usr/local/lib/python2.7/site-packages/napalm_ansible/modules/napalm_install_config.py
Using module file /usr/local/lib/python2.7/site-packages/napalm_ansible/modules/napalm_install_config.py
<mgmtsw1-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpbtwXgs TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297/napalm_install_config.py
<mgmtsw1-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297/napalm_install_config.py && sleep 0'
<mgmtsw2-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpcSQ4Q9 TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021/napalm_install_config.py
<mgmtsw3-pek1> PUT /Users/penguin02007/.ansible/tmp/ansible-local-18946NscfNH/tmpkwReuk TO /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026/napalm_install_config.py
<mgmtsw2-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021/napalm_install_config.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c 'chmod u+x /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026/ /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026/napalm_install_config.py && sleep 0'
<mgmtsw1-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297/napalm_install_config.py && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021/napalm_install_config.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026/napalm_install_config.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c 'rm -f -r /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026/ > /dev/null 2>&1 && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c 'rm -f -r /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021/ > /dev/null 2>&1 && sleep 0'
<mgmtsw1-pek1> EXEC /bin/sh -c 'rm -f -r /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
  File "/var/folders/hp/zbcbp7wd5zqgcph8b5bbr3f42vxdjf/T/ansible_pR9Pt7/ansible_module_napalm_install_config.py", line 171, in <module>
    from napalm_base import get_network_driver   # noqa

fatal: [mgmtsw3-pek1]: FAILED! => {
    "changed": false, 
    "invocation": {
        "module_args": {
            "archive_file": null, 
            "candidate_file": null, 
            "commit_changes": false, 
            "config": null, 
            "config_file": "configs/mgmtsw3-pek1", 
            "dev_os": "ios", 
            "diff_file": "configs/mgmtsw3-pek1.diff", 
            "get_diffs": true, 
            "hostname": "mgmtsw3-pek1", 
            "optional_args": null, 
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "provider": {
                "hostname": "mgmtsw3-pek1", 
                "password": null, 
                "timeout": 60, 
                "username": "ansible"
            }, 
            "replace_config": false, 
            "timeout": 60, 
            "username": "labuser"
        }
    }, 
    "msg": "the python module napalm is required"
}
The full traceback is:
  File "/var/folders/hp/zbcbp7wd5zqgcph8b5bbr3f42vxdjf/T/ansible_Izy8O4/ansible_module_napalm_install_config.py", line 171, in <module>
    from napalm_base import get_network_driver   # noqa

fatal: [mgmtsw1-pek1]: FAILED! => {
    "changed": false, 
    "invocation": {
        "module_args": {
            "archive_file": null, 
            "candidate_file": null, 
            "commit_changes": false, 
            "config": null, 
            "config_file": "configs/mgmtsw1-pek1", 
            "dev_os": "ios", 
            "diff_file": "configs/mgmtsw1-pek1.diff", 
            "get_diffs": true, 
            "hostname": "mgmtsw1-pek1", 
            "optional_args": null, 
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "provider": {
                "hostname": "mgmtsw1-pek1", 
                "password": null, 
                "timeout": 60, 
                "username": "ansible"
            }, 
            "replace_config": false, 
            "timeout": 60, 
            "username": "labuser"
        }
    }, 
    "msg": "the python module napalm is required"
}
The full traceback is:
  File "/var/folders/hp/zbcbp7wd5zqgcph8b5bbr3f42vxdjf/T/ansible_0gjWPN/ansible_module_napalm_install_config.py", line 171, in <module>
    from napalm_base import get_network_driver   # noqa

fatal: [mgmtsw2-pek1]: FAILED! => {
    "changed": false, 
    "invocation": {
        "module_args": {
            "archive_file": null, 
            "candidate_file": null, 
            "commit_changes": false, 
            "config": null, 
            "config_file": "configs/mgmtsw2-pek1", 
            "dev_os": "ios", 
            "diff_file": "configs/mgmtsw2-pek1.diff", 
            "get_diffs": true, 
            "hostname": "mgmtsw2-pek1", 
            "optional_args": null, 
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "provider": {
                "hostname": "mgmtsw2-pek1", 
                "password": null, 
                "timeout": 60, 
                "username": "ansible"
            }, 
            "replace_config": false, 
            "timeout": 60, 
            "username": "labuser"
        }
    }, 
    "msg": "the python module napalm is required"
}
    to retry, use: --limit @/Users/penguin02007/Documents/rgithub/autoraknet/ios.retry
 ____________ 
< PLAY RECAP >
 ------------ 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

mgmtsw1-pek1               : ok=1    changed=0    unreachable=0    failed=1   
mgmtsw2-pek1               : ok=1    changed=0    unreachable=0    failed=1   
mgmtsw3-pek1               : ok=1    changed=0    unreachable=0    failed=1   

Yes, you can see it is using /usr/bin/python:

<mgmtsw1-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.09-178733999876297/napalm_install_config.py && sleep 0'
<mgmtsw2-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.1-87378251434021/napalm_install_config.py && sleep 0'
<mgmtsw3-pek1> EXEC /bin/sh -c '/usr/bin/python /Users/penguin02007/.ansible/tmp/ansible-tmp-1536255496.12-268192579736026/napalm_install_config.py && sleep 0'