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.devicecoleção inclui osjuniper.devicemódulos originais e osjunipernetworks.junosmó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:
Execute o manual
O playbook neste exemplo usa o seguinte arquivo de inventário do Ansible, que define a conexão como local.
[dc1] dc1a.example.com ansible_host=198.51.100.1 [dc1:vars] ansible_connection=local
Para executar o manual:
-
Emita o
ansible-playbookcomando no nó de controle e forneça o caminho do guia estratégico e todas as opções necessárias.user@ansible-cn:~$ ansible-playbook junos-get-facts.yaml PLAY [Get Device Facts] *************************************************** TASK [Check NETCONF connectivity] ***************************************** ok: [dc1a.example.net] TASK [Retrieve information from Junos devices] **************************** ok: [dc1a.example.net] TASK [Print version] ****************************************************** ok: [dc1a.example.net] => { "junos.version": "19.4R1.10" } PLAY RECAP **************************************************************** dc1a.example.net : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0