Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ejemplo: uso de Junos PyEZ para cargar datos de configuración desde un archivo

La biblioteca Junos PyEZ le permite realizar tareas operativas y de configuración en dispositivos Junos. En este ejemplo se utiliza la utilidad Junos PyEZ jnpr.junos.utils.config.Config para cargar datos de configuración desde un archivo local del servidor de administración de configuración en un dispositivo Junos.

Requisitos

En este ejemplo se utilizan los siguientes componentes de hardware y software:

  • Servidor de administración de configuración que ejecuta Python 3.5 o posterior y Junos PyEZ versión 2.0 o posterior

  • Dispositivo Junos con NETCONF habilitado y una cuenta de usuario configurada con los permisos adecuados

  • Par de claves pública y privada SSH configurado para el usuario adecuado en el servidor y el dispositivo Junos

Visión general

En este ejemplo se presenta una aplicación Python que utiliza la utilidad Junos PyEZ Config para habilitar un nuevo script op en la configuración del dispositivo especificado. El archivo junos-config-add-op-script.conf, que se encuentra en el servidor de administración de configuración, contiene los datos de configuración relevantes con formato de texto ASCII.

La aplicación Python importa la Device clase, que controla la conexión con el dispositivo Junos; la Config clase, que se utiliza para realizar cambios de configuración no estructurados en el dispositivo de destino; y las excepciones necesarias desde el jnpr.junos.exception módulo, que contiene las excepciones encontradas al administrar dispositivos Junos. En este ejemplo se enlaza la Config instancia a la Device instancia en lugar de crear una variable independiente para la instancia de la Config clase.

Después de crear la Device instancia para el dispositivo de destino, el open() método establece una conexión y una sesión NETCONF con el dispositivo. A Config continuación, los métodos de utilidad bloquean la configuración candidata, cargan los cambios de configuración en la configuración candidata como una load merge operación, confirman la configuración candidata y, a continuación, la desbloquean.

El load() parámetro method path se establece en la ruta de acceso del archivo de configuración. Dado que la extensión del archivo de configuración indica el formato de los datos de configuración, el format parámetro se omite en la lista de argumentos. La configuración merge=True indica que el dispositivo debe realizar una load merge operación.

Una vez completadas las operaciones de configuración, la aplicación llama close() al método para terminar la sesión y la conexión de NETCONF. La aplicación incluye código para controlar excepciones, como LockError los errores que se producen al bloquear la configuración y CommitError los errores que se producen durante la operación de confirmación. La aplicación también incluye código para controlar cualquier excepción adicional que pueda producirse.

Configuración

Crear el archivo de datos de configuración

Procedimiento paso a paso

Para crear el archivo de datos de configuración utilizado por la aplicación Junos PyEZ:

  1. Cree un nuevo archivo con la extensión adecuada según el formato de los datos de configuración, que en este ejemplo es texto ASCII.

  2. Incluya los cambios de configuración deseados en el archivo, por ejemplo:

Crear la aplicación Junos PyEZ

Procedimiento paso a paso

Para crear una aplicación Python que utilice Junos PyEZ para realizar cambios de configuración en un dispositivo Junos:

  1. Importe los módulos, clases y objetos necesarios.

  2. Incluya las variables necesarias, que en este ejemplo incluyen el nombre de host del dispositivo administrado y la ruta al archivo que contiene los datos de configuración.

  3. Cree una definición de función y una llamada a main() una función, y coloque las instrucciones restantes dentro de la definición.

  4. Cree una instancia de la Device clase y proporcione el nombre de host y los parámetros necesarios para esa conexión específica.

    A continuación, abra una conexión y establezca una sesión de NETCONF con el dispositivo.

  5. Enlazar la Config instancia a la Device instancia.

  6. Bloquee la configuración.

  7. Cargue los cambios de configuración y controle los errores.

  8. Confirme la configuración.

  9. Desbloquee la configuración.

  10. Finalice la sesión de NETCONF y cierre la conexión con el dispositivo.

Resultados

En el servidor de administración de configuración, revise la aplicación completada. Si la aplicación no muestra el código deseado, repita las instrucciones de este ejemplo para corregir la aplicación.

Ejecute la aplicación Junos PyEZ

Ejecutar la aplicación

  • En el servidor de administración de configuración, ejecute la aplicación.

Verificación

Verificar la configuración

Propósito

Compruebe que la configuración se actualizó correctamente en el dispositivo Junos.

Acción

Inicie sesión en el dispositivo Junos y vea la configuración, el historial de confirmaciones y los archivos de registro para verificar la configuración y la confirmación. Por ejemplo:

Significado

La configuración y el contenido del archivo de registro indican que las instrucciones de configuración correctas se configuraron y confirmaron correctamente en el dispositivo.

Solución de problemas

Solucionar errores de tiempo de espera

Problema

El código de Junos PyEZ genera un mensaje RpcTimeoutError o un mensaje TimeoutExpiredError y no actualiza la configuración del dispositivo.

El tiempo predeterminado para que se agote el tiempo de espera de una RPC de NETCONF es de 30 segundos. Los cambios de configuración grandes pueden superar este valor, lo que hace que se agote el tiempo de espera de la operación antes de que se pueda cargar y confirmar la configuración.

Solución

Para adaptarse a los cambios de configuración que pueden requerir un tiempo de confirmación superior al intervalo de tiempo de espera predeterminado, establezca el intervalo de tiempo de espera en un valor adecuado y vuelva a ejecutar el código. Para configurar el intervalo, establezca la Device timeout propiedad en un valor adecuado o incluya el timeout=seconds argumento cuando llame commit() al método para confirmar los datos de configuración en un dispositivo. Por ejemplo:

Solucionar errores de bloqueo de configuración

Problema

El código PyEZ de Junos genera un mensaje LockError que indica que no se puede bloquear la configuración. Por ejemplo:

Puede producirse un error de bloqueo de configuración por los siguientes motivos:

  • Otro usuario tiene un bloqueo exclusivo en la configuración.

  • La base de datos de configuración compartida tiene cambios no confirmados.

  • El usuario que ejecuta el código de Junos PyEZ no tiene permisos para configurar el dispositivo.

Solución

Si otro usuario tiene un bloqueo exclusivo en la configuración o ha modificado la configuración, espere hasta que se libere el bloqueo o se confirmen los cambios, y vuelva a ejecutar el código. Si la causa del problema es que el usuario no tiene permisos para configurar el dispositivo, ejecute la aplicación con un usuario que tenga los permisos necesarios o, si corresponde, configure el dispositivo Junos para otorgar al usuario actual los permisos necesarios para realizar los cambios.

Solucionar errores de cambio de configuración

Problema

El código de Junos PyEZ genera un mensaje ConfigLoadError que indica que la configuración no se puede modificar debido a un problema de permisos.

Este mensaje de error puede generarse cuando el usuario que ejecuta el código de Junos PyEZ tiene permiso para modificar la configuración, pero no tiene permiso para modificar la parte deseada de la configuración.

Solución

Ejecute la aplicación con un usuario que tenga los permisos necesarios o, si corresponde, configure el dispositivo Junos para otorgar al usuario actual los permisos necesarios para realizar los cambios.