NetCode

Network Automation - Criando um playbook com os módulos ios_config, ios_vlan e ios_l2_interface

April 28, 2020 | Lido a 4 minutos atrás

No artigo de hoje, iremos trabalhar com módulos do Ansible para criar um playbook onde irá fazer o provisionamento das seguintes tarefas:

✅ Habilitar o VTP transparent mode

✅ Criar VLANS 10, 20, 30 e 40

✅ Habilitar 802.1q nas interfaces

✅ Habilitar trunk mode nas interfaces

✅ Configurar switch virtual interface com HSRP

✅ Dimensionar HSRP load balancing

Iremos utilizar o lab mostrado na imagem abaixo. Este lab encontra-se no meu repositório do GitHub junto com o código usado neste artigo.

Bom, iremos montar nosso playbook para executar a primeira e a segunda task:

# Habilitar o VTP transparent mode
---
- name: Configuring devices # Nome do manual 
  hosts: all # Irá executar todos os hosts de todos os grupos que estão alocados no arquivo hosts
  gather_facts: false # Recolhe informações do dispositivo e retorna a saída em YAML
  
  vars: # Variável de conexão
    ansible_connection: network_cli
    ansible_network_os: ios
    ansible_user: teste
    ansible_ssh_pass: teste

A variável de conexo nada mais é que, o registro de conexão do device remoto, essas variáveis também faz a conexão de usuários cadastrados no tacacs ou radius.

Dica: Ao declarar minhas variáveis de comunicação, utilizei o parâmetro network_cli que se refere no modo de conexão CLI sobre SSH. Vale ressaltar que não são todos os módulos de redes que suportam esse tipo de protocolo de comunicação.

Iremos descrever a task para enviar a configuração que queremos executar no device remoto:

  tasks:
    - name: Configurando VTP Transparent mode e NTP em todos os switches 
      ios_config: # Módulo de configuração       
        lines:
          - vtp domain ansible
          - vtp mode transparent         
        
      register: print_output # Armazenando os dados executados no módulo acima

    -  debug: var=print_output.stdout_lines # Imprimindo os dados armazenados 
    
    # Criar VLANS 10, 20, 30 e 40
    - name: Criando VLANS 10, 20, 30 e 40
      ios_vlan: # Módulos contendo apenas parametrização de vlan
        aggregate: # Executa a lista de itens ordenados pelo parâmetro vlan_id
          - vlan_id: 10              
            name: VLAN 10          
            state: active

          - vlan_id: 20              
            name: VLAN 20          
            state: active 

          - vlan_id: 30              
            name: VLAN 30          
            state: active

          - vlan_id: 40              
            name: VLAN 40          
            state: active          
          
      register: print_output

Bom, com poucas linhas de código, podemos configurar o VTP e vlan id e replicar em todos os devices da topologia.

Agora iremos montar a terceira task:

Essa task consiste em habilitar o 802.1q nas interfaces dos core que conecta com os switches de acessos. Agora iremos executar a qaurta task, a próxima task irá habilitar o trunk mode para ocorrer distribuição de vlans pelo link:

    - name: HABILITANDO TRUNK MODE NAS INTERFACES ATIVAS DOS SWITCHES CORE
      ios_l2_interface:
        aggregate:
          - name: Ethernet0/0
            mode: trunk
            trunk_allowed_vlans: 1-4094
          - name: Ethernet0/1
            mode: trunk
            trunk_allowed_vlans: 1-4094
          - name: Ethernet0/2
            mode: trunk
            trunk_allowed_vlans: 1-4094
          - name: Ethernet0/3
            mode: trunk
            trunk_allowed_vlans: 1-4094
            
      register: print_output

A quarta task foi descrita dentro da variável de conexão da task anterior, pois, a quarta task irá executar comandos no mesmo grupo de devices.

Iremos executar a terceira e a quarta task novamente, porém, alterando as interfaces e o grupo de devices, iremos aplicar as configurações no grupo de switches de acessos:

A quinta task faz junção com a sexta task. Essas duas tasks irão utilizar o módulo ios_config para criar dois grupos de HSRP seguidos de SVIs para fazer load balancing de tráfego entre as vlans.

Configurando SVIs e HSRP load balancing no SW_CORE_1:

Configurando SVIs e HSRP load balancing no SW_CORE_2:

Bom, esses são alguns exemplos de como trabalhar com módulos ansible playbook. E aí, o que achou deste artigo? Dá um pulo lá no nosso Linkedin para ficar por dentro de novas publicações, vai ser legal contar com sua presença por lá. Ficamos por aqui e nos vemos no próximo post.