Use o Junos PyEZ para configurar dispositivos Junos
RESUMO Você pode usar o utilitário Junos PyEZ Config
ou tabelas e visualizações 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. A conta do usuário usada para fazer alterações de configuração deve ter permissões para alterar as partes relevantes da configuração em cada dispositivo. Se você não definir um usuário, o usuário será inadimplente para $USER
.
As seções a seguir comparam mudanças de configuração estruturadas e não estruturadas e fornecem detalhes sobre o processo de configuração do Junos PyEZ ao fazer alterações de configuração não estruturadas usando o Config
utilitário ou mudanças de configuração estruturadas usando Tabelas e visualizações.
Entender as mudanças de configuração estruturadas e não estruturadas
Alterações de configuração não estruturadas, que consistem em carregar 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), são realizadas usando o jnpr.junos.utils.config.Config
utilitário. Por outro lado, as mudanças de configuração estruturadas usam tabelas e visualizações de configuração do Junos PyEZ para definir recursos específicos para configurar, por exemplo, uma conta de usuário do Junos OS. Quando você adiciona a Tabela à estrutura Junos PyEZ, o Junos PyEZ cria dinamicamente uma classe de configuração para o recurso, o que permite configurar esse recurso de forma programática em um dispositivo.
Quando você usa o Config
utilitário para fazer alterações de configuração não estruturadas em dispositivos Junos, você pode alterar qualquer parte da configuração, mas você deve usar um dos formatos aceitos para os dados de configuração, bem como a sintaxe correta para esse formato. Os usuários que estejam familiarizados com os formatos de configuração suportados e queiram a opção de modificar qualquer parte da configuração podem favorecer esse método para mudanças de configuração. O Config
utilitário também permite que você reverta para uma configuração previamente comprometida ou carregue a configuração de resgate existente.
As mudanças de configuração estruturadas, por outro lado, exigem que você crie Tabelas e visualizações para definir recursos específicos e apenas permita que você configure os recursos definidos no dispositivo. Quando você define um recurso estruturado, você pode especificar quais declarações de configuração um usuário pode configurar para o recurso, e você também pode definir verificações de tipo e restrição para garantir que os usuários forneçam valores aceitáveis para os dados em seu aplicativo Junos PyEZ. Assim que uma tabela e uma vista forem criadas, elas podem ser facilmente compartilhadas e reutilizadas. Um usuário de Tabela pode configurar programáticamente o recurso em um dispositivo, e o usuário não requer nenhum conhecimento dos formatos de configuração suportados ou de sua sintaxe.
A Tabela 1 resume os dois métodos que o Junos PyEZ oferece suporte para fazer mudanças na configuração.
Tipo de mudança de configuração |
Utilitário |
Escopo |
Formato de dados de configuração |
Informações adicionais |
---|---|---|---|---|
Estruturado |
Tabelas e visualizações |
Limitado às declarações de configuração definidas na Tabela e visualização |
– |
Usado para fazer alterações de configuração direcionadas Não requer conhecimento dos formatos de configuração ou de sua sintaxe |
Desestruturado |
|
Qualquer parte da configuração |
|
Suporta:
|
Este tópico discute o processo geral de configuração e as operações e elementos comuns aos dois métodos de configuração. Para obter informações detalhadas sobre a execução de atualizações de configuração usando o utilitário ou tabelas Config
e visualizações, veja a documentação específica para esse método de configuração.
Para obter mais informações sobre o uso do Config
utilitário para fazer alterações de configuração não estruturadas, veja os seguintes tópicos:
Use o utilitário de configuração Junos PyEZ para configurar dispositivos Junos
Exemplo: use o Junos PyEZ para carregar dados de configuração de um arquivo
Para obter mais informações sobre o uso de tabelas e visualizações de configuração para fazer alterações estruturadas na configuração, veja os seguintes tópicos:
Entendendo o processo geral de configuração
O Junos PyEZ permite que você faça alterações de configuração nos dispositivos Junos. Depois de se conectar com sucesso ao dispositivo, você cria um Config
objeto ou Tabela, dependendo do seu método de configuração preferido e o associa ao Device
objeto. Por exemplo:
Objeto de configuração
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='dc1a.example.com') as dev: cu = Config(dev)
Objeto de tabela
from jnpr.junos import Device from myTables.ConfigTables import ServicesConfigTable with Device(host='dc1a.example.com') as dev: sct = ServicesConfigTable(dev)
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:
-
Bloqueie a configuração usando
lock()
-
Modifique a configuração realizando uma das seguintes ações:
-
Ligue
load()
ao carregar uma nova configuração completa ou modificar partes específicas da configuração -
Chamada
rollback()
para reverter para uma configuração previamente comprometida, conforme descrito na configuração de reversão -
Chamada
rescue()
para carregar a configuração de resgate, conforme descrito na configuração de carregamento do resgate
-
-
Comprometa a configuração usando
commit()
, conforme descrito em Confirmar a configuração e usar o Junos PyEZ para comprometer a configuração -
Desbloqueie a configuração usando
unlock()
Se você usa tabelas e visualizações para fazer alterações estruturadas de configuração em um dispositivo, você pode optar por chamar, lock()
load()
commit()
e unlock()
métodos individualmente, ou pode chamar o set()
método, que chama todos esses métodos automaticamente.
O load()
método executa a mesma função para objetos e Config
objetos de Tabela, mas você fornece parâmetros diferentes dependendo de qual tipo de objeto chama o método.
Como especificar o modo de configuração
Por padrã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 objeto ou Tabela Config
usando um gerenciador de contexto (with ... as
sintaxe) e definir o mode
argumento no modo desejado. Os modos suportados incluem, , , e batch
ephemeral
. dynamic
exclusive
private
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.
Os exemplos a seguir fazem alterações de configuração usando o configure private
modo:
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='dc1a1.example.com') as dev: with Config(dev, mode='private') as cu: cu.load('set system services netconf traceoptions file test.log', format='set') cu.pdiff() cu.commit()
from jnpr.junos import Device from myTables.ConfigTables import ServicesConfigTable with Device(host='dc1a.example.com') as dev: with ServicesConfigTable(dev, mode='private') as sct: sct.ftp = True sct.ssh = True sct.telnet = True sct.append() sct.load() sct.pdiff() sct.commit()
O gerenciador de contexto lida com a abertura e o bloqueio do banco de dados de configuração emprivate
, exclusive
, , dynamic
ou batch
ephemeral
modo. Assim, chamar os lock()
ou set()
métodos em um desses modos resulta em uma LockError
exceção.
O Junos PyEZ permite que você atualize 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.
O banco de dados de configuração efêmero é 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.
Para abrir e configurar a instância padrão do banco de dados de configuração efêmero, inclua o mode='ephemeral'
argumento. Por exemplo:
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: with Config(dev, mode='ephemeral') as cu: cu.load('set protocols mpls label-switched-path to-hastings to 192.0.2.1', format='set') cu.commit()
Para abrir e configurar uma instância definida pelo usuário do banco de dados de configuração efêmero, inclua o mode='ephemeral'
argumento e configure o ephemeral_instance
argumento para o nome da instância.
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: with Config(dev, mode='ephemeral', ephemeral_instance='eph1') as cu: cu.load('set protocols mpls label-switched-path to-hastings to 192.0.2.1', format='set') cu.commit()
Como especificar a operação de carga
No Junos PyEZ, você pode carregar mudanças de configuração usando muitas das mesmas operações de carga que são suportadas no Junos OS CLI. Você especifica a operação de carga desejada incluindo ou omitindo os parâmetros apropriados no set()
método ao fazer alterações de configuração estruturadas usando Tabelas e visualizações, ou no load()
método para alterações de configuração estruturadas ou não estruturadas. A Tabela 2 resume as configurações de parâmetros necessárias para cada tipo de operação de carga.
Como as operações e load update
as load override
operações exigem uma configuração completa, os argumentos e update=True
os overwrite=True
argumentos não devem ser usados ao fazer alterações de configuração usando Tabelas, que apenas modificam declarações específicas na configuração.
Operação de carga |
Argumento |
Descrição |
Primeira versão do Junos PyEZ com suporte |
---|---|---|---|
|
|
Mescle a configuração carregada com a configuração existente. |
1.0 |
|
|
Substitua toda a configuração pela configuração carregada. |
1.0 |
|
|
Carregue dados de configuração de um arquivo de patch. |
2.4.0 |
|
– |
Mescle a configuração carregada com a configuração existente, mas substitua as declarações na configuração existente por aquelas que especificam a |
1.0 |
|
|
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 |
Como criar a configuração ou o objeto da tabela como propriedade da instância do dispositivo
O Device
método de classe bind()
permite que você anexe várias instâncias e métodos à Device
instância. Em seu aplicativo Junos PyEZ, você tem a opção de vincular o Config
objeto ou tabela à Device
instância. A funcionalidade dos métodos não muda, mas a execução do método difere um pouco. Por exemplo:
Como uma variável independente:
with Device(host='dc1a.example.com') as dev: cu = Config(dev) cu.lock()
Como uma propriedade vinculada:
with Device(host='dc1a.example.com') as dev: dev.bind( cu=Config ) dev.cu.lock()