Com o crescimento e aumento da complexidade das redes, foi se tornando cada vez mais difícil e custoso configurar, atualizar e fazer manutenção de dispositivos de rede. Para resolver esse problema, foram criadas diferentes ferramentas que realizam tarefas manuais de forma automática e em grande escala.
Neste post, utilizaremos a biblioteca Netmiko como exemplo para demonstrar os benefícios da automação de redes. É importante destacar que existem diversas ferramentas disponíveis no mercado que podem ser usadas para alcançar resultados semelhantes. Vamos entender melhor os benefícios da automação de redes nos próximos tópicos.
Principais benefícios da automação de redes
Diminuição de erros humanos
Durante a configuração e manutenção de dispositivos de rede, erros são comuns, especialmente erros de digitação e configurações incorretas, que podem levar a falhas no funcionamento ou até mesmo a indisponibilidade da rede. Com a automação, esses problemas são reduzidos drasticamente, garantindo maior consistência e precisão nas tarefas. Além disso, a automação permite a criação de scripts e templates pré-definidos, que garantem que todas as configurações sigam os mesmos padrões, independentemente de quem realiza a tarefa, eliminando variações manuais.
Por exemplo, usando a biblioteca Netmiko, podemos criar um script para configurar um roteador automaticamente com comandos predefinidos:
# Importa a biblioteca Netmiko para conexão SSH com dispositivos de rede
from netmiko import ConnectHandler
# Define os detalhes de conexão do dispositivo
device = {
'device_type': 'cisco_ios', # Tipo de dispositivo (Cisco IOS)
'host': '192.168.1.1', # Endereço IP do dispositivo
'username': 'admin', # Nome de usuário para login
'password': 'password', # Senha para login
}
# Estabelece a conexão com o dispositivo
connection = ConnectHandler(**device)
# Lista de comandos de configuração a serem enviados
config_commands = [
'hostname Router1', # Define o hostname do roteador
'interface GigabitEthernet0/1', # Configura a interface específica
'ip address 192.168.2.1 255.255.255.0', # Atribui um endereço IP à interface
'no shutdown', # Habilita a interface
]
# Envia os comandos de configuração para o dispositivo
output = connection.send_config_set(config_commands)
print(output) # Exibe o retorno da execução dos comandos
# Finaliza a conexão com o dispositivo
connection.disconnect()
Esse script elimina a possibilidade de erros manuais, garantindo que as configurações sejam aplicadas com precisão.
Maior escalabilidade
À medida que as redes crescem, a adição de novos dispositivos ou a implementação de mudanças pode se tornar um processo demorado e complexo. A automação facilita a integração de novos dispositivos, aplicando automaticamente as políticas e configurações necessárias. Além disso, a automação permite uma melhor gestão do crescimento da rede, tornando possível a implementação de grandes mudanças de forma coordenada e sem intervenção humana constante.
Um exemplo disso seria configurar vários dispositivos de uma vez:
# Lista de dispositivos a serem configurados
devices = [
{'host': '192.168.1.1', 'username': 'admin', 'password': 'password'},
{'host': '192.168.1.2', 'username': 'admin', 'password': 'password'},
]
# Itera sobre a lista de dispositivos
for device_info in devices:
# Define os detalhes de conexão para cada dispositivo
device = {
'device_type': 'cisco_ios', # Tipo de dispositivo (Cisco IOS)
'host': device_info['host'], # Endereço IP
'username': device_info['username'], # Nome de usuário
'password': device_info['password'], # Senha
}
# Estabelece a conexão com o dispositivo
connection = ConnectHandler(**device)
# Comandos de configuração aplicados a cada dispositivo
config_commands = [
'line vty 0 4', # Configura as linhas virtuais de acesso
'logging synchronous' # Ajusta a exibição de logs no terminal
]
connection.send_config_set(config_commands)
print(f"Dispositivo configurado {device['host']}") # Mensagem de confirmação
# Finaliza a conexão com o dispositivo
connection.disconnect()
Isso demonstra como a automação pode escalar facilmente para suportar vários dispositivos ao mesmo tempo.
Operações otimizadas
Processos que antes demoravam horas ou até dias, como atualizações de firmware, instalação de patches de segurança ou ajuste de configurações de múltiplos dispositivos, agora podem ser realizados em minutos com a automação. Isso não só reduz o tempo de inatividade, como também diminui o custo das operações. Além disso, a automação permite que as equipes de TI se concentrem em tarefas mais estratégicas, como a melhoria da segurança e o planejamento do crescimento da rede, em vez de se prenderem a tarefas repetitivas.
Por exemplo, com o Netmiko, podemos verificar rapidamente o status das interfaces de um dispositivo:
# Envia um comando de configuração para o dispositivo
output = connection.send_command("show ip interface brief")
print(output)
Isso pode ser integrado a um script maior para gerar relatórios automáticos.
Versionamento de configurações
Uma vantagem importante da automação é o versionamento das configurações de dispositivos de rede. Com o versionamento, todas as mudanças feitas são documentadas e armazenadas, permitindo que você volte a uma versão anterior caso ocorra algum problema. Isso facilita a resolução de falhas e a identificação de problemas, já que é possível saber exatamente quando e por que uma determinada configuração foi alterada.
Usando o Netmiko, é possível salvar a configuração de um dispositivo em um arquivo de backup:
output = connection.send_command("show running-config")
# Abre (ou cria) um arquivo chamado "backup_config_router1.txt" no modo de escrita ("w")
with open("backup_config_router1.txt", "w") as backup_file:
# Escreve o conteúdo da configuração em execução no arquivo de backup
backup_file.write(output)
Isso garante que as configurações estejam sempre acessíveis, facilitando a recuperação em caso de falhas.
Conformidade de políticas
Com o crescimento da rede e sem o uso da automação, seria extremamente complicado seguir à risca as políticas da rede, como as configurações padrão para cada dispositivos, versões de software etc. A automação deixa esse processo mais simples, principalmente pelo uso de templates e versionamento das versões. Por exemplo, garantir que todos os dispositivos estejam atualizados com a versão correta do software e que sigam as regras de segurança definidas pela empresa.
Conclusão
Em um cenário de redes cada vez mais complexas e com altas demandas de disponibilidade, a automação de redes se tornou uma ferramenta fundamental para as empresas que buscam eficiência, escalabilidade e segurança. Ela não apenas minimiza erros humanos e otimiza as operações, mas também facilita a expansão e o gerenciamento da rede. Utilizando a automação, organizações podem concentrar seus esforços em inovação e estratégias de longo prazo, enquanto as operações do dia a dia são tratadas de forma mais rápida e controlada.