NESTA PÁGINA
Crie e execute ansible Playbooks para gerenciar dispositivos Junos
RESUMO Você pode criar playbooks ansible que executam módulos da Juniper Networks para realizar tarefas operacionais e de configuração em dispositivos Junos.
A Juniper Networks oferece módulos Ansible que permitem que você realize tarefas operacionais e de configuração em dispositivos Junos. Este tópico descreve como criar um manual ansível simples para executar módulos da Juniper Networks em dispositivos Junos.
Você cria playbooks ansible para lidar com tarefas de gerenciamento mais complexas. Os playbooks consistem em uma ou mais jogadas, ou grupos de tarefas, que operam em um conjunto de hosts definidos. Os hosts ansible que são mencionados no manual de jogadas devem ser definidos no arquivo de inventário Ansible, que por padrão reside em /etc/ansible/hosts.
Cada playbook deve especificar:
-
Os hosts em que as tarefas operam
-
A lista de tarefas a serem executadas em cada host
-
Quaisquer variáveis ou parâmetros de módulo necessários, incluindo parâmetros de autenticação, se estes não forem definidos em outro lugar
Um manual de jogadas executa tarefas em um host, chamando módulos. Os módulos Ansible da Juniper Networks são distribuídos por meio da juniper.device
coleção, que é hospedada na Ansible Galaxy. Para usar os módulos da Juniper Networks em sua cartilha, você deve instalar a coleção no nó de controle Ansible. Para obter mais informações sobre a coleta e os módulos, consulte Understanding the Ansible for Junos OS Collections and Modules.
Os módulos da Juniper Networks não exigem Python em dispositivos Junos porque usam o Junos PyEZ e a API Junos XML sobre NETCONF para interface com o dispositivo. Portanto, para realizar operações em dispositivos Junos, você deve executar módulos localmente no nó de controle Ansible, onde o Python está instalado. Você pode executar os módulos localmente, incluindo connection: local
no playbook. Quando você usa connection: local
, o Ansible estabelece uma conexão separada com o host para cada tarefa na peça que requer uma conexão. Os juniper.device
módulos de coleta também oferecem suporte connection: juniper.device.pyez
. Esse tipo de conexão ainda executa os módulos localmente no nó de controle Ansible, mas estabelece uma conexão com o host que persiste sobre a execução de todas as tarefas em uma peça.
Por padrão, o Ansible joga automaticamente coletando fatos do sistema do host remoto. No entanto, quando você executa as jogadas localmente, Ansible reúne os fatos do nó de controle 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, que é o padrão, você deve ter o NETCONF habilitado no dispositivo Junos. Recomendamos que você crie uma tarefa simples no manual de jogadas 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, a Ansible não executará as tarefas restantes para este host. Sem este teste, você pode obter um erro de conexão genérico durante a execução de playbook que não indica se esse ou outro problema é a causa de alguma falha.
Os playbooks são expressos no YAML. O YAML é sensível ao espaço branco e a indentação é significativa. Portanto, seus playbooks devem sempre usar espaços em vez de guias. No YAML, os itens precedidos por um hífen (-) são considerados itens de lista, e a key: value
notação representa um hash. Para obter informações detalhadas sobre a criação de playbooks ansible, consulte a documentação oficial do Ansible em https://docs.ansible.com/ansible/latest/playbook_guide/playbooks.html.
As seções a seguir descrevem as etapas para criar e executar um manual simples que executa módulos Ansible em um dispositivo Junos.
Crie um manual
Para criar um manual simples para realizar tarefas em dispositivos Junos:
Execute o playbook
Para executar o manual:
-
Emita o
ansible-playbook
comando no nó de controle e forneça o caminho de manual e quaisquer opções desejadas.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