Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Use o Junos PyEZ para instalar software em dispositivos Junos

O utilitário Junos PyEZ jnpr.junos.utils.sw.SW permite que você instale ou atualize a imagem de software em dispositivos Junos. O install() método instala o pacote de software especificado.

Este tópico discute os cenários de implantação suportados, como especificar a localização da imagem do software e o processo geral de instalação e opções ao usar o Junos PyEZ para atualizar um dispositivo. Ele também discute como usar o Junos PyEZ para realizar cenários de atualização mais especializados, como uma atualização de host VM, uma atualização unificada de software em serviço (ISSU unificada) ou uma atualização de software ininterrupta (NSSU) em dispositivos que oferecem suporte a esses recursos.

Cenários de implantação suportados

O utilitário Junos PyEZ jnpr.junos.utils.sw.SW permite que você instale ou atualize a imagem de software em um dispositivo Junos individual ou nos membros em um Virtual Chassis misto ou não misto. Os cenários a seguir são suportados:

  • Dispositivos autônomos com um único mecanismo de roteamento

  • Dispositivos autônomos equipados com mecanismos de roteamento duplos

  • Chassi virtual da Série EX em configurações mistas e não mistas

  • Chassi virtual da Série QFX em configurações mistas e não mistas

  • Chassi virtual da Série EX e QFX mistas

  • Atualizações de host VM em mecanismos de roteamento com suporte para host VM

  • Configurações de implantação que têm alguma forma de recursos em serviço habilitados, como ISSU unificado ou NSSU

Nota:

A partir do Junos PyEZ Release 2.6.8, você pode usar o member_id argumento para instalar um pacote em um membro específico de um Chassi Virtual da Série EX.

Nota:

O jnpr.junos.utils.sw.SW utilitário não oferece suporte a dispositivos de atualização em um chassi virtual da Série MX, um cluster de chassi da Série SRX ou uma malha virtual de chassi (VCF).

Como especificar a localização da imagem do software

Quando você usa o Junos PyEZ para instalar software em dispositivos Junos, você pode baixar a imagem de software para o servidor de gerenciamento de configuração, e o install() método, por padrão, o copia para o dispositivo-alvo antes de realizar a instalação. Você também pode instruir o install() método a instalar uma imagem que já reside no dispositivo alvo ou reside em uma URL que é acessível a partir do dispositivo alvo.

A Tabela 1 descreve os parâmetros do install() método que você deve definir dependendo da localização do pacote de software. Você deve sempre incluir o parâmetro ou pkg_set o package install() método invocação.

Tabela 1: instalar() Configurações de parâmetro do método para a localização de pacotes de software

Localização de pacotes de software

no_copy Parâmetro

package ou pkg_set parâmetro

remote_path Parâmetro

Servidor de gerenciamento de configuração

Omitir ou definir False

Caminho de arquivo, incluindo o nome de arquivo do pacote de software ou pacotes no servidor local que executa o Junos PyEZ.

(Opcional) Caminho até o diretório sobre o dispositivo-alvo ao qual o pacote ou os pacotes serão copiados. Padrão é /var/tmp.

Dispositivo-alvo

Definir para True

Nome de arquivo do pacote ou pacotes de software.

(Opcional) Caminho até o diretório no dispositivo-alvo onde o pacote ou os pacotes já devem residir. Padrão é /var/tmp.

URL

URL da perspectiva do dispositivo Junos alvo do qual o pacote de software é instalado.

O package argumento é usado para instalar software em um único dispositivo Junos ou em membros em um Virtual Chassis não misto. O package argumento é uma seqüência que especifica uma única imagem de software. Por exemplo:

O pkg_set argumento é usado para instalar software nos membros em um Virtual Chassis misto. Ele contém uma lista ou tuple de strings que especificam as imagens de software necessárias, em nenhuma ordem específica, para os vários membros do Virtual Chassis. Por exemplo:

Para pacotes residentes no servidor local que executa o Junos PyEZ, quando você omite o no_copy argumento ou o define False, o servidor copia o pacote de software especificado para o dispositivo. Incluir o package argumento faz com que o servidor copie o pacote para o dispositivo alvo (dispositivo individual ou roteador primário ou switch em um Virtual Chassis não misto), e incluindo o pkg_set argumento faz com que o servidor copie todos os pacotes da lista para o roteador ou switch principal em um Virtual Chassis misto. Por padrão, as imagens de software são colocadas no diretório /var/tmp , a menos que o remote_path argumento especifique um diretório diferente.

Se você definir o no_copy argumento para True, os pacotes de software necessários já devem existir no dispositivo alvo ou no dispositivo principal do Virtual Chassis antes do início da instalação. Os pacotes devem residir no diretório especificado pelo remote_path argumento, ou se remote_path forem omitidos, no diretório padrão /var/tmp .

O Junos PyEZ também oferece suporte à instalação de imagens de software de uma URL. Neste caso, o valor ou pkg_set o package valor devem ser uma URL da perspectiva do dispositivo Junos alvo. O pacote é copiado e instalado a partir da URL especificada, e os no-copy argumentos e argumentos remote_path são ignorados. Para obter informações sobre como especificar o formato da URL, consulte Formato para especificar nomes de arquivo e URLs nos comandos CLI do Junos OS.

Visão geral do processo de instalação

Para instalar uma imagem de software em um dispositivo Junos, um aplicativo Junos PyEZ se conecta ao dispositivo individual ou ao dispositivo principal em um Virtual Chassis, cria uma instância do SW utilitário e chama o install() método com quaisquer argumentos necessários ou opcionais. Por exemplo:

Para a lista atual de parâmetros do install() método, consulte instalar().

Se o pacote de software estiver localizado no servidor de gerenciamento de configuração e o no_copy parâmetro for omitido ou definido em Falso, o install() método realizará as seguintes operações antes de instalar o software:

  • Computa o checksum do pacote ou pacotes de software locais usando o algoritmo especificado no checksum_algorithm argumento, se o checksum ainda não for fornecido através do checksum argumento. Valores aceitáveis checksum_algorithm são "md5", "sha1"e "sha256". O padrão é "md5".

  • Realiza uma limpeza de armazenamento no dispositivo-alvo para criar espaço para o pacote de software, a menos que cleanfs esteja definido para False.

  • SCP ou FTP copia o pacote para o remote_path diretório, ou se remote_path não for especificado, para o diretório /var/tmp , se um arquivo com o mesmo nome e checksum ainda não residir no local alvo no dispositivo.

  • Computa o checksum do arquivo remoto e o compara com o valor do arquivo local.

Após o pacote de software estar no dispositivo alvo, seja baixado inicialmente, copiado do servidor de gerenciamento de configuração pelo install() método ou copiado de uma URL pelo dispositivo alvo, o install() método executa as seguintes operações:

  • Valida a configuração em relação ao novo pacote se o validate parâmetro for definido como verdadeiro

  • Instala o pacote em todos os mecanismos de roteamento a menos que all_re esteja definido para False

Nota:

A partir do lançamento 2.1.5, o Junos PyEZ, por padrão, atualiza todos os mecanismos de roteamento em dispositivos individuais e membros em um Virtual Chassis. Em versões anteriores, ou se all_re=False, o Junos PyEZ só atualiza o Mecanismo de Roteamento ao qual ele está conectado.

A partir do Junos PyEZ Release 2.5.0, o install() método retorna uma tuple que contém o status da instalação e uma corda de mensagem. Em versões anteriores, o método retorna apenas o status da instalação. O status é True se a instalação for bem sucedida e False de outra forma. A sequência de mensagens fornece informações adicionais sobre o sucesso ou falha da instalação e pode incluir mensagens informativas ou mensagens de erro geradas pelo Junos PyEZ ou pelo dispositivo. Por exemplo:

O install() método não reinicia automaticamente o dispositivo. Para reiniciar ou desligar o dispositivo após a instalação ser concluída, ligue para o reboot() método ou shutdown() o método, respectivamente.

O vídeo a seguir apresenta uma curta sessão de Python que demonstra como usar o Junos PyEZ para instalar o Junos OS.

Como especificar o tempo limite de instalação e checkum

O Junos PyEZ realiza operações em uma sessão netconf. O tempo padrão de um RPC NETCONF para o tempo de saída é de 30 segundos. Durante o processo de instalação, o Junos PyEZ aumenta o intervalo de tempo limite do RPC para 1800 segundos (30 minutos) ao copiar e instalar o pacote no dispositivo e para 300 segundos (5 minutos) ao computar o checksum. Em alguns casos, o processo de instalação ou o cálculo de checksum podem exceder esses intervalos de tempo.

Para aumentar o valor de tempo limite para o processo de instalação e o cálculo do checksum, inclua os parâmetros e checksum_timeout os timeout parâmetros, respectivamente, na chamada ao install() método e configure-os para os valores apropriados. Por exemplo:

Como registrar o processo de instalação

O processo de instalação do Junos PyEZ permite exibir ou registrar o progresso da instalação, incluindo o progress argumento na chamada do install() método. O argumento é definido para uma função de retorno de chamada, que deve ter um protótipo de função definido que inclui a Device instância e relatar argumentos de strings. Você também pode definir progress=True para usar sw.progress() para relatórios básicos.

O exemplo a seguir imprime o progresso da instalação usando a myprogress função.

A saída de progresso está no formato definido pelo usuário.

Como realizar um upgrade de host VM

Em dispositivos que têm mecanismos de roteamento com suporte de host VM, o Junos OS funciona como uma máquina virtual (VM) em um host baseado em Linux (host VM). Um upgrade de host VM requer um pacote de instalação de host VM (junos-vmhost-install-tgzx) e atualiza o sistema operacional host e o Junos OS compatível. A atualização é realizada usando o comando de request vmhost software add modo operacional, que corresponde ao <request-vmhost-package-add> RPC.

A partir do Junos PyEZ Release 2.1.6, o sw.install() método suporta o vmhost=True argumento para realizar um upgrade de host VM. Quando o vmhost=True argumento está presente, o sw.install() método realiza a instalação usando o <request-vmhost-package-add> RPC em vez do <request-package-add> RPC.

O exemplo a seguir atualiza e reinicializa o Junos OS e o sistema operacional host em um único dispositivo de mecanismo de roteamento:

Para reiniciar apenas o software Junos OS, chame o sw.reboot() método sem o vmhost argumento.

Como realizar um ISSU unificado ou NSSU

O Junos PyEZ oferece suporte para realizar uma atualização unificada de software em serviço (ISSU unificada) ou uma atualização de software ininterrupta (NSSU) em dispositivos que oferecem suporte ao recurso e atendem aos requisitos necessários. A Tabela 2 descreve a versão Junos PyEZ na qual os recursos unificados de ISSU e NSSU são suportados pela primeira vez. Para obter mais informações sobre o ISSU e o NSSU unificados, consulte a documentação de software para o seu produto.

Tabela 2: Junos PyEZ Unified ISSU e suporte para NSSU

Versão do Junos PyEZ

Suporte para recursos

2.1.0

Suporte para ISSU e NSSU unificados em dispositivos Junos com mecanismo de roteamento duplo.

2.1.6

Suporte para ISSU unificado durante um upgrade de host VM para esses dispositivos com suporte de host VM que usam o request vmhost software in-service-upgrade comando para realizar uma atualização unificada de software em serviço do sistema operacional host e Junos OS.

O recurso ISSU unificado permite que você atualize entre duas versões diferentes do Junos OS sem interrupções no plano de controle e com o mínimo de interrupção do tráfego. Para realizar uma atualização unificada de software em serviço em dispositivos que oferecem suporte a esse recurso, inclua o issu=True argumento no install() método.

No exemplo a seguir, o método atualiza o install() Junos OS em ambos os mecanismos de roteamento e reinicia o novo mecanismo de roteamento primário (anteriormente o antigo mecanismo de roteamento de backup) como parte do processo de instalação. Se a instalação for bem sucedida, o reboot() método então reinicializa o mecanismo de roteamento conectado, que é o novo mecanismo de roteamento de backup (anteriormente o antigo mecanismo de roteamento primário).

Para realizar uma atualização unificada de software em serviço em um mecanismo de roteamento com suporte de host VM que atenda aos requisitos necessários e suporte a ISSU unificada, inclua os argumentos e issu=True o vmhost=True install() método. O dispositivo faz upgrades de um sistema operacional host e versão do Junos OS para a versão solicitada usando o <request-vmhost-package-in-service-upgrade> RPC.

O recurso NSSU permite atualizar o software Junos OS em execução em um switch ou Virtual Chassis com mecanismos de roteamento redundantes com o mínimo de interrupção no tráfego da rede. Para realizar uma atualização ininterrupta de software em dispositivos que oferecem suporte a esse recurso, inclua o nssu=True argumento no install() método. Por exemplo:

Como instalar software em um membro virtual do chassi da Série EX

Geralmente, quando você atualiza um Chassi Virtual da Série EX não misto, você acompanha o processo de instalação descrito na visão geral do processo de instalação para atualizar todo o Virtual Chassis. No entanto, pode haver momentos em que você precisa instalar software em switches de membros específicos em um Virtual Chassis. A partir do Junos PyEZ Release 2.6.8, você pode instalar um pacote de software em switches individuais de membros em um Virtual Chassis da Série EX usando o member_id argumento. O member_id argumento é uma lista de strings especificando os IDs dos membros nos quais instalar o software.

Por exemplo, o aplicativo Junos PyEZ a seguir atualiza o software no membro 0 e membro 1 no Virtual Chassis da Série EX:

Exemplo: use o Junos PyEZ para instalar software em um dispositivo Junos

A biblioteca Junos PyEZ oferece métodos para realizar tarefas operacionais e de configuração em dispositivos Junos. Este exemplo descreve como usar o utilitário Junos PyEZ jnpr.junos.utils.sw.SW para instalar ou atualizar a imagem de software em um dispositivo Junos.

Requisitos

Este exemplo usa os seguintes componentes de hardware e software:

  • Servidor de gerenciamento de configuração executando Python 3.5 ou posterior e Junos PyEZ Versão 2.5 ou posterior

  • Dispositivo Junos com NETCONF habilitado e uma conta de usuário configurada com permissões apropriadas

  • Par de chave SSH público/privado configurado para o usuário apropriado no servidor Junos PyEZ e dispositivo Junos

Visão geral

Este exemplo apresenta um aplicativo Python que usa o utilitário Junos PyEZ SW para atualizar o Junos OS no dispositivo especificado. Este exemplo pressupõe que a imagem do software reside no servidor local.

O aplicativo importa a classe Junos PyEZDevice, que lida com a conexão com o dispositivo Junos; a SW classe, que é usada para realizar as operações de instalação de software no dispositivo alvo; e exigiu exceções do jnpr.junos.exception módulo, que contém exceções encontradas ao gerenciar dispositivos Junos. O aplicativo também importa os osmódulos Python e logging , syspara verificar a existência do pacote de software e executar funções básicas de registro.

O aplicativo define o update_progress() método, que é usado pelo install() método para relatar o progresso da instalação. Ao registrar o processo de instalação, você pode identificar mais facilmente o ponto onde ocorrem quaisquer falhas. Neste exemplo, as mensagens de progresso são enviadas para a saída padrão e também são registradas em um arquivo separado.

Antes de se conectar ao dispositivo e prosseguir com a instalação, o aplicativo verifica primeiro se o pacote de software existe. Se o arquivo não puder ser encontrado, o aplicativo sai com uma mensagem de erro. Se o arquivo existir, o aplicativo cria a Device instância para o dispositivo alvo e chama o open() método para estabelecer uma conexão e sessão NETCONF com o dispositivo.

O aplicativo cria uma instância do SW utilitário e usa o install() método para instalar a imagem do software Junos OS no dispositivo alvo. A package variável define o caminho no servidor local para a nova imagem do Junos OS. Como o no_copy parâmetro é padrão para Falso, o processo de instalação copia a imagem de software do servidor local para o dispositivo alvo. A remote_path variável define o caminho no dispositivo-alvo ao qual o pacote de software é copiado. O padrão é /var/tmp. Embora não seja necessário, este exemplo configura explicitamente o parâmetro para clareza.

Quando o install() método é chamado, o aplicativo:

  • Calcula o checksum MD5 local para a imagem do software

  • Realiza uma limpeza de armazenamento no dispositivo-alvo

  • Copia a imagem do software para o dispositivo-alvo

  • Computa o checksum MD5 remoto e o compara com o valor local

  • Valida a configuração em relação à nova imagem

  • Instala o pacote

Se a instalação for bem sucedida, o aplicativo então chama o reboot() método para reiniciar o dispositivo. Após a realização da instalação, o aplicativo chama o close() método para encerrar a sessão e a conexão netconf. O aplicativo inclui código para lidar com quaisquer exceções que possam ocorrer ao se conectar ao dispositivo ou realizar a instalação.

Configuração

Crie o aplicativo Junos PyEZ

Procedimento passo a passo

Para criar um aplicativo Python que usa o Junos PyEZ para instalar uma imagem de software em um dispositivo Junos:

  1. Importe quaisquer módulos, aulas e objetos necessários.

  2. Inclua quaisquer variáveis necessárias, que para este exemplo incluem o nome de host do dispositivo gerenciado, o caminho do pacote de software e o arquivo de log.

  3. Definir o método de registro usado dentro do aplicativo e pelo install() método.

  4. Crie uma main() definição de função e chamada de função e coloque as declarações restantes dentro da definição.

  5. Inicialize a instância do madeireiro.

  6. (Opcional) Adicione um código que verifica a existência do pacote de software.

  7. Crie uma instância da Device classe e forneça o nome de host e quaisquer parâmetros necessários para essa conexão específica.

    Em seguida, abra uma conexão e estabeleça uma sessão netconf com o dispositivo.

  8. Crie uma instância da SW utilidade.

  9. Inclua código para instalar o pacote de software e reiniciar o dispositivo se a instalação for bem sucedida.

  10. Encerre a sessão da NETCONF e feche a conexão com o dispositivo.

Resultados

No servidor de gerenciamento de configuração, analise o aplicativo concluído. Se o aplicativo não exibir o código pretendido, repita as instruções neste exemplo para corrigir o aplicativo.

Execute o aplicativo Junos PyEZ

Execute o aplicativo

  • No servidor de gerenciamento de configuração, execute o aplicativo.

Verificação

Verifique a instalação

Propósito

Verifique se a instalação do software foi bem sucedida.

Ação

Analise as mensagens de progresso, que são enviadas tanto para a saída padrão quanto para o arquivo de log que é definido no aplicativo, para obter detalhes sobre a instalação. A saída de arquivo de log de amostra é mostrada aqui. Alguma saída foi omitida por brevidade.

Significado

O conteúdo do arquivo de log indica que a imagem foi copiada e instalada com sucesso no dispositivo alvo.

Solucionando problemas

Resolução de problemas de erros de tempo limite

Problema

O aplicativo gera uma mensagem RpcTimeoutError ou uma mensagem TimeoutExpiredError e a instalação falha.

Operações longas podem exceder o intervalo de tempo limite do RPC, especialmente em dispositivos mais lentos, fazendo com que o RPC fique sem tempo antes que a operação possa ser concluída. O tempo padrão de um RPC NETCONF para o tempo de saída é de 30 segundos. Durante o processo de instalação, o Junos PyEZ aumenta o intervalo de tempo limite do RPC para 300 segundos (5 minutos) ao computar o checksum e para 1800 segundos (30 minutos) ao copiar e instalar o pacote no dispositivo.

Solução

Para acomodar operações de instalação ou checksum que possam exigir um tempo maior do que os intervalos de tempo limite de instalação e checkum padrão, definir o método timeout e checksum_timeout os install parâmetros para os valores apropriados e refazer a execução do aplicativo. Por exemplo:

Tabela de histórico de mudanças

O suporte de recursos é determinado pela plataforma e versão que você está usando. Use o Feature Explorer para determinar se um recurso é suportado em sua plataforma.

Lançamento
Descrição
2.5.1
A partir do Junos PyEZ Release 2.5.0, o install() método retorna uma tuple que contém o status da instalação e uma corda de mensagem.
2.1.5
A partir do lançamento 2.1.5, o Junos PyEZ, por padrão, atualiza todos os mecanismos de roteamento em dispositivos individuais e membros em um Virtual Chassis.