Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Use o utilitário de configuração Junos PyEZ para configurar dispositivos Junos

O Junos PyEZ permite que você faça mudanças de configuração estruturadas e não estruturadas nos dispositivos Junos. Este tópico discute como usar o jnpr.junos.utils.config.Config utilitário para fazer alterações de configuração não estruturadas, que consistem em dados de configuração estáticos ou templatizados que são formatados como texto ASCII, elementos Junos XML, comandos Junos OS set ou Notação de objetos JavaScript (JSON). O Config utilitário também permite que você reverta para uma configuração previamente comprometida ou reverta para uma configuração de resgate.

Visão geral do processo de configuração

Depois de se conectar com sucesso a um dispositivo Junos, para configurar o dispositivo usando o Config utilitário, crie primeiro um Config objeto e associe-o com a Device instância. Por exemplo:

Por padrão, o Junos PyEZ atualiza a configuração global do candidato (também conhecida como banco de dados de configuração compartilhada). O processo básico para fazer alterações de configuração é bloquear o banco de dados de configuração, carregar as mudanças de configuração, comprometer a configuração para torná-lo ativo e, em seguida, desbloquear o banco de dados de configuração. Quando você usa o utilitário Junos PyEZ Config para fazer alterações de configuração não estruturadas no banco de dados de configuração compartilhada, você pode realizar essas ações chamando os métodos de instância apropriados descritos aqui:

  1. Bloqueie a configuração usando lock()

  2. Modifique a configuração realizando uma das seguintes ações:

  3. Comprometa a configuração usando commit() , conforme descrito em Confirmar a configuração e usar o Junos PyEZ para comprometer a configuração

  4. Desbloqueie a configuração usando unlock()

Você também pode usar um gerenciador de contexto (with ... as sintaxe) para criar uma Config instância de objeto, e certos modos de configuração exigem que você use um. Para esses modos, o Junos PyEZ bloqueia e desbloqueia automaticamente a configuração. Para obter mais informações, consulte Especifique o modo de configuração.

Ao usar o load() método para modificar a configuração, além de especificar o modo de configuração, você também pode especificar o tipo de operação de carga, o formato das alterações de configuração e a fonte dos dados de configuração. O Config utilitário oferece suporte a muitas das mesmas operações e formatos de carga que estão disponíveis no Junos CLI. Para obter mais informações, veja:

Você pode especificar a fonte dos dados de configuração como um arquivo no servidor local, um arquivo no dispositivo alvo ou um arquivo em uma URL que é acessível a partir do dispositivo alvo, ou como uma string, um objeto XML ou um modelo Jinja2. Para obter informações sobre a especificação da fonte de dados da configuração, veja as seguintes seções:

Especifique o modo de configuração

Por padrão, quando você cria um Config objeto e não especifica explicitamente um modo de configuração, o Junos PyEZ atualiza a configuração global do candidato. Você também pode especificar um modo de configuração diferente para usar ao modificar o banco de dados de configuração. Para especificar um modo diferente do padrão, você deve criar o Config objeto usando um gerenciador de contexto e definir o mode argumento para o modo desejado. Os modos suportados incluem, , , e batchephemeral. dynamicexclusiveprivate

Nota:

Você pode usar o Junos PyEZ para atualizar o banco de dados de configuração efêmero em dispositivos que oferecem suporte a este banco de dados. O banco de dados efêmero é um banco de dados de configuração alternativo que fornece uma interface programática rápida para realizar atualizações de configuração em dispositivos Junos. É um recurso avançado que, se usado incorretamente, pode ter um impacto negativo sério na operação do dispositivo. Para obter mais informações, veja Entenda o banco de dados de configuração Efêmero.

Quando você especifica um modo diferente do padrão, o gerente de contexto lida com a abertura, o bloqueio e o fechamento e o desbloqueio do banco de dados. Isso garante que você não deixe o banco de dados sem querer em um estado bloqueado. Nesses casos, você só precisa chamar os métodos e commit() os load() métodos para configurar o dispositivo.

Por exemplo, o código a seguir faz alterações de configuração usando o configure private modo, que abre uma cópia privada da configuração do candidato:

Para obter mais informações sobre os diferentes modos de configuração, consulte o Guia do usuário da CLI e use o Junos PyEZ para configurar dispositivos Junos.

Especifique a operação de carga

O Junos PyEZ oferece suporte a mudanças de configuração de carregamento usando muitas das mesmas operações de carga que são suportadas no Junos CLI. Você especifica a operação de carga desejada incluindo ou omitindo os parâmetros apropriados no Config load() método.

A Tabela 1 descreve as operações de carga suportadas e o argumento do método correspondente load() . Por padrão, o Junos PyEZ realiza uma load replace operação. Para usar uma operação de carga diferente, defina o parâmetro correspondente ao True load() método.

Tabela 1: Parâmetros para especificar o tipo de operação de carga nos métodos de carga() e set()

Operação de carga

Argumento

Descrição

Primeira versão do Junos PyEZ com suporte

load merge

merge=True

Mescle a configuração carregada com a configuração existente.

1.0

load override

overwrite=True

Substitua toda a configuração pela configuração carregada.

1.0

load patch

patch=True

Carregue dados de configuração de um arquivo de patch.

2.4.0

load replace (Padrão)

Mescle a configuração carregada com a configuração existente, mas substitua as declarações na configuração existente por aquelas que especificam a replace: tag na configuração carregada. Se não houver nenhuma declaração na configuração existente, a declaração na configuração carregada será adicionada.

1.0

load update

update=True

Carregue uma configuração completa e compare-a com a configuração existente. Cada elemento de configuração que é diferente na configuração carregada substitui seu elemento correspondente na configuração existente. Durante a operação de confirmação, apenas processos de sistema que são afetados por elementos de configuração alterados analisam a nova configuração.

2.1.0

O exemplo a seguir executa uma load override operação, que substitui toda a configuração do candidato pela configuração carregada e, em seguida, compromete a configuração do candidato para torná-la ativa.

Especifique o formato dos dados de configuração a serem carregados

O utilitário Junos PyEZ Config permite configurar dispositivos Junos usando um dos formatos padrão e suportados. Você pode fornecer dados de configuração como strings, arquivos, objetos XML ou objetos Jinja2 Template. Os arquivos podem conter trechos de dados de configuração ou modelos Jinja2. Ao fornecer dados de configuração dentro de um modelo de string, arquivo ou Jinja2, os formatos suportados para os dados incluem texto ASCII, elementos Junos XML, comandos Junos OS set e JSON. Você pode especificar o formato dos dados de configuração incluindo explicitamente o format parâmetro no Config método de utilidade pública load() ou adicionando a extensão apropriada ao arquivo de dados de configuração. Se você não especificar um formato, o padrão é XML.

Nota:

A partir do Junos PyEZ Release 1.2, o Junos PyEZ detecta automaticamente o formato quando você fornece os dados de configuração como uma string.

A Tabela 2 resume os formatos suportados para os dados de configuração e o valor correspondente para a extensão e format parâmetro do arquivo. Ao usar a formatação do Junos XML para os dados de configuração, você deve utilizar os dados na tag de nível <configuration> superior.

Nota:

Você não precisa incluir dados de configuração que sejam formatados como texto ASCII, comandos Junos OS set ou JSON, <configuration-text><configuration-set>ou <configuration-json> tags conforme necessário ao configurar o dispositivo diretamente dentro de uma sessão netconf.

Tabela 2: Especifique o formato para dados de configuração

Formato de dados de configuração

Extensão

parâmetro do formato

Texto da ASCII

.conf, .text, .txt

Texto

Notação de objetos JavaScript (JSON)

.Json

Json

Comandos do Junos OS set

.Definir

Definir

Elementos do Junos XML

.Xml

Xml

Nota:

Quando o parâmetro ou o overwrite parâmetro estiver definidoTrue, você não pode usar o formato de comando do Junos OSset.update

Nota:

Dispositivos que executam o Junos OS Release 16.1R1 ou posteriores suportam o carregamento de dados de configuração no formato JSON.

Especifique a localização dos dados de configuração

O Junos PyEZ permite carregar dados de configuração como strings, arquivos, objetos XML ou objetos Jinja2 Template. Os arquivos podem conter trechos de dados de configuração ou modelos Jinja2.

A Tabela 3 resume os parâmetros de load() método que você usa para passar os dados de configuração ou fazer referência à sua localização. Você deve sempre especificar o formato dos dados, incluindo o format parâmetro na chamada de método, exceto ao usar strings, objetos XML ou arquivos que tenham o formato indicado pela extensão do arquivo. Ao usar modelos Jinja2, inclua o template_vars parâmetro para ser aprovado no cookies de variáveis de modelo necessárias.

Tabela 3: Fazendo referência aos dados de configuração no método de carga()

Parâmetro

Fonte de dados de configuração

Descrição

format Requisitos de parâmetros

path

Arquivo local

Caminho para um arquivo no servidor de gerenciamento de configuração local contendo dados de configuração formatados como texto ASCII, elementos Junos XML, comandos Junos OS set ou JSON.

Você deve incluir o format parâmetro quando a extensão do arquivo não indicar o formato dos dados.

template

Objeto modelo Jinja2

Objeto modelo Jinja2 pré-carregado.

Inclua o template_vars parâmetro na lista de argumentos do load() método para fazer referência a um cookies contendo quaisquer variáveis de modelo Jinja2 necessárias.

Você deve incluir o format parâmetro quando a extensão do arquivo não indicar o formato dos dados.

template_path

Arquivo modelo local de Jinja2

Caminho para um arquivo no servidor de gerenciamento de configuração local contendo um modelo Jinja2 formatado como texto ASCII, elementos Junos XML, comandos Junos OS set ou JSON.

Inclua o template_vars parâmetro na lista de argumentos do load() método para fazer referência a um cookies contendo quaisquer variáveis de modelo Jinja2 necessárias.

Você deve incluir o format parâmetro quando a extensão do arquivo não indicar o formato dos dados.

url

Arquivo remoto

Caminho para um arquivo localizado no dispositivo Junos ou em uma URL remota que é acessível a partir do dispositivo Junos usando uma URL ftp ou hypertext Transfer Protocol (HTTP).

Você deve incluir o format parâmetro quando a extensão do arquivo não indicar o formato dos dados.

vargs[0]

Objeto XML

String

Objeto XML ou uma string que contém dados de configuração formatados como texto ASCII, elementos Junos XML, comandos Junos OS set ou JSON.

O Junos PyEZ detecta automaticamente o formato dos dados de configuração neste caso, e o format parâmetro não é necessário.

Carregue dados de configuração de um arquivo local ou remoto

O Junos PyEZ permite carregar dados de configuração formatados como texto ASCII, elementos Junos XML, comandos Junos OS set ou JSON de um arquivo local ou remoto.

Para carregar dados de configuração de um arquivo local no servidor de gerenciamento de configuração, defina o load() parâmetro do path método para o caminho absoluto ou relativo do arquivo. Por exemplo:

Você também pode carregar dados de configuração de um arquivo localizado no dispositivo Junos ou em uma URL que é acessível a partir do dispositivo Junos. Para carregar dados de configuração de um arquivo no dispositivo Junos, definir o url parâmetro para o caminho absoluto ou relativo do arquivo no dispositivo alvo e incluir quaisquer outros parâmetros necessários para a operação de carga. Por exemplo:

Para carregar dados de configuração de um arquivo em uma URL remota, definir o url parâmetro para a localização ftp ou URL de protocolo de transferência de hipertexto (HTTP) de um arquivo remoto e incluir quaisquer outros parâmetros necessários para a operação de carga. Por exemplo:

Para obter informações detalhadas sobre como especificar a URL, veja o url atributo do protocolo Junos XML < configuração de carga> operação.

Se o arquivo não indicar o formato dos dados de configuração usando uma das extensões de arquivo aceitas conforme listado em Especifique o formato dos dados de configuração para carregar, então você deve especificar o formato incluindo o format parâmetro na lista de parâmetros do load() método. Por exemplo:

Para obter informações sobre o carregamento de dados de configuração de modelos ou arquivos modelo Jinja2, consulte dados de configuração de carga usando modelos Jinja2.

Dados de configuração de carga de uma corda

Para carregar dados de configuração que são formatados como texto ASCII, elementos Junos XML, comandos Junos OS set ou JSON de uma string, incluam a corda como o primeiro argumento na lista de argumentos do load() método. O Junos PyEZ detecta automaticamente o formato dos dados de configuração em strings, de modo que o format parâmetro seja opcional neste caso.

Os trechos de código a seguir apresentam uma amostra de strings multiline contendo dados de configuração nos diferentes formatos e nas chamadas correspondentes ao load() método. O parâmetro opcional format está explicitamente incluído em cada exemplo para clareza. Nos exemplos, cu é uma instância do Config utilitário, que opera no dispositivo Junos alvo.

  • Para dados de configuração formatados como texto ASCII:

    Carregue os dados de configuração fornecendo a string como o primeiro argumento da lista e especifique format="text"opcionalmente.

  • Para dados de configuração formatados como Junos XML:

    Carregue os dados de configuração fornecendo a string como o primeiro argumento da lista e especifique format="xml"opcionalmente.

  • Para dados de configuração formatados como o Junos OS set comanda:

    Carregue os dados de configuração fornecendo a string como o primeiro argumento da lista e especifique format="set"opcionalmente.

  • Para dados de configuração formatados usando JSON:

    Carregue os dados de configuração fornecendo a string como o primeiro argumento da lista e especifique format="json"opcionalmente.

Dados de configuração de carga formatados como um objeto XML

Para carregar dados de configuração formatados como um objeto XML, inclua o objeto como o primeiro argumento na lista de argumentos do load() método e forneça quaisquer outros parâmetros necessários. Como o formato padrão para dados de configuração é XML, você não precisa incluir explicitamente o format parâmetro na chamada do método.

O código a seguir apresenta um objeto XML e a chamada correspondente ao load() método:

Dados de configuração de carga usando modelos Jinja2

O Junos PyEZ oferece suporte ao uso de modelos Jinja2 para renderizar dados de configuração do Junos. Jinja é um mecanismo de modelo para Python que permite que você gere documentos a partir de modelos predefinidos. Os templates, que são arquivos de texto na linguagem desejada, oferecem flexibilidade por meio do uso de expressões e variáveis. Você pode criar dados de configuração do Junos usando modelos Jinja2 em um dos formatos de configuração suportados, que inclui texto ASCII, elementos Junos XML, comandos Junos OS set e JSON. O Junos PyEZ usa o modelo Jinja2 e um template fornecido de variáveis para renderizar os dados de configuração.

Os modelos Jinja2 oferecem um método poderoso para gerar dados de configuração, especialmente para estrofes de configuração semelhantes. Por exemplo, em vez de adicionar manualmente as mesmas declarações de configuração para cada interface em um dispositivo, você pode criar um modelo que itera em uma lista de interfaces e cria as declarações de configuração necessárias para cada uma delas. Em Jinja, os blocos são delimitados por '{%' e '%}' e as variáveis são fechadas dentro de '{{' e '}}'.

O modelo Jinja2 da amostra a seguir gera dados de configuração que permitem o MPLS na unidade lógica 0 para cada interface em uma determinada lista e também configura a interface sob os protocolos MPLS e RSVP.

No código Junos PyEZ, o componente correspondente das variáveis de modelo Jinja2 é:

Para carregar o modelo Jinja2 no código Junos PyEZ, definir o template_path parâmetro para o caminho do arquivo template e definir o template_vars parâmetro para o níquete de variáveis de modelo. Se você não usar uma das extensões de arquivo aceitas para indicar o formato dos dados de configuração, então você deve incluir o format parâmetro na lista de parâmetros do load() método.

Nota:

Se você estiver fornecendo um objeto Jinja2 Template pré-carregado, você deve usar o template parâmetro em vez do template_path parâmetro na lista de argumentos do load() método.

O Junos PyEZ usa o modelo Jinja2 e o manual de variáveis para renderizar os seguintes dados de configuração, que são então carregados na configuração do candidato e comprometidos no dispositivo:

O vídeo a seguir apresenta uma curta sessão de Python que demonstra como usar um modelo Jinja2 para configurar um dispositivo Junos.

Para obter mais informações sobre Jinja2, veja a documentação do Jinja2 em https://jinja.pocoo.org/docs/.

Reverta a configuração

Os dispositivos Junos armazenam uma cópia da configuração mais recentemente comprometida e até 49 configurações anteriores, dependendo da plataforma. Você pode reverter para qualquer uma das configurações armazenadas. Isso é útil quando as mudanças de configuração causam resultados indesejáveis, e você deseja reverter para uma configuração de trabalho conhecida. A reversão da configuração é semelhante ao processo de fazer alterações de configuração no dispositivo, mas em vez de carregar dados de configuração, você realiza uma reversão, que substitui toda a configuração do candidato por uma configuração previamente comprometida.

O método de classe rollback() Junos PyEZ jnpr.junos.utils.config.Config permite que você reverta a configuração em um dispositivo Junos. Para reverter a configuração, ligue para o rollback() método e defina o rb_id argumento para a ID da configuração de reversão. Os valores de ID válidos são 0 (zero, para a configuração mais recentemente comprometida) por meio de um a menos do que o número de configurações anteriores armazenadas (o máximo é 49). Se você omitir esse parâmetro na chamada do método, ele é padrão para 0.

O exemplo a seguir solicita a restauração da ID da configuração, a reversão da configuração, a impressão das diferenças de configuração e, em seguida, confirma a configuração para torná-la a configuração ativa no dispositivo.

Para um exemplo mais extenso que inclua o manuseio de erros, veja Exemplo: use o Junos PyEZ para reverter a configuração.

Carregue a configuração de resgate

Uma configuração de resgate permite que você defina uma configuração de trabalho conhecida ou uma configuração com um estado conhecido que você pode restaurar a qualquer momento. Você usa a configuração de resgate quando precisa reverter para uma configuração conhecida ou como último recurso se a configuração do seu roteador ou switch e os arquivos de configuração de backup ficarem danificados sem reparo. Quando você cria uma configuração de resgate, o dispositivo salva a configuração mais recentemente comprometida como a configuração de resgate.

O utilitário Junos PyEZ jnpr.junos.utils.config.Config permite que você gerencie a configuração de resgate em dispositivos Junos. Depois de criar uma instância da Config classe, você usa o rescue() método para manejar a configuração de resgate. Você especifica a ação a ser executada na configuração de resgate configurando o parâmetro do rescue() método action para a operação desejada.

Para carregar a configuração de resgate existente na configuração do candidato, especifique action="reload". Se não houver configuração de resgate, a operação de carga retorna False. Após o carregamento da configuração de resgate, você deve comprometer a configuração para torná-la a configuração ativa no dispositivo.

O exemplo a seguir carrega e confirma a configuração de resgate, se houver um:

Para obter informações sobre a criação, recuperação ou exclusão da configuração de resgate e, por exemplo, veja Use o Junos PyEZ para gerenciar a configuração de resgate em dispositivos Junos.

Confirmar a configuração

Depois de modificar a configuração, você deve comprometer a configuração para torná-la a configuração ativa no dispositivo. Quando você usa o Config utilitário para fazer alterações de configuração não estruturadas em um dispositivo, você confirma a configuração do candidato ligando para o commit() método.

Para obter mais informações sobre a operação de confirmação e opções de confirmação suportadas nos scripts Junos PyEZ, consulte Use Junos PyEZ para comprometer a configuração.

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
1.2
A partir do Junos PyEZ Release 1.2, o Junos PyEZ detecta automaticamente o formato quando você fornece os dados de configuração como uma string.