Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Criar e executar playbooks do Ansible para gerenciar dispositivos Junos

Você pode criar playbooks do Ansible que executam módulos da Juniper Networks para realizar tarefas operacionais e de configuração em dispositivos que executam o Junos OS e dispositivos que executam o Junos OS Evolved.

A Juniper Networks oferece módulos Ansible que permitem realizar tarefas operacionais e de configuração em dispositivos Junos. Este tópico descreve como criar um playbook simples do Ansible para executar módulos da Juniper Networks em dispositivos Junos.

Visão geral do manual

Você cria playbooks do Ansible para lidar com tarefas de gerenciamento mais complexas. Os playbooks consistem em uma ou mais reproduções, ou grupos de tarefas, que operam em um conjunto de hosts definidos. Cada jogada de manual deve especificar:

  • Os hosts nos quais as tarefas operam

  • A lista de tarefas a serem executadas em cada host

  • Quaisquer variáveis necessárias ou parâmetros de módulo, incluindo parâmetros de autenticação, se você não os tiver definido em outro lugar

Todos os hosts do Ansible aos quais um playbook faz referência devem ser definidos no arquivo de inventário do Ansible. O local padrão para o arquivo de inventário do Ansible é /etc/ansible/hosts.

Um guia estratégico executa tarefas em um host chamando módulos. Os módulos Ansible da Juniper Networks são distribuídos por meio da coleção, que está hospedada juniper.device no Ansible Galaxy. Para usar os módulos da Juniper Networks em seu playbook, você deve instalar a coleção no nó de controle do Ansible. Para obter mais informações sobre a coleção e os módulos, consulte Entender o Ansible para coleções e módulos do Junos OS.

Os módulos da Juniper Networks não exigem Python em dispositivos Junos porque usam a API XML do Junos e o NETCONF para fazer a interface com o dispositivo. Assim, para realizar operações em dispositivos Junos, você deve executar módulos localmente no nó de controle do Ansible, onde o Python está instalado. Você pode executar os módulos localmente definindo os parâmetros apropriados de conexão do Ansible e do sistema operacional de rede. Para obter informações sobre os parâmetros e valores de conexão para módulos na juniper.device coleção, consulte Como executar módulos em dispositivos Junos.

Por padrão, o Ansible reproduz automaticamente a coleta de fatos do sistema do host remoto. No entanto, quando você executa as execuções localmente, o Ansible reúne os fatos do nó de controle do Ansible em vez do host remoto. Para evitar a coleta de fatos para o nó de controle, inclua gather_facts: no no manual.

Quando você executa os módulos da Juniper Networks usando uma sessão NETCONF sobre SSH, o dispositivo Junos deve ter o NETCONF habilitado. Recomendamos que você crie uma tarefa simples no playbook que teste explicitamente se o NETCONF está habilitado em cada dispositivo antes de executar outras tarefas. Se essa tarefa falhar para qualquer host, por padrão, o Ansible não executará as tarefas restantes para esse host. Sem esse teste, você pode obter um erro de conexão genérico durante a execução do guia estratégico que não indica se esse problema ou outro problema é a causa de falhas.

Você escreve manuais no formato YAML. O YAML diferencia espaços em branco e o recuo é significativo. Portanto, seus guias estratégicos sempre devem usar espaços em vez de tabulações. No YAML, os itens precedidos por um hífen (-) são itens de lista e a key: value notação representa um hash. Para obter informações detalhadas sobre como criar playbooks do Ansible, consulte a documentação oficial do Ansible em https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks.html.

Criar um playbook do Ansible

Antes de começar:

  • Escolha o conjunto de módulos que você usará para gerenciar dispositivos Junos. A juniper.device coleção inclui os juniper.device módulos originais e os junipernetworks.junos módulos.

  • Atualize seu arquivo de inventário com as variáveis apropriadas de conexão do Ansible e do sistema operacional de rede para seu conjunto de módulos, conforme descrito em Entender o arquivo de inventário do Ansible ao gerenciar dispositivos Junos.

Para criar um manual simples para realizar tarefas em dispositivos Junos:

  1. Em seu editor favorito, crie um novo arquivo com um nome de guia estratégico descritivo que use a extensão de arquivo .yaml .
  2. Inclua três traços para indicar o início do documento YAML.
  3. Forneça um nome descritivo para a peça.
  4. Defina uma lista delimitada por vírgulas (ou delimitada por dois pontos) dos hosts ou grupos de hosts nos quais os módulos irão operar; especifique all para indicar todos os hosts no arquivo de inventário.

    O arquivo de inventário do Ansible deve definir todos os hosts ou grupos de hosts que você referenciar no playbook.

  5. (Opcional) Incluir gather_facts: no para impedir a coleta de fatos para o host de destino, que para conexões locais é o nó de controle do Ansible.
  6. (Opcional) Faça referência à coleção.

    Você pode definir a collections chave no guia estratégico e, em seguida, fazer referência apenas ao nome do módulo na tarefa. No entanto, o método recomendado é omitir a chave e, em vez disso, referenciar o conteúdo da collections coleção por seu nome de coleção totalmente qualificado (FQCN).

    Este exemplo omite a collections chave e usa o nome da coleção totalmente qualificado.

  7. Defina uma seção de tarefas e inclua uma ou mais tarefas como itens de lista.
  8. (Opcional) Como uma verificação adicional para sessões NETCONF sobre SSH, crie uma tarefa para verificar a conectividade NETCONF para cada dispositivo Junos.
  9. Criar tarefas que usem os módulos da Juniper Networks e fornecer os parâmetros necessários de conexão e autenticação.

    Este exemplo usa chaves SSH carregadas em um agente de chave SSH e não fornece explicitamente credenciais para o facts módulo no playbook.

  10. (Opcional) Defina tarefas adicionais ou jogadas adicionais conforme necessário.

Execute o manual

O playbook neste exemplo usa o seguinte arquivo de inventário do Ansible, que define a conexão como local.

Para executar o manual:

  • Emita o ansible-playbook comando no nó de controle e forneça o caminho do guia estratégico e todas as opções necessárias.