Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Uso de Ansible para ejecutar comandos y RPC en dispositivos que se ejecutan en Junos OS

RESUMEN Utilice los módulos Juniper Networks Ansible para ejecutar comandos de modo operativo y RPC en dispositivos que ejecutan Junos OS.

Juniper Networks admite el uso de Ansible para administrar dispositivos que ejecutan Junos OS y proporciona módulos de Ansible que le permiten ejecutar comandos de modo operativo y llamadas de procedimiento remoto (RPC) en los dispositivos. En la tabla 1 se resumen los módulos.

RPC
Tabla 1: Comandos y módulos

Conjunto de contenidos

Nombre del módulo

juniper.device Colección

command

rpc

Juniper.junos Papel

juniper_junos_command

juniper_junos_rpc

En las siguientes secciones se explica cómo usar los módulos, analizar la respuesta del módulo, especificar el formato de salida y guardar el resultado en un archivo.

Nota:

Para extraer datos de destino con mayor facilidad del resultado operativo, también puede utilizar el módulo o con tablas operativas Junos PyEZ personalizadas o table juniper_junos_table predefinidas. Para obtener más información, consulte Uso de Ansible con tablas de Junos PyEZpara recuperar información operativa de dispositivos que se ejecutan en Junos OS .

Cómo ejecutar comandos con los módulos Juniper Networks módulos

Los command juniper_junos_command módulos y le permiten ejecutar comandos de modo operativo en dispositivos que ejecutan Junos OS. Los módulos requieren un argumento, que es una lista de uno o más comandos Junos OS modo operativo commands para ejecutarse en el dispositivo.

Nota:

A partir Juniper.junos de la versión 2.0.0, el juniper_junos_command módulo sustituye la funcionalidad del junos_cli módulo.

El siguiente manual ejecuta dos comandos de modo operativo en cada dispositivo del grupo de inventario y muestra la respuesta del módulo en la salida estándar. En este ejemplo, el command módulo se autentica con el dispositivo mediante claves SSH en la ubicación predeterminada.

Para obtener más información acerca de la respuesta y el formato de salida del módulo, consulte Descripción de la respuesta del módulo y Cómo especificar el formato para el comando o salida RPC.

Cómo ejecutar RPC con los módulos Juniper Networks módulos

La API XML de Junos es una representación XML de instrucciones Junos OS configuración y comandos de modo operativo. Define un equivalente XML para todas las instrucciones de la jerarquía de configuración de Junos OS y muchos de los comandos de modo operativo que se emiten en el Junos OS CLI. Cada comando de modo operativo con un homólogo XML de Junos se asigna a un elemento de etiqueta de solicitud y, si fuera necesario, a un elemento de etiqueta de respuesta. Las etiquetas de solicitud se utilizan en llamadas de procedimiento remoto (RPC) dentro de sesiones de protocolo XML NETCONF o Junos para solicitar información desde un dispositivo que ejecuta Junos OS. El servidor devuelve la respuesta mediante elementos XML de Junos encerrados dentro del elemento de etiqueta de respuesta.

Los rpc juniper_junos_rpc módulos y le permiten ejecutar RFC en dispositivos que ejecutan Junos OS. Los módulos requieren un argumento, que es una lista de una o más Junos OS rpcs RPC que se deben ejecutar en el dispositivo.

Nota:

A partir Juniper.junos de la versión 2.0.0, el juniper_junos_rpc módulo sustituye la funcionalidad del junos_rpc módulo.

El siguiente manual ejecuta la RPC, que es equivalente al comando de modo operativo, en cada dispositivo del grupo de inventario y muestra la respuesta del módulo en la get-interface-information show interfaces salida estándar. En este ejemplo, el rpc módulo se autentica con el dispositivo mediante claves SSH en la ubicación predeterminada.

Nota:

Para obtener más información acerca de la asignación CLI comandos a etiquetas de solicitud RPC, consulte el Explorador de API XML de Junos para etiquetas operativas.

Para obtener más información acerca de la respuesta y el formato de salida del módulo, consulte Descripción de la respuesta del módulo y Cómo especificar el formato para el comando o salida RPC.

Los rpc juniper_junos_rpc módulos y admiten la opción, la cual permite especificar argumentos y valores de palabras clave para las kwargs RPC. El valor de puede ser un único diccionario de palabras clave y valores, o puede ser una lista de los ventríarios que suministran argumentos para varias kwargs RPC. Debe haber una relación individual entre los elementos de la lista y las kwargs RPC de la rpcs lista. Si ejecuta varias RPC y una RPC no requiere ningún argumento, establezca el elemento de lista correspondiente igual a un diccionario {} vacío. Si un argumento RPC individual no requiere un valor, establezca su valor en True .

Nota:

Debe usar guiones bajos en argumentos RPC en lugar de guiones, lo que puede ocasionar excepciones o errores en determinadas circunstancias.

El siguiente manual ejecuta las RPC especificadas en cada dispositivo del grupo de inventario y muestra la respuesta del módulo en la salida estándar. La RPC solicita una salida a nivel tens para la interfaz lo0.0 y RPC solicita información para la get-interface-information get-lldp-interface-neighbors interfaz ge-0/0/0. La get-software-information RPC usa un diccionario vacío para ejecutar la RPC sin argumentos adicionales.

Descripción de la respuesta del módulo

El Juniper Networks y los módulos RPC almacenan la respuesta RPC desde el dispositivo dentro de varias claves diferentes en la respuesta del módulo. Los datos de cada clave se estructuran de la siguiente manera:

  • stdout: la respuesta RPC es una sola cadena de varias líneas.

  • stdout_lines: la respuesta RPC es una lista de cadenas de línea única.

  • parsed_output: la respuesta RPC se analiza en una estructura de datos de notación de objetos JavaScript (JSON). Esta clave solo se devuelve cuando el formato de los datos es XML o XML.

Si el módulo ejecuta un solo comando o RPC, la respuesta del módulo coloca las claves regresadas en el nivel superior. Si el módulo ejecuta varios comandos o RPC, la respuesta del módulo en su lugar incluye una clave, que es una lista de results ventríos. Cada elemento de la lista corresponde a un único comando o RPC e incluye todas las claves que se devolverían para ese comando o RPC.

En algunos casos, el comando o la salida RPC se pueden ampliar y es posible que sea necesario suprimir el resultado en la respuesta del módulo. Para omitir las claves de salida en la respuesta del módulo, incluya return_output: false en la lista de argumentos de ese módulo.

Cómo especificar el formato para el comando o la salida RPC

El Juniper Networks y los módulos RPC almacenan la respuesta RPC desde el dispositivo dentro de varias claves diferentes en la respuesta del módulo: stdout stdout_lines , y parsed_output . La clave, que solo está presente cuando el comando o el formato de salida RPC es XML o XML, contiene datos que se parsed_output analizan en una estructura de datos JSON.

Las stdout claves y contienen datos en el formato predeterminado definido para el stdout_lines módulo. De forma predeterminada, los módulos y devuelven la salida del comando en formato de texto y los módulos y devuelven la salida command juniper_junos_command RPC en formato rpc juniper_junos_rpc XML. Para especificar un formato de salida diferente, incluya el argumento y formats establezca el valor igual al formato deseado. Para solicitar formato de texto, elementos XML de Junos o formato JSON, utilice 'text' 'xml' , o 'json' respectivamente. El formato solicitado debe ser compatible con el dispositivo en el que se ejecuta el comando o RPC.

El formats parámetro toma una cadena o una lista de cadenas. Cuando ejecuta varios comandos o RPC y solo especifica un único formato, el formato de salida es el mismo para todos los comandos y RPC ejecutados. Para especificar un formato diferente para el resultado de cada comando o RPC, establezca el argumento formats en una lista de los formatos deseados. La lista debe especificar el mismo número de formatos que si hay comandos o RPC.

El siguiente manual ejecuta dos RPC en cada dispositivo del grupo de inventario y solicita formato de texto para el resultado de todas las RPC ejecutadas:

Cuando se ejecuta el manual, las claves y de la respuesta del módulo stdout contienen la respuesta RPC en formato de stdout_lines texto.

El siguiente manual ejecuta dos RPC en cada dispositivo del grupo de inventario y solicita el resultado para la primera RPC en formato de texto y la salida para la segunda RPC en formato JSON:

Cómo guardar el comando o la salida RPC en un archivo

Cuando usa los módulos de Juniper Networks para ejecutar un comando o RPC en un dispositivo, puede guardar los datos que se devuelvan en un archivo en el nodo de control local de Ansible incluyendo los argumentos o dest dest_dir del módulo. Mientras que la opción guarda el resultado para cada comando o RPC en archivos independientes para un dispositivo, la opción guarda el resultado para todos los comandos y RPC en el mismo archivo para dest_dir dest un dispositivo. Si ya existe un archivo de salida con el nombre de destino, el módulo sobrescribe el archivo.

Para especificar el directorio en el nodo de control local de Ansible donde se guardan los datos recuperados, incluya el argumento y defina la ruta al dest_dir directorio de destino. El módulo almacena el resultado para cada comando o RPC ejecutado en un dispositivo en un archivo separado llamado hostname _ name . format donde:

  • hostname: nombre de host del dispositivo en el que se ejecuta el comando o RPC.

  • name: nombre del comando o RPC ejecutado en el dispositivo administrado. El módulo sustituye los espacios del nombre del comando por caracteres de puntuación inferior ( _ ).

  • format: formato de la salida, que puede ser json, textoo xml.

El siguiente manual ejecuta dos RPC en cada dispositivo del grupo de inventario y guarda el resultado para cada RPC para cada dispositivo en un archivo independiente en el directorio del manual en el nodo de control de Ansible:

Los archivos de salida resultantes para dc1a.example.net host son:

  • dc1a.example.net_get-software-information.xml

  • dc1a.example.net_get-system-uptime-information.xml

De forma similar, el siguiente manual ejecuta los comandos equivalentes en cada dispositivo del grupo de inventario y guarda el resultado para cada comando para cada dispositivo en un archivo independiente en el directorio del manual en el nodo de control de Ansible:

Los archivos de salida resultantes para dc1a.example.net host son:

  • dc1a.example.net_show_version.text

  • dc1a.example.net_show_system_uptime.text

Para especificar la ruta y filename en el que se guarda todo el comando o la salida RPC de un nodo de destino en el nodo de control local de Ansible, incluya el argumento y defina el filename o la ruta completa del dest archivo. Si incluye el dest argumento, pero omite el directorio, los archivos se guardarán en el directorio del manual. Si ejecuta comandos o RPC en varios dispositivos, el argumento debe incluir una variable como para diferenciar el dest {{ inventory_hostname }} filename para cada dispositivo. Si no diferencia los filenames, el archivo de salida de cada dispositivo sobrescribirá el archivo de salida de los otros dispositivos.

El siguiente manual ejecuta LASR en cada dispositivo del grupo de inventario. El resultado de todas las RPC se almacena en un archivo independiente para cada dispositivo y el archivo se coloca en el directorio del manual en el nodo de control de Ansible. Cada archivo se identifica de forma exclusiva mediante el nombre de host del dispositivo.

Por ejemplo, el archivo de salida resultante para host dc1a.example.net es dc1a.example.net-system-information.xml y contiene el resultado para todas las RPC ejecutadas en el dispositivo.

Si guarda los datos en un archivo y no desea duplicar el comando o la salida RPC en la respuesta del módulo, puede incluirlo opcionalmente en la lista de argumentos del return_output: false módulo. Establecer return_output para hacer que el módulo false omita las claves de salida en la respuesta del módulo. Esto podría ser necesario si los dispositivos devuelven una cantidad significativa de datos.

Tabla del historial de versiones
Lanzamiento
Descripción
2.0.0
A partir de Juniper.junos versión 2.0.0, el módulo juniper_junos_command reemplaza la funcionalidad del junos_cli módulo.
2.0.0
A partir de Juniper.junos versión 2.0.0, el módulo juniper_junos_rpc reemplaza la funcionalidad del junos_rpc módulo.