Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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:

  1. Em seu editor favorito, crie um novo arquivo com um nome de manual descritivo que usa a extensão do 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 de pontos dos hosts ou grupos de hosts em que os módulos funcionarão ou especifique all para indicar todos os hosts no arquivo de inventário.

    Quaisquer hosts ou grupos mencionados no manual de jogadas devem ser definidos no arquivo de inventário Ansible.

  5. Instrua o Ansible a executar as tarefas da peça localmente no nó de controle Ansible onde o Python está instalado, porque não há exigência para o Python em dispositivos Junos.
    • Inclua connection: local executar tarefas localmente, mas estabeleça uma conexão separada com o host para cada tarefa na peça que requer uma conexão.

    • Inclua connection: juniper.device.pyez executar tarefas localmente, mas estabeleça uma conexão persistente com o host que persiste sobre a execução de todas as tarefas em jogo. Esse tipo de conexão só é suportado pelos módulos de juniper.device coleta.

    As etapas restantes são usadas connection: local. Para usar os módulos de juniper.device coleta com uma conexão persistente, atualize o manual final a ser usado connection: juniper.device.pyez.

  6. (Opcional) Inclua gather_facts: no para evitar a coleta de fatos para o host alvo, que para conexões locais é o nó de controle Ansible.
  7. (Opcional) Referenciar a juniper.device coleção.

    Você pode definir a collections chave no manual de jogadas 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 collections conteúdo da coleta pelo seu nome de coleta totalmente qualificado (FQCN).

    Este exemplo omite a collections chave e usa o nome de coleta totalmente qualificado.

  8. Defina uma seção de tarefas e inclua uma ou mais tarefas como itens de lista.
  9. (Opcional) Como verificação adicional, crie uma tarefa para verificar a conectividade NETCONF para cada dispositivo Junos.
  10. Crie tarefas que usam os módulos da Juniper Networks e forneça todos os parâmetros necessários de conexão e autenticação.

    Este exemplo usa as chaves SSH existentes no local padrão e não fornece credenciais explicitamente para o facts módulo no manual de jogadas.

  11. (Opcional) Definir tarefas adicionais ou jogadas adicionais conforme necessário.

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.