junos_command module not returning output

1.8k Views Asked by At

I have an Ansible script where i am simply using junos_command module to get users list from Juniper switch, below is the snippet of my code. I keep getting the RuntimeWarning whenever i try to run this. Moreover I have been successfully able to run commands like 'show version' using the below code itself. Please help

Script:

name: / GET USERS / Get list of all the current users on switch

action: junos_command

args: { commands: 'show configuration system login',
          provider: "{{ netconf }}" }

register: curr_users_on_switch

Error:

TASK [/ GET USERS / Get list of all the current users on switch] ***************
fatal: [rlab-er1]: FAILED! => {"changed": false, "failed": true, "module_stderr": "/home/mbhadoria/.local/lib/python2.7/site-packages/jnpr/junos/device.py:429: RuntimeWarning: CLI command is for debug use only!
\n  warnings.warn(\"CLI command is for debug use only!\", RuntimeWarning)\nTraceback (most recent call last):
\n  File \"/tmp/ansible_lVOmPp/ansible_module_junos_command.py\", line 261, in <module>
\n    main()
\n  File \"/tmp/ansible_lVOmPp/ansible_module_junos_command.py\", line 233, in main
\n    xmlout.append(xml_to_string(response[index]))
\n  File \"/tmp/ansible_lVOmPp/ansible_modlib.zip/ansible/module_utils/junos.py\", line 79, in xml_to_string\n  File \"src/lxml/lxml.etree.pyx\", line 3350, in lxml.etree.tostring (src/lxml/lxml.etree.c:84534)\nTypeError: Type 'str' cannot be serialized.
\n", "module_stdout": "", "msg": "MODULE FAILURE", "parsed": false}
1

There are 1 best solutions below

10
Nitin Kr On

junos_command only support operation junos commands. What you are trying to run is configurational command. Hence you see "show version" which is operational command working but not "show configuration system login".

For such configuration data you can should use rpc option (get-configuration) with junos_command.

junos_command:
rpcs:
  - "get_configuration

You can also use junos_get_config.

http://junos-ansible-modules.readthedocs.io/en/latest/junos_get_config.html

or junos_rpc

https://github.com/Juniper/ansible-junos-stdlib/blob/master/library/junos_rpc

ex:

- name: Junos OS version
  hosts: all
  connection: local
  gather_facts: no
  tasks:
    - name: Get rpc run
      junos_rpc:
        host={{ inventory_hostname }}
        user=xxxx
        passwd=xxx
        rpc=get-config
        dest=get_config.conf
        filter_xml="<configuration><system><login/></system></configuration>"
      register: junos

or

  tasks:
   - name: Get rpc run
     junos_get_config:
       host: "{{ inventory_hostname }}"
       user: xxxx
       passwd: xxxx
       logfile: get_config.log
       dest: "{{ inventory_hostname }}.xml"
       format: xml
       filter: "system/login"

TASK [Get rpc run] *************************************************************
......

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

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