Use o Junos PyEZ para comprometer a configuração
O Junos PyEZ permite que você faça mudanças de configuração estruturadas e não estruturadas nos dispositivos Junos. Depois de se conectar ao dispositivo e modificar a configuração, você deve comprometer a configuração para torná-la ativa. Este tópico discute como comprometer a configuração e quais opções de confirmação são suportadas em aplicativos Junos PyEZ.
Como comprometer a configuração do candidato
Quando você usa o utilitário Junos PyEZ jnpr.junos.utils.config.Config
para fazer alterações de configuração não estruturadas em um dispositivo, você confirma a configuração do candidato ligando para o método de Config
instância commit()
. Por exemplo:
from jnpr.junos import Device from jnpr.junos.utils.config import Config from jnpr.junos.exception import ConfigLoadError, CommitError with Device(host='router1.example.com') as dev: with Config(dev, mode='exclusive') as cu: try: cu.load(path='configs/mx_config.conf', merge=True) cu.commit() except (ConfigLoadError, CommitError) as err: print (err)
Para verificar a sintaxe da configuração sem comprometê-la, chame o commit_check()
método no lugar do commit()
método.
cu.commit_check()
Quando você usa tabelas e visualizações de configuração do Junos PyEZ para fazer alterações estruturadas de configuração em um dispositivo, você confirma a configuração do candidato ligando para o set()
método, que automaticamente chama lock()
de , load()
commit()
e unlock()
métodos, ou ligando para os vários métodos individualmente. Por exemplo:
from jnpr.junos import Device from myTables.UserConfigTable import UserConfigTable with Device(host='router1.example.com') as dev: userconfig = UserConfigTable(dev) # ...set the values for the configuration data... userconfig.append() userconfig.set(merge=True)
Da mesma forma, você pode chamar os métodos individuais, como no seguinte exemplo:
from jnpr.junos import Device from myTables.UserConfigTable import UserConfigTable with Device(host='router1.example.com') as dev: userconfig = UserConfigTable(dev) # ...set the values for the configuration data... userconfig.append() userconfig.lock() userconfig.load(merge=True) userconfig.commit() userconfig.unlock()
Se você usar um gerenciador de contexto para criar o objeto ou tabela Config
e definir o mode
argumento para private
, exclusive
, dynamic
, batch
ou ephemeral
, você só ligar load()
e commit()
métodos para configurar o dispositivo. O gerenciador de contexto lida com a abertura, o bloqueio e o fechamento e o desbloqueio do banco de dados, de modo que lock()
chamadas para , unlock()
ou set()
métodos em um desses modos resultam em uma exceção LockError.
Como especificar opções de compromisso
O Junos CLI oferece opções para a operação de confirmação, como adicionar um comentário de confirmação ou sincronizar a configuração em vários mecanismos de roteamento. O Junos PyEZ oferece suporte a muitas dessas mesmas opções de confirmação e algumas opções adicionais, que você pode usar em seu aplicativo Junos PyEZ, incluindo os argumentos apropriados na lista de argumentos do commit()
método. set()
A Tabela 1 descreve as opções de confirmação suportadas e fornece o comando CLI correspondente.
Argumento de opção de confirmação |
Descrição |
Comando CLI |
---|---|---|
|
Registre um comentário para que comprometa a operação no arquivo de log do sistema e no histórico de confirmação do dispositivo. |
|
|
Exija que uma operação de confirmação seja confirmada dentro de um tempo especificado após o compromisso inicial. Caso contrário, reverta para a configuração previamente comprometida. Defina o argumento para |
|
|
Devolva um objeto XML com informações detalhadas sobre o processo de confirmação. |
|
|
Sincronizar e comprometer a configuração em ambos os mecanismos de roteamento, mesmo que haja sessões de configuração abertas ou mudanças de configuração não comprometidas no outro Mecanismo de Roteamento. |
|
|
Ignore os avisos que são levantados durante a operação de confirmação. Defina o argumento para |
– |
|
Sincronizar e comprometer a configuração em ambos os mecanismos de roteamento. |
|
|
Aguarde a conclusão da operação usando o valor especificado como tempo limite. |
– |
Comprometa comentários
Ao cometer a configuração, você pode incluir um breve comentário para descrever a finalidade das mudanças comprometidas. Para registrar um comentário descrevendo as alterações, inclua o comment
parâmetro e uma seqüência de mensagens na commit()
lista de argumentos ou set()
métodos, conforme apropriado. Por exemplo:
cu.commit(comment='Configuring ge-0/0/0 interface')
Incluir o comment
argumento equivale à emissão do comando de commit comment
modo de configuração no CLI. O comentário está logado no arquivo de registro do sistema e incluído no histórico de confirmação do dispositivo, que você pode visualizar emitindo o show system commit
comando no CLI.
Confirmar confirmar
Para exigir que uma operação de confirmação seja confirmada dentro de um tempo especificado após o compromisso inicial, inclua o confirm=minutes
argumento na lista de argumentos ou set()
métodocommit()
, conforme apropriado.
cu.commit(confirm=15)
Se o confirmação não for confirmado dentro do prazo determinado, o dispositivo volta automaticamente para a configuração previamente comprometida e envia uma mensagem de transmissão para todos os usuários logados. O intervalo permitido é de 1 a 65.535 minutos. Você também pode especificar confirm=True
para usar o tempo de reversão padrão de 10 minutos. Para confirmar a operação de confirmação, ligue para o commit()
método.commit_check()
A operação de confirmação confirmada é útil para verificar se uma mudança de configuração funciona corretamente e não impede o acesso do gerenciamento ao dispositivo. Se a mudança impedir o acesso ou causar outros erros, a reversão automática da configuração anterior permite o acesso ao dispositivo após o prazo de reversão passar. Se você perder a conectividade com o dispositivo, você deve emitir o método Junos PyEZ open()
para restaurar a conectividade.
Comprometa detalhes
Você pode revisar os detalhes de toda a operação de confirmação, incluindo o detail=True
argumento na commit()
lista de argumentos ou set()
método. Quando você inclui este argumento, o método devolve um objeto XML com informações detalhadas sobre o processo de confirmação. O valor de devolução é equivalente ao conteúdo fechado pelo <commit-results>
elemento na saída do commit | display detail | display xml
comando na CLI.
from lxml import etree ... commit_detail = cu.commit(detail=True) print (etree.tostring(commit_detail, encoding='unicode'))
Comprometa a sincronização
Se o dispositivo tiver mecanismos de roteamento duplos, você pode sincronizar e comprometer a configuração em ambos os mecanismos de roteamento, incluindo o sync=True
argumento na commit()
lista de argumentos ou set()
método.
cu.commit(sync=True)
Quando você inclui o sync=True
argumento, o dispositivo copia a configuração do candidato armazenada no Mecanismo de Roteamento local para o outro Mecanismo de Roteamento, verifica a correção sintactica do candidato e a compromete em ambos os mecanismos de roteamento. Para forçar a operação a commit synchronize
ter sucesso mesmo que haja sessões de configuração abertas ou alterações de configuração não comprometidas no outro Mecanismo de Roteamento, use o force_sync=True
argumento, o que faz com que o dispositivo encerre quaisquer sessões de configuração no outro Mecanismo de Roteamento antes de sincronizar e comprometer a configuração.
cu.commit(force_sync=True)
Confirmar e confirmar tempo de verificação
O tempo padrão para um RPC sair é de 30 segundos. Grandes mudanças de configuração podem exceder esse valor, fazendo com que uma operação de confirmação ou confirmação de verificação seja cronometrada antes que a configuração possa ser enviada, verificada e comprometida. Para acomodar mudanças de configuração que possam exigir uma verificação de confirmação ou um tempo de confirmação maior do que o intervalo de tempo limite padrão, incluir o timeout=seconds
argumento na lista de argumentos ou set()
métodos commit_check()
commit()
e definir o intervalo de intervalo de tempo para um valor apropriado. Por exemplo:
cu.commit_check(timeout=60) cu.commit(timeout=360)
Ignorar avisos
O Junos PyEZ levanta uma exceção RpcError
quando a resposta do RPC contém <rpc-error>
elementos com uma gravidade de aviso ou superior. Nos casos em que for necessário ou desejável eliminar as RpcError
exceções levantadas em resposta a avisos, você pode incluir o commit()
parâmetro do ignore_warning
método. Por exemplo:
cu.commit(ignore_warning=True)
Para obter mais informações sobre o uso do ignore_warning
parâmetro, consulte Supressão de exceções do RpcError levantadas para avisos em aplicativos Junos PyEZ.