Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Use o Ansible para instalar software em dispositivos Junos

RESUMO Use os módulos Ansible da Juniper Networks para instalar software em dispositivos Junos.

Use o Ansible para instalar software

A Juniper Networks oferece um módulo Ansible que permite instalar ou atualizar a imagem de software em um dispositivo Junos. A Tabela 1 descreve o módulo.

Tabela 1: Módulo de software

Conjunto de conteúdo

Nome do módulo

juniper.device coleção

software

As seções a seguir discutem como especificar a localização da imagem do software e o processo geral de instalação de software e opções ao usar o módulo Ansible para instalar pacotes de software em dispositivos Junos. Eles também discutem como 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.

Como especificar a localização da imagem do software

Quando você usa o juniper.device.software módulo para instalar software em dispositivos Junos, você pode baixar o pacote de software para o nó de controle Ansible, e o módulo, por padrão, copia o pacote para o dispositivo-alvo antes de realizar a instalação. Para ambientes virtual chassis mistos, os pacotes de software devem residir no nó de controle Ansible. Para dispositivos autônomos ou ambientes não mistos do Virtual Chassis, você também pode instruir o módulo a instalar uma imagem de software que já reside no dispositivo Junos alvo ou reside em uma URL que é acessível a partir do dispositivo alvo.

A Tabela 2 descreve os argumentos do módulo que você deve definir dependendo da localização do pacote de software. O módulo deve sempre incluir o, pkg_setou remote_package o local_packageargumento. O no_copy argumento é padrão parafalse, o que instrui o módulo a copiar o pacote de software a partir do local especificado no nó de controle Ansible para o dispositivo alvo.

Tabela 2: Argumentos do módulo para localização de pacotes de software

Localização de pacotes de software

no_copy Parâmetro

local_package ou pkg_set parâmetro

remote_package Parâmetro

Nó de controle ansível

Omitir ou definir false

Para dispositivos autônomos ou ambientes não mistos do Virtual Chassis:

Configure local_package o caminho do arquivo, incluindo o nome do arquivo, do pacote de software no nó de controle local. Os caminhos dos arquivos são relativos ao playbook directory.

(Opcional) Caminho de arquivo no dispositivo-alvo ao qual o pacote de software é copiado. O diretório padrão é /var/tmp.

Se remote_package incluir um nome de arquivo, ele deve combinar com o nome de arquivo especificado em local_package.

Para ambientes de Virtual Chassis mistos:

Configure pkg_set uma lista dos caminhos de arquivo, incluindo os nomes de arquivo, de um ou mais pacotes de software no nó de controle local. Os caminhos dos arquivos são relativos ao playbook directory.

Localização remota

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

Dispositivo-alvo

Definir para true

Caminho de arquivo no dispositivo alvo onde o pacote de software já deve residir. O diretório padrão é /var/tmp.

Se o pacote de software residir no nó de controle Ansible, inclua o argumento apropriado para sua instalação:

  • local_package— Instale software em um dispositivo Junos autônomo ou em membros em um Virtual Chassis não misto. O valor do argumento é uma única string que especifica o caminho absoluto ou relativo para a imagem do software.

  • pkg_set— Instale software nos membros em um Virtual Chassis misto. O valor do argumento é uma lista de strings que especificam os caminhos de arquivo absolutos ou relativos das imagens de software, em nenhuma ordem específica, para os vários membros do Virtual Chassis.

Por exemplo:

Por padrão, quando você inclui o ou pkg_set o local_package argumento, o módulo copia quaisquer pacotes de software desde o nó de controle Ansible até o diretório /var/tmp no dispositivo Junos alvo (dispositivo individual ou dispositivo principal Virtual Chassis). Se você quiser copiar a local_package imagem para um diretório diferente, defina o remote_package argumento e especifique o diretório alvo. Se o remote_package argumento incluir um nome de arquivo, os nomes de arquivo e remote_package os local_package argumentos devem ser idênticos, ou o módulo gera um erro.

Se o pacote de software já estiver no dispositivo Junos alvo (dispositivo individual ou dispositivo primário Virtual Chassis), o módulo deve incluir o no_copy: true argumento também o remote_package argumento, que especifica o caminho do arquivo para um pacote de software existente no dispositivo alvo. Se remote_package não especificar um diretório, o padrão é /var/tmp.

Se o pacote de software residir em um local diferente do nó de controle ou dispositivo alvo do Ansible, o módulo deve incluir o remote_package argumento e especificar a localização do pacote de software. O valor é remote_package uma URL da perspectiva do dispositivo Junos alvo. Para obter informações sobre formatos de URL aceitáveis, consulte Formato para especificar nomes de arquivos e URLs nos comandos CLI do Junos OS.

Visão geral do processo de instalação

Usar o Ansible para instalar um pacote de software em um dispositivo Junos, executar o software módulo e fornecer quaisquer argumentos necessários. Por exemplo:

Quando você executa o software módulo, ele executa as seguintes operações:

  1. Compara a versão do Junos OS especificada no version argumento, ou no nome do arquivo do pacote de software se o version argumento for omitido, com a versão instalada no dispositivo gerenciado. Se as versões instaladas e desejadas forem idênticas, o módulo ignora as etapas e conjuntos changed de instalação restantes para failed false.
  2. Se o pacote de software estiver localizado no nó de controle Ansible e o no_copy parâmetro for omitido ou definidofalse, o módulo executará as seguintes operações:
    • Computa o checksum do pacote ou pacotes de software locais usando o algoritmo especificado no checksum_algorithm argumento. Valores aceitáveis checksum_algorithm são md5, sha1e sha256. O padrão é md5. Alternativamente, você pode fornecer um checksum no checksum argumento.

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

    • SCP ou FTP copia quaisquer pacotes para o dispositivo alvo, se arquivos com os mesmos nomes e checksums ainda não estiverem no local alvo do dispositivo.

      Quando o módulo inclui local_package, o pacote é copiado para o remote_package diretório ou, se remote_package não for especificado, para o diretório /var/tmp . Quando o módulo inclui pkg_set, os pacotes são sempre copiados para o /var/tmp directory no dispositivo principal Virtual Chassis.

      Nota:

      Se o cleanfs argumento for omitido ou definido true, o módulo copiará o pacote de software para o dispositivo mesmo se ele existisse inicialmente no local alvo, porque a operação de limpeza de armazenamento remove o arquivo existente. Se cleanfs: false estiver presente e o arquivo já estiver no local alvo, o módulo ignora a operação de cópia de arquivo.

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

Uma vez que o pacote de software esteja no dispositivo-alvo, seja baixado inicialmente ou copiado pelo módulo, o módulo então executa as seguintes operações:

  1. Valida a configuração em relação ao novo pacote quando o validate argumento é definido para true.

    Nota:

    Por padrão, o software módulo não valida o pacote ou o pacote de software em relação à configuração existente como um pré-requisito para adicionar o pacote de software. Para garantir que a configuração ativa funcionará com a nova imagem de software, defina o validate argumento para true.

  2. Instala o pacote em cada mecanismo de roteamento individual, a menos que all_re esteja definido para false.

  3. Reinicializa cada mecanismo de roteamento atualizado, a menos que o reboot argumento esteja definido para false.

O software módulo permite que você registre o progresso da instalação incluindo o argumento do logfile módulo. Por padrão, apenas mensagens de aviso de nível de gravidade ou superior são registradas. Para registrar mensagens de informações de nível de gravidade ou superior, o que é necessário para registrar mensagens para o processo geral de instalação, executar o manual com a opção -v de linha de comando ou --verbose .

Como especificar valores de tempo limite

O juniper.device.software módulo 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, determinadas operações aumentam o intervalo de tempo limite do RPC da seguinte forma:

  • Copiar e instalar o pacote no dispositivo — 1800 segundos (30 minutos)

  • Computação do checksum — 300 segundos (5 minutos)

  • Realizando uma limpeza de armazenamento — 300 segundos (5 minutos)

Em alguns casos, o processo de instalação, cálculo de checksum ou limpeza de armazenamento podem exceder esses intervalos de tempo. Você pode alterar o valor de tempo limite para essas operações configurando o install_timeout, checksum_timeoute cleanfs_timeout os argumentos para o número necessário de segundos na lista de argumentos do módulo. Por exemplo:

Como especificar opções de instalação que não tenham um argumento de módulo equivalente

Quando você usa o juniper.device.software módulo para instalar software em um dispositivo, o módulo invoca o RPC apropriado para os argumentos de instalação incluídos. Por exemplo, o módulo invoca o <request-package-add> RPC para instalações padrão do Junos OS, o <request-vmhost-package-add> RPC para atualizações de host VM, o <request-package-in-service-upgrade> RPC para cenários ISSU unificados e assim por diante.

O módulo oferece suporte a argumentos explícitos para muitas das opções de instalação, por exemplo, a opção validate . O módulo também oferece suporte ao kwargs argumento, que permite incluir quaisquer opções adicionais que sejam suportadas pelo RPC, mas que não tenham um argumento de módulo equivalente. O kwargs argumento requer um princípio de pares chave/valor de opções adicionais suportadas.

Para obter a lista atual de opções suportadas pelo módulo, consulte a documentação de referência da API para o módulo. Para obter uma lista de todas as opções disponíveis para um RPC específico, consulte a documentação para o comando equivalente ou pesquise a tag de solicitação do RPC no Junos XML API Explorer.

Nota:

Você só deve incluir opções de instalação que são suportadas no dispositivo Junos alvo para o RPC determinado.

No manual a seguir, o software módulo instala uma nova imagem de software nos hosts-alvo. O módulo inclui o kwargs argumento com unlink: true. Esse argumento, que remove o pacote de software do diretório após uma atualização bem-sucedida, equivale a incluir a opção <unlink/> no <request-package-add> RPC.

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). Uma atualização do host VM requer um pacote de instalação do VM Host (junos-vmhost-install-tgzx) e atualiza o sistema operacional host e o Junos OS compatível. No CLI, você realiza a atualização usando o comando de request vmhost software add modo operacional, que corresponde ao <request-vmhost-package-add> RPC.

O juniper.device.software módulo oferece suporte ao vmhost: true argumento para realizar um upgrade de host VM. Quando o argumento está presente, o módulo realiza a instalação usando o <request-vmhost-package-add> RPC.

Os seguintes upgrades e reinicializam o Junos OS e o sistema operacional host nos dispositivos especificados:

Como realizar um ISSU unificado ou NSSU

O juniper.device.software módulo oferece suporte à realização de 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. Para obter mais informações sobre os recursos unificados de ISSU e NSSU, consulte a documentação de software para o seu produto.

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, o software módulo deve incluir o issu: true argumento. Por exemplo:

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 de software sem parar, o software módulo deve incluir o nssu: true argumento. 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 no Virtual Chassis. A partir da versão 1.0.3 da juniper.device coleção, você pode instalar um pacote de software em switches individuais de membros em um Chassi Virtual da Série EX não misto.

Para instalar software em membros específicos, inclua o member_id argumento e defina uma lista de strings que especificam os IDs dos membros. O sistema instala o pacote de software do dispositivo primário Virtual Chassis nos membros especificados.

A cartilha Ansible a seguir atualiza o software sobre o membro 0 e o membro 1 no Virtual Chassis da Série EX:

Exemplo: use o Ansible para instalar software

Este exemplo usa o juniper.device.software módulo para instalar uma 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 Ansible 2.10 ou posterior com a juniper.device coleção instalada

  • 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 nó de controle Ansible e dispositivo Junos

  • Arquivo de inventário Ansible existente com hosts necessários definidos

Visão geral

Este exemplo apresenta um manual ansible que usa o juniper.device.software módulo para atualizar o Junos OS nos hosts no grupo de inventário especificado. Neste exemplo, a imagem de software reside no nó de controle Ansible, e o módulo copia a imagem para o dispositivo alvo antes de instalá-la. O módulo não define explicitamente um host argumento, de modo que o módulo opera no host padrão, que é {{ inventory_hostname }}.

Este manual inclui a Check NETCONF connectivity tarefa, que usa o ansible.builtin.wait_for módulo para tentar estabelecer uma sessão NETCONF com o dispositivo Junos usando a porta NETCONF padrão 830. Se o nó de controle não estabelecer uma sessão netconf com um dispositivo durante a execução de playbook, ele ignora as tarefas restantes em jogo para esse dispositivo.

A Install Junos OS package tarefa executa o software módulo desde que a verificação da NETCONF tenha sido bem sucedida. O version argumento define a versão desejada do Junos OS, pois seria relatada pelo show version comando no dispositivo Junos. Durante a execução da cartilha, o módulo verifica primeiro se a versão solicitada ainda não está instalada no dispositivo. Se a versão solicitada for diferente da versão instalada atualmente, o módulo instala a versão solicitada.

O local_package argumento define o caminho do pacote de software Junos OS no nó de controle Ansible. Durante a instalação, o módulo realiza uma operação de limpeza de armazenamento no dispositivo alvo, copia a imagem do software para o diretório /var/tmp no dispositivo, verifica o checksum do arquivo, valida o novo software contra a configuração ativa e depois instala o software em cada mecanismo de roteamento no host alvo. Por padrão, o software módulo reinicia cada mecanismo de roteamento após a instalação ser concluída; no entanto, essa tarefa define reboot: true explicitamente para clareza.

A tarefa armazena o resultado do response módulo na variável e notifica um manipulador. Se o usuário não executar a cartilha usando o modo de verificação, o wait_reboot manipulador então tenta estabelecer uma sessão com o dispositivo para verificar se o dispositivo está novamente on-line. A wait_time variável define o tempo em que o nó de controle tenta se reconectar com o dispositivo.

Este exemplo inclui o logfile parâmetro para registrar o progresso da instalação. Isso é importante para fins de depuração caso a instalação não ocorra, bem como para registrar as datas e horários das instalações nos dispositivos. O usuário que executa o manual deve ter permissões para escrever no arquivo de log especificado. Por padrão, apenas mensagens de aviso de nível de gravidade ou superior são registradas. Neste exemplo, o manual é executado com a opção -v de registrar mensagens de informações de nível de gravidade ou superior para monitorar a instalação.

Configuração

Criação do Ansible Playbook

Para criar um manual que usa o juniper.device.software módulo para instalar uma imagem de software em um dispositivo Junos:

  1. Inclua a placa de caldeira para o manual e esta peça, que executa os módulos localmente.

  2. Definir ou importar quaisquer variáveis necessárias, o que, por exemplo, inclui a versão desejada do Junos OS e o caminho para a nova imagem, entre outros.

  3. (Opcional) Crie uma tarefa para verificar a conectividade NETCONF.

  4. Crie a tarefa de instalar o pacote Junos OS no dispositivo e notificar o manipulador.

  5. (Opcional) Crie uma tarefa para publicar a resposta do módulo.

  6. Crie o manipulador que verifica se o dispositivo volta on-line após a reinicialização.

    O nome do manipulador deve ser o mesmo mencionado na tarefa de instalação.

Resultados

No nó de controle Ansible, revise o manual completo. Se o manual não exibir o código pretendido, repita as instruções neste exemplo para corrigir o manual.

Execute o playbook

Para executar o manual:

  • Emita o ansible-playbook comando no nó de controle e forneça o caminho de manual e quaisquer opções desejadas.

Verificação

Verifique a instalação

Propósito

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

Ação

A saída de manual deve indicar quaisquer tarefas falhadas. No entanto, você também pode revisar o conteúdo do arquivo de log definido no manual de jogadas 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 com sucesso e instalada em ambos os mecanismos de roteamento no dispositivo alvo.