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ê execute 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 SSH público/privado 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 alterações 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 independente para a instância da Config classe.

Depois de 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 alterações de configuração na configuração do candidato como uma load merge operação, comprometem a configuração do candidato e depois a 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 alterações de configuração em um dispositivo Junos:

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

  2. Inclua quaisquer variáveis necessárias, que para este exemplo incluem o nome de host do dispositivo gerenciado e o caminho até o arquivo que contém 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. Confirmar a configuração.

  9. Desbloqueie a configuração.

  10. Encerre a sessão da NETCONF e feche a conexão com o dispositivo.

Resultados

No servidor de gerenciamento de configuração, analise 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 visualize a configuração, o histórico de confirmações e os arquivos de log para verificar a configuração e confirmar. Por exemplo:

Significado

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

Solucionando problemas

Resolução de problemas de erros de tempo limite

Problema

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

O tempo padrão de um RPC NETCONF para o tempo de saída é de 30 segundos. Grandes mudanças de configuração podem exceder esse valor, fazendo com que a operação fique sem tempo antes que a configuração possa ser carregada 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, definir o intervalo de tempo limite para um valor apropriado e refazer o código. Para configurar o intervalo, configure a Device timeout propriedade a um valor apropriado ou inclua o timeout=seconds argumento quando você liga para o commit() método para confirmar 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.

  • O banco de dados de configuração compartilhada não comprometeu as alterações.

  • 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 comprometidas 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.

Resolução de problemas de erros 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.