Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Exemplo: use o sal para configurar dispositivos que executam o Junos OS

A Juniper Networks oferece suporte para usar o Salt para gerenciar dispositivos que executam o Junos OS. Este exemplo usa Salt para configurar vários dispositivos que executam o Junos OS.

Requisitos

Este exemplo usa os seguintes componentes de hardware e software:

  • Três roteadores da Série MX executando o Junos OS com NETCONF habilitado

  • Mestre de sal com os seguintes requisitos:

    • Versão salt 3001 ou posterior

    • Pode ping e executar operações nos dispositivos que executam o Junos OS

Visão geral

Este exemplo define um estado Salt que configura sessões de peering BGP nos dispositivos alvo que executam o Junos OS. A Tabela 1 descreve os nomes de host do dispositivo, IDs proxy e arquivos específicos do dispositivo.

Tabela 1: Informações do dispositivo

Nome de host

Proxy ID

Arquivo de configuração de proxy

(/srv/pilar)

Arquivo de dados BGP

(/srv/pilar/bgp)

r1

r1

r1-proxy.sls

r1.sls

r2

r2

r2-proxy.sls

r2.sls

r3

r3

r3-proxy.sls

r3.sls

O exemplo usa os seguintes componentes:

  • Modelo de configuração jinja2 — define a configuração BGP como um modelo Jinja usando set formato de comando. O modelo usa a extensão de arquivo .set para indicar o formato.

  • Arquivos pilar — Definir os dados de configuração específicos do dispositivo exigidos pelo modelo Jinja2. Os dados de cada dispositivo são armazenados em um arquivo separado sob o diretório /srv/pillar/bgp no mestre Salt.

  • Arquivo superior do pilar — mapeia cada arquivo de pilares para o minion proxy apropriado.

  • Arquivo de estado — define o estado a ser aplicado aos dispositivos-alvo. Neste caso, o arquivo de estado usa a junos.install_config função para aplicar a configuração BGP a um dispositivo.

  • Estado superior do arquivo — mapeia o arquivo de estado para os dispositivos nos quais o estado deve ser aplicado.

Neste exemplo, você cria um modelo Jinja2 para gerar a configuração BGP que é carregada e comprometida no dispositivo. O modelo substitui as variáveis por dados de configuração específicos do dispositivo para que possam ser reutilizados conforme necessário. O arquivo modelo é colocado sob o diretório /srv/sal/configs no mestre salt.

Em seguida, você cria arquivos de pilares separados para cada dispositivo e define os dados de configuração específicos do dispositivo no arquivo. Cada arquivo pilar define uma BGP_data chave que contém todos os parâmetros variáveis que são mencionados no modelo de configuração. O arquivo superior do pilar mapeia cada arquivo de pilares para seu respectivo minion proxy. Armazenar os dados em pilares garante que cada minion proxy só possa acessar os dados desse dispositivo.

O arquivo de estado junos_bgp_config.sls define um estado que usa a junos.install_config função para aplicar a configuração BGP no modelo. Quando invocada, a função bloqueia o banco de dados de configuração, carrega a configuração específica para o dispositivo alvo, compromete a configuração e, em seguida, desbloqueia o banco de dados. A função inclui o diffs_file parâmetro para armazenar as diferenças de configuração em um arquivo no servidor de minion proxy. O nome do arquivo usa o id grão para gerar nomes de arquivo específicos do dispositivo para os arquivos de saída.

O arquivo superior do estado aplica o junos_bgp_config estado a qualquer minion com uma BGP_data chave de pilar com qualquer valor. Quando você executa um estado alto ou aplica esse estado a um dispositivo, Salt usa o modelo e os dados dos pilares para gerar a configuração específica para o alvo e, em seguida, invoca a junos.install_config função para carregar e comprometer a configuração no dispositivo. Se a configuração já estiver aplicada, a junos.install_config função não reaplica a configuração.

Depois de configurar os dispositivos, você aplica o junos_bgp_verify_peers estado. Esse estado executa o get-bgp-neighbor-information RPC em cada dispositivo até que ele devolva um peer-state valor Established para cada peer definido nos dados ou horários pilares desse dispositivo. Esse estado assume que o BGP está sendo executado no dispositivo.

Configuração

Para configurar os dispositivos que usam Salt, execute as tarefas incluídas nesta seção.

Definir os dados do pilar

Procedimento passo a passo

Para definir os dados de pilares que são usados com o modelo Jinja2 para gerar a configuração BGP:

  1. No mestre Salt, crie um arquivo separado chamado /srv/pillar/bgp/hostname.sls para cada dispositivo gerenciado.

  2. Defina os dados do host r1 no arquivo r1.sls .

  3. Defina os dados do host r2 no arquivo r2.sls .

  4. Defina os dados do host r3 no arquivo r3.sls .

  5. No arquivo superior do pilar, mapeie o arquivo pilar com os dados BGP sob o ID do dispositivo apropriado para permitir que o dispositivo acesse os dados.

  6. Atualize os dados dos pilares.

Definir o modelo Jinja2

Procedimento passo a passo

Para criar o modelo Jinja2 que é usado para gerar a configuração BGP:

  1. Crie um arquivo chamado /srv/salt/configs/junos-config-bgp-template.set no mestre do sal.

  2. Adicione o modelo de configuração BGP ao arquivo e reserve-o.

Definir os Estados

Definir o arquivo de estado de configuração

Para definir o arquivo de estado que aplica a configuração:

  1. Crie um arquivo chamado /srv/salt/junos_bgp_config.sls no salt master.

  2. Definir um estado que usa a junos.install_config função para aplicar a configuração BGP no modelo.

    Nota:

    Se o seu modelo incluir apenas variáveis internas de sal, como dados de pilares, dados de grãos e funções, a junos.install_config função pode precisar ser definida template_vars: True para renderizar o modelo.

  3. No arquivo superior, defina as metas a que o estado junos_bgp_config se aplica. Os alvos incluem todos os dispositivos que têm um BGP_data item pilar definido.

Definir o arquivo de estado de verificação BGP

Para definir o estado que verifica que os pares do BPG têm um peer-state de Established:

  1. Crie um arquivo chamado /srv/salt/junos_bgp_verify_peers.sls no salt master.

  2. Defina um estado que usa a junos.rpc função para executar o get-bgp-neighbor-information RPC e, em seguida, verifica a resposta do RPC para obter um peer-state de Established.

Resultados

Quando você executa um estado superior, os estados no top.sls arquivo são aplicados aos dispositivos alvo apropriados.

Verificação

Verificando a configuração do BGP

Propósito

Verifique se a sessão BGP está estabelecida para cada endereço vizinho.

Ação

Aplique o junos_bgp_verify_peers estado nos dispositivos-alvo e analise a saída.

Significado

O arquivo de estado exige que seja peer-state igual para Established cada peer. A saída indica que essa condição é atendida para todos os pares em cada dispositivo. Alternativamente, você pode usar a junos.cli função para executar o show bgp summary comando nos dispositivos e revisar a saída para verificar se a sessão BGP está estabelecida para cada endereço vizinho.

Solucionando problemas

Resolução de problemas de erros de carga de configuração

Problema

O mestre do Salt gera um ConfigLoadError erro que indica que ele falhou em carregar a configuração no dispositivo devido a um erro de sintaxe.

Solução

Salt torna a configuração do Junos OS usando o modelo Jinja2 e os dados de pilares definidos para esse dispositivo. Salt gera um erro de sintaxe quando o modelo Jinja2 produz uma configuração inválida. Para corrigir esse erro, atualize o modelo Jinja2 para corrigir o elemento identificado pela bad_element chave na mensagem de erro.