Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Exemplo: use o Junos PyEZ para carregar dados de configuração de um arquivo

A biblioteca Junos PyEZ permite que você realize tarefas operacionais e de configuração em dispositivos Junos. Este exemplo usa o utilitário Junos PyEZ jnpr.junos.utils.config.Config para carregar dados de configuração de um arquivo local no servidor de gerenciamento de configuração 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.0 ou posterior

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

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

Visão geral

Este exemplo apresenta um aplicativo Python que usa o utilitário Junos PyEZ Config para habilitar um novo script de operação na configuração do dispositivo especificado. O arquivo junos-config-add-op-script.conf , localizado no servidor de gerenciamento de configuração, contém os dados de configuração relevantes formatados como texto ASCII.

O aplicativo Python importa a Device classe, que lida com a conexão com o dispositivo Junos; a Config classe, que é usada para fazer mudanças de configuração não estruturadas no dispositivo alvo; e exigiu exceções do módulo, que jnpr.junos.exception contém exceções encontradas ao gerenciar dispositivos Junos. Este exemplo vincula a Config instância à Device instância em vez de criar uma variável autônoma para a instância da Config classe.

Após criar a Device instância para o dispositivo alvo, o open() método estabelece uma sessão de conexão e NETCONF com o dispositivo. Os Config métodos de utilidade então bloqueiam a configuração do candidato, carregam as mudanças de configuração na configuração do candidato como uma load merge operação, comprometem a configuração do candidato e, em seguida, desbloqueiam.

O parâmetro do load() método path é definido para o caminho do arquivo de configuração. Como a extensão do arquivo de configuração indica o formato dos dados de configuração, o format parâmetro é omitido da lista de argumentos. A configuração merge=True indica que o dispositivo deve realizar uma load merge operação.

Após a conclusão das operações de configuraçã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 exceções, como LockError erros que ocorrem ao bloquear a configuração e CommitError para erros que ocorrem durante a operação de confirmação. O aplicativo também inclui código para lidar com quaisquer exceções adicionais que possam ocorrer.

Configuração

Criar o arquivo de dados de configuração

Procedimento passo a passo

Para criar o arquivo de dados de configuração que é usado pelo aplicativo Junos PyEZ:

  1. Crie um novo arquivo com a extensão apropriada com base no formato dos dados de configuração, que neste exemplo é o texto ASCII.

  2. Inclua as alterações de configuração desejadas no arquivo, por exemplo:

Crie o aplicativo Junos PyEZ

Procedimento passo a passo

Para criar um aplicativo Python que usa o Junos PyEZ para fazer mudanças de configuração em um dispositivo Junos:

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

  2. Inclua quaisquer variáveis necessárias, o que, por exemplo, inclui o nome de host do dispositivo gerenciado e o caminho até o arquivo contendo os dados de configuração.

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

  4. 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.

  5. Vincule a Config instância à Device instância.

  6. Bloqueie a configuração.

  7. Carregue as mudanças de configuração e lide com quaisquer erros.

  8. Comprometa a configuração.

  9. Desbloqueie a configuração.

  10. Termine a sessão netconf e encerre a conexão com o dispositivo.

Resultados

No servidor de gerenciamento de configuração, revise 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 configuração

Propósito

Verifique se a configuração foi atualizada corretamente no dispositivo Junos.

Ação

Faça login no dispositivo Junos e visualizá-lo, confirmar histórico e registrar arquivos para verificar a configuração e confirmar. Por exemplo:

Significado

A configuração e o conteúdo do arquivo de registro indicam que as declarações de configuração corretas foram configuradas e comprometidas com sucesso no dispositivo.

Solucionando problemas

Solucionar erros de tempo limite

Problema

O código Junos PyEZ gera uma mensagem RpcTimeoutError ou uma mensagem TimeoutExpiredError e falha em atualizar a configuração do dispositivo.

O tempo padrão de um RPC NETCONF para um tempo de saída é de 30 segundos. Grandes mudanças de configuração podem exceder esse valor, fazendo com que a operação se esvaia antes que a configuração possa ser enviada e comprometida.

Solução

Para acomodar mudanças de configuração que possam exigir um tempo de confirmação maior do que o intervalo de tempo limite padrão, defina o intervalo de intervalo de intervalo para um valor apropriado e reexamina o código. Para configurar o intervalo, defina a Device timeout propriedade a um valor apropriado ou inclua o timeout=seconds argumento quando você liga para o commit() método para cometer os dados de configuração em um dispositivo. Por exemplo:

Solucionar problemas de bloqueio de configuração

Problema

O código Junos PyEZ gera uma mensagem LockError indicando que a configuração não pode ser bloqueada. Por exemplo:

Um erro de bloqueio de configuração pode ocorrer pelos seguintes motivos:

  • Outro usuário tem um bloqueio exclusivo na configuração.

  • Outro usuário fez alterações no banco de dados de configuração compartilhada, mas ainda não comprometeu as mudanças.

  • O usuário que executa o código Junos PyEZ não tem permissões para configurar o dispositivo.

Solução

Se outro usuário tiver um bloqueio exclusivo na configuração ou tiver modificado a configuração, aguarde até que a fechadura seja liberada ou as alterações sejam cometidas e execute o código novamente. Se a causa do problema for que o usuário não tem permissões para configurar o dispositivo, execute o aplicativo com um usuário que tenha as permissões necessárias ou, se apropriado, configure o dispositivo Junos para dar ao usuário atual as permissões necessárias para fazer as alterações.

Solucionar problemas de mudança de configuração

Problema

O código Junos PyEZ gera uma mensagem do ConfigLoadError indicando que a configuração não pode ser modificada devido a um problema de permissões.

Essa mensagem de erro pode ser gerada quando o usuário que executa o código Junos PyEZ tiver permissão para alterar a configuração, mas não tem permissão para alterar a parte desejada da configuração.

Solução

Execute o aplicativo com um usuário que tenha as permissões necessárias ou, se apropriado, configure o dispositivo Junos para dar ao usuário atual as permissões necessárias para fazer as alterações.