Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

A Juniper Networks oferece suporte para o uso de 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 pingar e realizar 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

Hostname

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 o formato de comando. O modelo usa a extensão de arquivo .set para indicar o formato.

  • Arquivos pillar — Defina 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 no diretório /srv/pillar/bgp no salt master.

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

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

  • Estado de arquivo superior — 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 é carregado e comprometido 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 de modelo é colocado no diretório /srv/sal/configurações do mestre salt.

Em seguida, você cria arquivos de pilar separados para cada dispositivo e define os dados de configuração específicos do dispositivo no arquivo. Cada arquivo de pilar define uma BGP_data chave que contém todos os parâmetros variáveis mencionados no modelo de configuração. O arquivo superior do pilar mapeia cada arquivo de pilar 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 estado a junos_bgp_config 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 do pilar 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á for 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 de Established cada peer definido nos dados ou horários do pilares desse dispositivo. Esse estado pressupõe que o BGP esteja em execução 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 pilar 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 usado para gerar a configuração BGP:

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

  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 mestre salt.

  2. Defina 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 às quais o estado de 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 BPG têm um peer-state de Established:

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

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

Resultados

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

Verificação

Verificando a configuração 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 aos dispositivos-alvo e revise a saída.

Significado

O arquivo de estado exige que o peer-state seja igual a Established cada peer. A saída indica que essa condição é atendida para todos os pares em cada dispositivo. Como alternativa, 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 Erros de carga de configuração

Problema

O mestre salt gera um ConfigLoadError erro indicando que ele falhou em carregar a configuração no dispositivo por causa de um erro de sintaxe.

Solução

Salt torna a configuração do Junos OS usando o modelo Jinja2 e os dados de pilar definidos para esse dispositivo. O sal 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.