Hi All,

When we attempt to use Ansible on a bare metal server running centos 6.5, 
single python2.7 the "juniper_junos_config:" module gives us this error 
"import error: No module named plugins.action.normal". This works fine on 
another Ubuntu server. I hope someone here may have some thoughts on what 
is wrong. 

p-mon01{jnaughton}~/network-ansible/ansible [1038] $ ansible-playbook -i 
hosts-lab playbooks/lab-push.pb.yaml -vvv 
ansible-playbook 2.7.0 
config file = /home/jnaughton/network-ansible/ansible/ansible.cfg 
configured module search path = 
[u'/home/jnaughton/network-ansible/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.14 (default, Oct 19 2018, 14:48:27) [GCC 4.4.7 
20120313 (Red Hat 4.4.7-11)] 
Using /home/jnaughton/network-ansible/ansible/ansible.cfg as config file 
Parsed /home/jnaughton/network-ansible/ansible/hosts-lab inventory source 
with ini plugin 

PLAYBOOK: lab-push.pb.yaml 
*************************************************************************************************
 

1 plays in playbooks/lab-push.pb.yaml 
Username: labtech 
Password: 

PLAY [Load and generate a configuration and push to a device running Junos 
OS] ********************************************* 
META: ran handlers 

TASK [load configure file into device] 
*************************************************************************************
 

task path: 
/home/jnaughton/network-ansible/ansible/playbooks/lab-push.pb.yaml:24 
<10.95.7.5> ESTABLISH LOCAL CONNECTION FOR USER: jnaughton 
<10.95.7.5> EXEC /bin/sh -c 'echo ~jnaughton && sleep 0' 
<10.95.7.5> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo 
/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379 `" 
&& echo ansible-tmp-1543333736.61-164598744816379="` echo 
/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379 `" ) 
&& sleep 0' 
Using module file 
/home/jnaughton/.ansible/roles/Juniper.Junos/library/juniper_junos_config.py 

<10.95.7.5> PUT 
/home/jnaughton/.ansible/tmp/ansible-local-229118drPfu/tmpjeSXDq TO 
/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py
 

<10.95.7.5> EXEC /bin/sh -c 'chmod u+x 
/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/ 
/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py
 
&& sleep 0' 
<10.95.7.5> EXEC /bin/sh -c '/usr/bin/python 
/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py
 
&& sleep 0' 
<10.95.7.5> EXEC /bin/sh -c 'rm -f -r 
/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/ > 
/dev/null 2>&1 && sleep 0' 
The full traceback is: 
Traceback (most recent call last): 
File 
"/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py",
 
line 113, in <module> 
_ansiballz_main() 
File 
"/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py",
 
line 105, in _ansiballz_main 
invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS) 
File 
"/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py",
 
line 48, in invoke_module 
imp.load_module('__main__', mod, module, MOD_DESC) 
File "/tmp/ansible_juniper_junos_config_payload_rUnJEK/__main__.py", line 
741, in <module> 
File 
"/tmp/ansible_juniper_junos_config_payload_rUnJEK/ansible_juniper_junos_config_payload.zip/ansible/module_utils/juniper_j
 
nos_common.py", line 40, in <module> 
ImportError: No module named plugins.action.normal 
fatal: [10.95.7.5]: FAILED! => { 
"changed": false, 
"module_stderr": "Traceback (most recent call last):\n File 
\"/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py\",
 
line 113, in <module>\n _ansiballz_main()\n File 
\"/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py\",
 
line 105, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, 
ANSIBALLZ_PARAMS)\n File 
\"/home/jnaughton/.ansible/tmp/ansible-tmp-1543333736.61-164598744816379/AnsiballZ_juniper_junos_config.py\",
 
line 48, in invoke_module\n imp.load_module('__main__', mod, module, 
MOD_DESC)\n File 
\"/tmp/ansible_juniper_junos_config_payload_rUnJEK/__main__.py\", line 741, 
in <module>\n File 
\"/tmp/ansible_juniper_junos_config_payload_rUnJEK/ansible_juniper_junos_config_payload.zip/ansible/module_utils/juniper_junos_comm
 
on.py\", line 40, in <module>\nImportError: No module named 
plugins.action.normal\n", 
"module_stdout": "", 
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", 
"rc": 1 
} 

PLAY RECAP 
*****************************************************************************************************************
 

10.95.7.5 : ok=0 changed=0 unreachable=0 failed=1 


The Juniper.Junos role is installed: 

p-mon01{jnaughton}~/network-ansible/ansible [1039] $ ansible-galaxy list 
- Juniper.Junos, 2.1.0 
p-mon01{jnaughton}~/network-ansible/ansible [1040] $ ansible-galaxy 
Juniper.Junos info 

Role: Juniper.Junos 
description: Network build automation of Junos devices. 
active: True 
commit: 019573cc435cd7c8c6eb54cce286cce1209d7b91 
commit_message: Merge pull request #372 from rsmekala/master 

Prepare the 2.1.0 release 
commit_url: 
https://github.com/Juniper/ansible-junos-stdlib/commit/019573cc435cd7c8c6eb54cce286cce1209d7b91
 

company: Juniper Networks, Inc. 
created: 2016-02-26T11:54:40.759806Z 
dependencies: [] 
download_count: 61453 
forks_count: 117 
galaxy_info: 
author: Juniper 
categories: ['networking'] 
company: Juniper Networks, Inc. 
galaxy_tags: ['networking', 'junos', 'juniper'] 
license: Apache 2.0 
min_ansible_version: 2.1 
platforms: [{'name': 'junos', 'versions': ['all']}] 
github_branch: master 
github_repo: ansible-junos-stdlib 
github_user: Juniper 
id: 8138 
imported: 2018-06-01T05:42:42.847519-04:00 
install_date: Mon Nov 19 21:49:07 2018 
intalled_version: 2.1.0 
is_valid: True 
issue_tracker_url: https://github.com/Juniper/ansible-junos-stdlib/issues 
license: Apache 2.0 
min_ansible_version: 2.1 
modified: 2018-06-30T05:11:19.035846Z 
open_issues_count: 26 
path: [u'/home/jnaughton/.ansible/roles'] 
role_type: ANS 
stargazers_count: 197 
travis_status_url: 


Here is the  Ansible config file
p-mon01{jnaughton}~/network-ansible/ansible [1022] $ grep ^[^#] ansible.cfg 
[defaults] 
inventory = hosts 
library = ./modules 
forks = 50 
ansible_python_interpreter = /usr/local/bin/python   <-- this looks correct
gathering = smart 
roles_path = /home/jnaughton/.ansible/roles 
host_key_checking = False 
fact_caching = jsonfile 
fact_caching_timeout = 86400 
fact_caching_connection = /tmp 
retry_files_enabled = False 
[privilege_escalation] 
[paramiko_connection] 
[ssh_connection] 
[accelerate] 
[selinux] 
[colors] 
highlight = white 
verbose = blue 
warn = bright purple 
error = red 
debug = dark gray 
deprecate = purple 
skip = cyan 
unreachable = red 
ok = green 
changed = yellow 
diff_add = green 
diff_remove = red 
diff_lines = cyan 


The Python version looks correct.  
p-mon01{jnaughton}~ [1005] $ which python 
/usr/local/bin/python 
p-mon01{jnaughton}~ [1006] $ python 
Python 2.7.14 (default, Oct 19 2018, 14:48:27) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import jnpr.junos 
>>> jnpr.junos.__version__ 
'2.2.0' 
>>> quit() 


The playbook
p-mon01{jnaughton}~/network-ansible/ansible/playbooks [1017] $ cat 
lab-push.pb.yaml 
--- 
- name: Load and generate a configuration and push to a device running 
Junos OS 
gather_facts: no 
connection: local 
hosts: LAB 
roles: 
- Juniper.Junos 
vars_prompt: 
- name: netconf_user 
prompt: Username 
private: no 
- name: netconf_password 
prompt: Password 
private: yes 
gather_facts: no 
vars: 
credentials: 
host: "{{ inventory_hostname }}" 
port: 830 
username: "{{ netconf_user }}" 
password: "{{ netconf_password }}" 

tasks: 
- name: load configure file into device 
juniper_junos_config: 
provider: "{{ credentials }}" 
src: "/home/jnaughton/network-ansible/ansible/lab.set" 
comment: Updated by Ansible 

# - name: load configure file into device 
# junos_install_config: 
# host={{ inventory_hostname }} 
# file=/home/jnaughton/network-ansible/ansible/{{ inventory_hostname }}.set


And the roles directory look correct 
p-mon01{jnaughton}~/network-ansible/ansible [1023] $ ls 
/home/jnaughton/.ansible/roles 
Juniper.Junos 
#####################
p-mon01{jnaughton}~/.ansible/roles/Juniper.Junos/action_plugins [1039] $ ls 
-la 
total 48 
drwxrwxr-x 2 jnaughton jnaughton 4096 Nov 27 10:24 . 
drwxrwxr-x 10 jnaughton jnaughton 4096 Nov 19 16:49 .. 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_command.py 
-> juniper_junos_common_action.py 
-rwxrwxr-x 1 jnaughton jnaughton 2308 Jun 1 05:17 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_config.py -> 
juniper_junos_common_action.py 
-rw-rw-r-- 1 jnaughton jnaughton 657 Nov 27 10:24 juniper_junos_config.pyc 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_facts.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_jsnapy.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_ping.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_pmtud.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_rpc.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_software.py 
-> juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 
juniper_junos_srx_cluster.py -> juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_system.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 juniper_junos_table.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_cli.py -> 
juniper_junos_common_action.py 
-rwxrwxr-x 1 jnaughton jnaughton 3124 Jun 1 05:17 _junos_commit.py 
-rwxrwxr-x 1 jnaughton jnaughton 3039 Jun 1 05:17 _junos_get_config.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_get_facts.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_get_table.py -> 
juniper_junos_common_action.py 
-rwxrwxr-x 1 jnaughton jnaughton 4138 Jun 1 05:17 _junos_install_config.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_install_os.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_jsnapy.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_ping.py -> 
juniper_junos_common_action.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_pmtud.py -> 
juniper_junos_common_action.py 
-rwxrwxr-x 1 jnaughton jnaughton 3206 Jun 1 05:17 _junos_rollback.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_rpc.py -> 
juniper_junos_common_action.py 
-rwxrwxr-x 1 jnaughton jnaughton 4253 Jun 1 05:17 _junos_shutdown.py 
lrwxrwxrwx 1 jnaughton jnaughton 30 Nov 19 16:49 _junos_srx_cluster.py -> 
juniper_junos_common_action.py 
-rwxrwxr-x 1 jnaughton jnaughton 3311 Jun 1 05:17 _junos_zeroize.py

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/51164413-bdff-40b1-8fea-2f607cc1b3bb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to