A automação de redes tem se tornado uma necessidade para engenheiros de redes que desejam aumentar a eficiência operacional, reduzir erros manuais e melhorar a escalabilidade da infraestrutura. Uma das ferramentas mais poderosas para automação de dispositivos Cisco é o NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support), uma biblioteca Python projetada para interagir com diversos equipamentos de rede de maneira padronizada.
O que é o NAPALM?
O NAPALM é uma biblioteca de automação de redes que fornece uma interface unificada para interagir com diferentes sistemas operacionais de dispositivos de rede, incluindo IOS, IOS-XE, NX-OS e IOS-XR da Cisco. Ele permite a obtenção de informações do dispositivo, configuração de comandos e comparação de estados de configuração de forma eficiente via ssh.
Vantagens do NAPALM
Suporte a múltiplos fornecedores: Além da Cisco, o NAPALM suporta outros vendors.
Facilidade de uso: Utiliza Python e possui uma API intuitiva.
Operações padronizadas: Independentemente do fornecedor, os comandos são padronizados.
Redução de erros manuais: Permite a aplicação de configurações de forma consistente.
Integração com outras ferramentas: Pode ser utilizado junto ao Ansible, Netmiko, Napalm-Logs e outras soluções de automação.
Instalando e Praticando com o NAPALM
Antes de começar, é necessário instalar o Python e a biblioteca NAPALM. Podes instalar o NAPALM utilizando o pip:
pip install napalm
A seguir, um exemplo de como utilizar o NAPALM para conectar-se a um roteador Cisco e obter informações básicas. Criei um ficheiro com o nome np_1.py
from napalm import get_network_driver
# Definir o driver para Cisco IOS
driver = get_network_driver("ios")
# Configuração do dispositivo
device = driver(
hostname="192.168.3.14",
username="silesio",
password="ccie65745",
optional_args={"port": 22}
)
# Conectar ao dispositivo
device.open()
# Obter informações gerais
device_info = device.get_facts()
print(device_info)
# Fechar conexão
device.close()
Outro exemplo prático de obtenção de informações de um dispositivo Cisco:
import json
from napalm import get_network_driver
driver = get_network_driver('ios')
device = driver('192.168.3.14', 'silesio', 'ccie65745')
device.open()
device_info = device.get_facts()
print (json.dumps(device_info, indent=4))
device.close()
Explicação do Script
Importa-se a biblioteca NAPALM.
Seleciona-se o driver apropriado para Cisco IOS.
Define-se o endereço IP, usuário e senha do dispositivo.
Estabelece-se a conexão e coleta-se as informações básicas.
Exibe-se os detalhes como hostname, versão do sistema operacional e interfaces.
Fecha-se a conexão com o dispositivo.
Para modificar configurações, podes aplicar a configuração diretamente ou criar um arquivo de configuração e aplicá-lo dinamicamente. Primeiro precisas habilitar ip scp no switch.
Exemplo de Script para Configuração
from napalm import get_network_driver
# Definir o driver para Cisco IOS
driver = get_network_driver("ios")
# Configuração do dispositivo
device = driver(
hostname="192.168.3.14",
username="silesio",
password="ccie65745",
optional_args={"port": 22}
)
device.open()
device.load_merge_candidate(config='hostname SW-1\ninterface loopback100\ndescription BINARY AVENUE ACADEMY')
device.commit_config()
device.close()
print("Configuração aplicada com sucesso!")
Para aplicar configuração a partir de um ficheiro, precisas garantir que o ficheiro esteja na mesma pasta em que tenhas o script python ou precisarás indicar o caminho absoluto da localização do ficheiro de configuração no código. No meu caso os ficheiros estão na mesma pasta.
Código python
from napalm import get_network_driver
driver = get_network_driver('ios')
iosvl2 = driver('192.168.43.144', 'silesio', 'ccie65745')
iosvl2.open()
iosvl2.load_merge_candidate(filename='ACL1.cfg')
iosvl2.commit_config()
iosvl2.close()
print("Configuração aplicada com sucesso!")
Ficheiro de configuração: ACL1.cfg
access-list 10 permit 192.168.43.0 0.0.0.255
Se houver erro na configuração, o NAPALM permite reverter facilmente e também possibilita a aplicação de configuração em vários dispositivos simultaneamente.
Conclusão
O NAPALM é uma ferramenta poderosa que facilita a automação de redes Cisco e de outros fabricantes. Com ele, podes obter informações, modificar configurações e garantir consistência na tua infraestrutura de rede de maneira eficiente.