Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Usar Junos PyEZ para instalar software en dispositivos Junos

La utilidad Junos PyEZ jnpr.junos.utils.sw.SW le permite instalar o actualizar la imagen de software en dispositivos Junos. El install() método instala el paquete de software especificado.

En este tema se describen los escenarios de implementación admitidos, cómo especificar la ubicación de la imagen de software, y el proceso y las opciones generales de instalación cuando se utiliza Junos PyEZ para actualizar un dispositivo. También se explica cómo usar Junos PyEZ para realizar escenarios de actualización más especializados, como una actualización de host de máquina virtual, una actualización de software unificada en servicio (ISSU unificada) o una actualización de software sin interrupciones (NSSU) en dispositivos que admiten estas características.

Escenarios de implementación admitidos

La utilidad Junos PyEZ jnpr.junos.utils.sw.SW le permite instalar o actualizar la imagen del software en un dispositivo Junos individual o en los miembros de un Virtual Chassis mixto o no mezclado. Se admiten los siguientes escenarios:

  • Dispositivos independientes con un solo motor de enrutamiento

  • Dispositivos independientes equipados con motores de enrutamiento duales

  • Chasis virtual de la serie EX en configuraciones de modo mixto y no mixto

  • Chasis virtual de la serie QFX en configuraciones de modo mixto y no mixto

  • Chasis virtual mixto de las series EX y QFX

  • Actualizaciones de host de VM en motores de enrutamiento con soporte de host de VM

  • Configuraciones de implementación que tienen algún tipo de características en servicio habilitadas, como ISSU o NSSU unificadas

Nota:

A partir de Junos PyEZ versión 2.6.8, puede utilizar el argumento para instalar un paquete en un miembro específico de un chasis virtual de la member_id serie EX.

Nota:

La jnpr.junos.utils.sw.SW utilidad no admite la actualización de dispositivos en un Virtual Chassis de la serie MX, un clúster de chasis de la serie SRX o una Virtual Chassis Fabric (VCF).

Cómo especificar la ubicación de la imagen de software

Cuando utilice Junos PyEZ para instalar software en dispositivos Junos, puede descargar la imagen de software en el servidor de administración de configuración y el install() método, de forma predeterminada, la copia en el dispositivo de destino antes de realizar la instalación. También puede indicar install() al método que instale una imagen que ya resida en el dispositivo de destino o que resida en una dirección URL accesible desde el dispositivo de destino.

En la tabla 1 se describen los parámetros de install() método que debe establecer en función de la ubicación del paquete de software. Siempre debe incluir el package parámetro o pkg_set en la invocación del install() método.

Tabla 1: Configuración de parámetros del método install() para la ubicación del paquete de software

Ubicación del paquete de software

no_copy Parámetro

package o pkg_set parámetro

remote_path Parámetro

Servidor de administración de configuración

Omitir o establecer en False

Ruta del archivo, incluido el nombre de archivo del paquete o paquetes de software en el servidor local que ejecuta Junos PyEZ.

(Opcional) Ruta al directorio del dispositivo de destino en el que se copiarán el paquete o paquetes. El valor predeterminado es /var/tmp.

Dispositivo de destino

Establecer en True

Nombre de archivo del paquete o paquetes de software.

(Opcional) Ruta al directorio del dispositivo de destino donde ya deben residir el paquete o paquetes. El valor predeterminado es /var/tmp.

URL

URL desde la perspectiva del dispositivo Junos de destino desde el que está instalado el paquete de software.

El package argumento se utiliza para instalar software en un único dispositivo Junos o en miembros de un Virtual Chassis no mixto. El package argumento es una cadena que especifica una sola imagen de software. Por ejemplo:

El pkg_set argumento se utiliza para instalar software en los miembros de un Virtual Chassis mixto. Contiene una lista o tupla de cadenas que especifican las imágenes de software necesarias, sin ningún orden en particular, para los distintos miembros del Virtual Chassis. Por ejemplo:

En el caso de los paquetes que residen en el servidor local que ejecuta Junos PyEZ, cuando se omite el no_copy argumento o se establezca en False, el servidor copia el paquete de software especificado en el dispositivo. Incluir el package argumento hace que el servidor copie el paquete en el dispositivo de destino (dispositivo individual o enrutador principal o conmutador en un Virtual Chassis no mixto) e incluir el pkg_set argumento hace que el servidor copie todos los paquetes de la lista en el enrutador principal o conmutador en un Virtual Chassis mixto. De forma predeterminada, las imágenes de software se colocan en el directorio /var/tmp a menos que el remote_path argumento especifique un directorio diferente.

Si establece el no_copy argumento en True, los paquetes de software necesarios ya deben existir en el dispositivo de destino o en el dispositivo principal de Virtual Chassis antes de que comience la instalación. Los paquetes deben residir en el directorio especificado por el remote_path argumento o, si remote_path se omite, en el directorio /var/tmp predeterminado.

Junos PyEZ también admite la instalación de imágenes de software desde una URL. En este caso, el package valor o pkg_set debe ser una URL desde la perspectiva del dispositivo Junos de destino. El paquete se copia y se instala desde la dirección URL especificada, y se omiten los no-copy argumentos y remote_path . Para obtener información acerca de cómo especificar el formato de la URL, consulte Formato para especificar nombres de archivo y URL en comandos de la CLI de Junos OS.

Descripción general del proceso de instalación

Para instalar una imagen de software en un dispositivo Junos, una aplicación Junos PyEZ se conecta al dispositivo individual o al dispositivo principal en un Virtual Chassis, crea una instancia de la SW utilidad y llama install() al método con los argumentos obligatorios u opcionales. Por ejemplo:

Para obtener la lista actual de parámetros de install() método, consulte install().

Si el paquete de software se encuentra en el servidor de administración de configuración y el no_copy parámetro se omite o se establece en False, el install() método realiza las siguientes operaciones antes de instalar el software:

  • Calcula la suma de comprobación del paquete o paquetes de software local mediante el algoritmo especificado en el checksum_algorithm argumento, si la suma de comprobación no se proporciona ya a través del checksum argumento. Los valores aceptables checksum_algorithm son "md5", "sha1", y "sha256". El valor predeterminado es "md5".

  • Realiza una limpieza de almacenamiento en el dispositivo de destino para crear espacio para el paquete de software, a menos que cleanfs esté establecido en False.

  • SCP o FTP copian el paquete en el remote_path directorio, o si remote_path no se especifica, en el directorio /var/tmp , si un archivo con el mismo nombre y suma de comprobación aún no reside en la ubicación de destino en el dispositivo.

  • Calcula la suma de comprobación del archivo remoto y la compara con el valor del archivo local.

Después de que el paquete de software está en el dispositivo de destino, ya sea descargado allí inicialmente, copiado desde el servidor de administración de configuración por el install() método o copiado desde una dirección URL por el dispositivo de destino, el install() método realiza las siguientes operaciones:

  • Valida la configuración con respecto al nuevo paquete si el validate parámetro se establece en True

  • Instala el paquete en todos los motores de enrutamiento, a menos que all_re se establezca en False

Nota:

A partir de la versión 2.1.5, Junos PyEZ actualiza de forma predeterminada todos los motores de enrutamiento en dispositivos individuales y miembros en un Virtual Chassis. En versiones anteriores, o si all_re=False, Junos PyEZ solo actualiza el motor de enrutamiento al que está conectado.

A partir de Junos PyEZ versión 2.5.0, el install() método devuelve una tupla que contiene el estado de la instalación y una cadena de mensaje. En versiones anteriores, el método devuelve sólo el estado de la instalación. El estado es True si la instalación se realiza correctamente y False de lo contrario. La cadena de mensaje proporciona información adicional sobre el éxito o el error de la instalación y puede incluir mensajes informativos o de error generados por Junos PyEZ o el dispositivo. Por ejemplo:

El install() método no reinicia automáticamente el dispositivo. Para reiniciar o apagar el dispositivo una vez completada la instalación, llame reboot() al método o shutdown() , respectivamente.

El siguiente vídeo presenta una breve sesión de Python que muestra cómo usar Junos PyEZ para instalar Junos OS.

Cómo especificar tiempos de espera de instalación y suma de comprobación

Junos PyEZ realiza operaciones a través de una sesión de NETCONF. El tiempo predeterminado para que se agote el tiempo de espera de una RPC de NETCONF es de 30 segundos. Durante el proceso de instalación, Junos PyEZ aumenta el intervalo de tiempo de espera de RPC a 1800 segundos (30 minutos) al copiar e instalar el paquete en el dispositivo y a 300 segundos (5 minutos) al calcular la suma de comprobación. En algunos casos, el proceso de instalación o el cálculo de la suma de comprobación pueden superar estos intervalos de tiempo.

Para aumentar el valor del tiempo de espera para el proceso de instalación y el cálculo de la suma de comprobación, incluya los timeout parámetros y checksum_timeout , respectivamente, en la llamada al install() método y establézcalos en los valores adecuados. Por ejemplo:

Cómo registrar el proceso de instalación

El proceso de instalación de Junos PyEZ permite mostrar o registrar el progreso de la instalación incluyendo el progress argumento en la llamada al install() método. El argumento se establece en una función de devolución de llamada, que debe tener definido un prototipo de función que incluya los argumentos de cadena de Device instancia e informe. También puede configurarlo progress=True para usarlo sw.progress() para informes básicos.

En el ejemplo siguiente se imprime el progreso de la instalación mediante la myprogress función.

El resultado del progreso está en el formato definido por el usuario.

Cómo realizar una actualización de host de máquina virtual

En los dispositivos que tienen motores de enrutamiento compatibles con host de máquina virtual, Junos OS se ejecuta como una máquina virtual (VM) a través de un host basado en Linux (host VM). Una actualización de host de máquina virtual requiere un paquete de instalación de host de máquina virtual (junos-vmhost-install-x.tgz) y actualiza el sistema operativo del host y Junos OS compatible. La actualización se realiza mediante el comando del request vmhost software add modo operativo, que corresponde al <request-vmhost-package-add> RPC.

A partir de Junos PyEZ versión 2.1.6, el sw.install() método admite el argumento para realizar una actualización de host de vmhost=True máquina virtual. Cuando el vmhost=True argumento está presente, el sw.install() método realiza la instalación utilizando el <request-vmhost-package-add> RPC en lugar del <request-package-add> RPC.

En el siguiente ejemplo, se actualiza y reinicia Junos OS y el sistema operativo host en un único dispositivo de motor de enrutamiento:

Para reiniciar solo el software Junos OS, llame sw.reboot() al método sin el vmhost argumento.

Cómo realizar una ISSU o NSSU unificada

Junos PyEZ proporciona soporte para realizar una actualización de software unificada en servicio (ISSU unificada) o una actualización de software sin interrupciones (NSSU) en dispositivos que admiten la función y cumplen con los requisitos necesarios. En la Tabla 2 se describe la versión de Junos PyEZ en la que se admiten por primera vez las funciones unificadas de ISSU y NSSU. Para obtener más información acerca de ISSU y NSSU unificadas, consulte la documentación del software del producto.

Tabla 2: Compatibilidad unificada de ISSU y NSSU de Junos PyEZ

Versión de Junos PyEZ

Soporte de características

2.1.0

Compatibilidad con ISSU y NSSU unificadas en dispositivos Junos con motor de enrutamiento dual.

2.1.6

Compatibilidad con ISSU unificada durante una actualización de host de máquina virtual para aquellos dispositivos compatibles con host de máquina virtual que usan el request vmhost software in-service-upgrade comando para realizar una actualización de software unificada en servicio del sistema operativo host y Junos OS.

La función ISSU unificada le permite actualizar entre dos versiones diferentes de Junos OS sin interrupciones en el plano de control y con una interrupción mínima del tráfico. Para realizar una actualización de software unificada en servicio en dispositivos compatibles con esta característica, incluya el issu=True argumento en el install() método.

En el ejemplo siguiente, el método actualiza Junos install() OS en ambos motores de enrutamiento y reinicia el nuevo motor de enrutamiento principal (anteriormente el antiguo motor de enrutamiento de reserva) como parte del proceso de instalación. Si la instalación se realiza correctamente, el reboot() método reinicia el motor de enrutamiento conectado, que es el nuevo motor de enrutamiento de reserva (anteriormente el antiguo motor de enrutamiento principal).

Para realizar una actualización unificada de software en servicio en un motor de enrutamiento con compatibilidad con host de máquina virtual que cumpla los requisitos necesarios y admita ISSU unificada, incluya los vmhost=True argumentos y issu=True en el install() método. El dispositivo se actualiza desde una versión de SO host y Junos OS a la versión solicitada mediante RPC <request-vmhost-package-in-service-upgrade> .

La función NSSU le permite actualizar el software Junos OS que se ejecuta en un conmutador o en un chasis virtual con motores de enrutamiento redundantes con una interrupción mínima del tráfico de red. Para realizar una actualización de software sin interrupciones en dispositivos compatibles con esta característica, incluya el nssu=True argumento en el install() método. Por ejemplo:

Cómo instalar software en un miembro de chasis virtual de la serie EX

Generalmente, cuando se actualiza un Virtual Chassis no mixto de la serie EX, se sigue el proceso de instalación descrito en Descripción general del proceso de instalación para actualizar todo el Virtual Chassis. Sin embargo, puede haber ocasiones en las que necesite instalar software en conmutadores miembro específicos de un chasis virtual. A partir de Junos PyEZ versión 2.6.8, puede instalar un paquete de software en conmutadores miembro individuales en un chasis virtual de la serie EX utilizando el member_id argumento. El member_id argumento es una lista de cadenas que especifican los ID de miembro en los que instalar el software.

Por ejemplo, la siguiente aplicación Junos PyEZ actualiza el software del miembro 0 y del miembro 1 del chasis virtual de la serie EX:

Ejemplo: Usar Junos PyEZ para instalar software en un dispositivo Junos

La biblioteca Junos PyEZ proporciona métodos para realizar tareas operativas y de configuración en dispositivos Junos. En este ejemplo se describe cómo usar la utilidad Junos PyEZ jnpr.junos.utils.sw.SW para instalar o actualizar la imagen de software 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.5 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 Junos PyEZ y el dispositivo Junos

Visión general

En este ejemplo se presenta una aplicación Python que utiliza la utilidad Junos PyEZ SW para actualizar Junos OS en el dispositivo especificado. En este ejemplo se supone que la imagen de software reside en el servidor local.

La aplicación importa la clase Junos PyEZ Device , que maneja la conexión con el dispositivo Junos; la SW clase, que se utiliza para realizar las operaciones de instalación del software en el dispositivo de destino; y las excepciones necesarias del jnpr.junos.exception módulo, que contiene las excepciones encontradas al administrar dispositivos Junos. La aplicación también importa los osmódulos , sys, y logging Python para verificar la existencia del paquete de software y realizar funciones básicas de registro.

La aplicación define el update_progress() método, que es utilizado por el install() método para informar sobre el progreso de la instalación. Al registrar el proceso de instalación, puede identificar más fácilmente el punto donde se producen errores. En este ejemplo, los mensajes de progreso se envían a la salida estándar y también se registran en un archivo independiente.

Antes de conectarse al dispositivo y continuar con la instalación, la aplicación primero verifica que el paquete de software existe. Si no se encuentra el archivo, la aplicación se cierra con un mensaje de error. Si el archivo existe, la aplicación crea la Device instancia para el dispositivo de destino y llama open() al método para establecer una conexión y una sesión NETCONF con el dispositivo.

La aplicación crea una instancia de la SW utilidad y utiliza el install() método para instalar la imagen del software Junos OS en el dispositivo de destino. La package variable define la ruta del servidor local a la nueva imagen de Junos OS. Dado que el no_copy valor predeterminado del parámetro es False, el proceso de instalación copia la imagen de software del servidor local al dispositivo de destino. La remote_path variable define la ruta en el dispositivo de destino en el que se copia el paquete de software. El valor predeterminado es /var/tmp. Aunque no es obligatorio, este ejemplo configura explícitamente el parámetro para mayor claridad.

Cuando se llama al install() método, la aplicación:

  • Calcula la suma de comprobación MD5 local para la imagen de software

  • Realiza una limpieza de almacenamiento en el dispositivo de destino

  • Copia la imagen del software en el dispositivo de destino

  • Calcula la suma de comprobación MD5 remota y la compara con el valor local

  • Valida la configuración con respecto a la nueva imagen

  • Instala el paquete

Si la instalación se realiza correctamente, la aplicación llama reboot() al método para reiniciar el dispositivo. Después de realizar la instalació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 manejar cualquier excepción que pueda ocurrir al conectarse al dispositivo o realizar la instalación.

Configuración

Crear la aplicación Junos PyEZ

Procedimiento paso a paso

Para crear una aplicación Python que utilice Junos PyEZ para instalar una imagen de software 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, la ruta del paquete de software y el archivo de registro.

  3. Defina el método de registro utilizado dentro de la aplicación y por el install() método.

  4. 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.

  5. Inicialice la instancia del registrador.

  6. (Opcional) Agregue código que compruebe la existencia del paquete de software.

  7. 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.

  8. Cree una instancia de la SW utilidad.

  9. Incluya código para instalar el paquete de software y para reiniciar el dispositivo si la instalación se realiza correctamente.

  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 instalación

Propósito

Compruebe que la instalación del software se ha realizado correctamente.

Acción

Revise los mensajes de progreso, que se envían tanto a la salida estándar como al archivo de registro definido en la aplicación, para obtener detalles sobre la instalación. Aquí se muestra la salida del archivo de registro de muestra. Algunos resultados se han omitido por brevedad.

Significado

El contenido del archivo de registro indica que la imagen se copió e instaló correctamente en el dispositivo de destino.

Solución de problemas

Solucionar errores de tiempo de espera

Problema

La aplicación genera un mensaje RpcTimeoutError o un mensaje TimeoutExpiredError y se produce un error en la instalación.

Las operaciones largas pueden superar el intervalo de tiempo de espera de RPC, especialmente en dispositivos más lentos, lo que hace que el RPC agote el tiempo de espera antes de que se pueda completar la operación. El tiempo predeterminado para que se agote el tiempo de espera de una RPC de NETCONF es de 30 segundos. Durante el proceso de instalación, Junos PyEZ aumenta el intervalo de tiempo de espera de RPC a 300 segundos (5 minutos) al calcular la suma de comprobación y a 1800 segundos (30 minutos) al copiar e instalar el paquete en el dispositivo.

Solución

Para acomodar operaciones de instalación o suma de comprobación que pueden requerir más tiempo que los intervalos de tiempo de espera predeterminados de instalación y suma de comprobación, establezca el método timeout y checksum_timeout los parámetros en los install valores adecuados y vuelva a ejecutar la aplicación. Por ejemplo:

Tabla de historial de cambios

La compatibilidad con las funciones viene determinada por la plataforma y la versión que esté utilizando. Utilice el Explorador de características para determinar si una característica es compatible con su plataforma.

Lanzamiento
Descripción
2.5.1
A partir de Junos PyEZ versión 2.5.0, el install() método devuelve una tupla que contiene el estado de la instalación y una cadena de mensaje.
2.1.5
A partir de la versión 2.1.5, Junos PyEZ actualiza de forma predeterminada todos los motores de enrutamiento en dispositivos individuales y miembros en un Virtual Chassis.