Introdução à Automação de Rede
O que é Automação de Rede?
Automação de rede é o processo de automatizar a configuração, gerenciamento, teste, implantação e operações de dispositivos de rede físicos e virtuais. Usando software, a automação de rede elimina os processos manuais anteriormente realizados por administradores de rede, como configurar novos dispositivos, gerenciar alterações de configuração e monitorar o desempenho da rede.
Benefícios da Automação de Rede
-
Redução de Erros Humanos: A automação elimina o risco de erros de digitação e configurações incorretas que podem causar interrupções na rede.
-
Aumento da Eficiência: Tarefas que levariam horas ou dias para serem concluídas manualmente podem ser executadas em minutos.
-
Consistência: Garante que as configurações de rede sejam aplicadas de forma consistente em todos os dispositivos.
-
Escalabilidade: Permite gerenciar grandes redes com menos recursos.
-
Conformidade Aprimorada: Processos automatizados podem impor políticas de segurança e requisitos regulatórios.
-
Implantação Mais Rápida: Novos serviços e configurações podem ser implantados mais rapidamente.
-
Melhor Documentação: Ferramentas de automação mantêm registros de todas as alterações e configurações.
Evolução do Gerenciamento de Rede
-
Configuração Manual via CLI: Método tradicional onde engenheiros acessam cada dispositivo individualmente.
-
Scripts e Ferramentas Personalizadas: Automação básica usando scripts (Python, Bash, Perl).
-
Ferramentas de Gerenciamento de Configuração: Ferramentas mais sofisticadas como Ansible, Puppet e Chef.
-
Redes Definidas por Software (SDN): Plano de controle centralizado com interfaces programáveis.
-
Redes Baseadas em Intenção: Especificação de resultados desejados em vez de configurações específicas.
Introdução ao Ansible
O que é Ansible?
Ansible é uma ferramenta de automação de código aberto que oferece uma maneira simples de automatizar a infraestrutura de TI, incluindo servidores, aplicativos e dispositivos de rede. Ele usa uma linguagem declarativa para descrever configurações de sistemas, tornando-o acessível tanto para desenvolvedores quanto para administradores de sistemas.
Principais Características do Ansible
- Arquitetura Sem Agente: Não é necessário instalar agentes nos dispositivos gerenciados.
- Modelo Baseado em Push: A configuração é enviada de um nó de controle central.
- Sintaxe YAML: Usa arquivos YAML simples e legíveis por humanos para configuração.
- Operações Idempotentes: Executar o mesmo playbook várias vezes produz o mesmo resultado.
- Extensível: Pode ser estendido com módulos, plugins e scripts personalizados.
- Suporte Multiplataforma: Funciona com vários sistemas operacionais e dispositivos de rede.
Arquitetura do Ansible
-
Nó de Controle: A máquina onde o Ansible está instalado e de onde a automação é iniciada.
-
Nós Gerenciados: Os dispositivos-alvo sendo automatizados (servidores, dispositivos de rede, etc.).
-
Inventário: Uma lista de nós gerenciados organizados em grupos.
-
Módulos: Unidades de código reutilizáveis que executam tarefas específicas.
-
Playbooks: Arquivos YAML que definem tarefas de automação e sua sequência.
-
Coleções: Distribuições de plugins, papéis, módulos e documentação.
Ansible para Automação de Rede
Por que Ansible para Automação de Rede?
- Suporte a Múltiplos Fornecedores: Funciona com dispositivos da Cisco, Juniper, Arista e muitos outros.
- Sem Necessidade de Agentes: Particularmente importante para dispositivos de rede com recursos limitados.
- Sintaxe Familiar: Engenheiros de rede podem aprender uma única ferramenta para várias plataformas.
- Abordagem Declarativa: Especifique o estado desejado em vez de procedimentos passo a passo.
- Capacidades de Integração: Pode se integrar com ferramentas e fluxos de trabalho existentes.
Principais Diferenças na Automação de Rede
- Local de Execução: Os módulos de rede são executados no nó de controle, não nos dispositivos gerenciados.
- Métodos de Conexão: Usa network_cli, netconf ou httpapi em vez de SSH para execução de comandos.
- Autenticação: Lida com vários métodos de autenticação, incluindo o modo enable.
- Desafios de Idempotência: Dispositivos de rede muitas vezes não possuem APIs que relatam o estado atual.
- Módulos Específicos de Plataforma: Módulos diferentes para diferentes sistemas operacionais de rede.
Casos de Uso da Automação de Rede
-
Gerenciamento de Configuração: Implantação e manutenção de configurações de dispositivos.
-
Verificação de Conformidade: Garantir que os dispositivos atendam aos requisitos de segurança e regulamentação.
-
Provisionamento de Rede: Configuração de novos dispositivos e serviços.
-
Backup e Restauração: Backup regular de configurações e restauração quando necessário.
-
Atualizações de Software: Gerenciamento de atualizações de firmware e sistema operacional em toda a rede.
-
Solução de Problemas: Coleta de informações de diagnóstico de múltiplos dispositivos.
Configurando o Ambiente Ansible
Requisitos de Instalação
-
Linux, macOS ou Windows com WSL (Windows Subsystem for Linux)
-
Python 3.8 ou superior
-
Conectividade SSH com dispositivos de rede
-
Credenciais de dispositivos de rede
Instalando o Ansible
# Using pip (recommended for most users)
python3 -m pip install ansible
# On Ubuntu/Debian
sudo apt update
sudo apt install ansible
# On macOS with Homebrew
brew install ansible
Visão Geral sobre Ansible Collections
Ansible Collections são pacotes modulares que agrupam conteúdo relacionado ao Ansible, como playbooks, roles, módulos, plugins e documentação, em um formato reutilizável e distribuível. Elas permitem organizar e compartilhar automações de forma mais estruturada, facilitando a manutenção e a integração com diferentes sistemas ou provedores (como AWS, Cisco, Red Hat, etc.). Cada collection é versionada independentemente, o que melhora a compatibilidade e a escalabilidade.
Como Pesquisar Ansible Collections
-
Repositório Oficial (Galaxy): Acesse o Ansible Galaxy para procurar collections. Use a barra de pesquisa com palavras-chave (ex.: "aws", "docker") ou filtre por categorias.
-
Documentação do Ansible: Consulte a documentação oficial para detalhes sobre collections específicas, incluindo exemplos de uso e dependências.
-
Comando ansible-galaxy: Use o comando ansible-galaxy collection list para verificar collections instaladas localmente ou ansible-galaxy collection install <nome> para baixar uma específica.
Para verificar quais informações a uma coleçao como cisco.aci
do Ansible oferece, você pode explorar os módulos disponíveis, sua documentação e exemplos práticos. Aqui está um guia em pt-br sobre como fazer isso:
1. Verifique a Documentação Oficial
-
Ansible Galaxy: Acesse o Ansible Galaxy e procure pela coleção
cisco.aci
. Na aba "Content", você verá uma lista completa de módulos disponíveis, comoaci_tenant
,aci_epg
,aci_rest
, entre outros. Cada módulo inclui uma descrição do que ele gerencia (ex.: tenants, EPGs, contratos). -
Documentação da Comunidade Ansible: Consulte a documentação oficial para detalhes sobre cada módulo. Por exemplo:
cisco.aci.aci_tenant
: Gerencia tenants (fv:Tenant).cisco.aci.aci_epg
: Gerencia End Point Groups (fv:AEPg).cisco.aci.aci_rest
: Permite acesso direto à API REST do Cisco APIC.- Cada página de módulo lista parâmetros, retornos (informações que o módulo pode retornar) e exemplos de uso.
2. Use o Comando ansible-doc
- No terminal, execute:
ansible-doc -l cisco.aci
Isso lista todos os módulos da coleção cisco.aci
.
- Para detalhes sobre um módulo específico, use:
ansible-doc cisco.aci.aci_tenant
Isso mostra a documentação do módulo, incluindo:
- Descrição do módulo.
- Parâmetros aceitos.
- Valores retornados (ex.: informações sobre tenants, como nome, descrição, status).
- Exemplos de playbooks.
Instalando Coleções de Rede
# Install Cisco IOS collection
ansible-galaxy collection install cisco.ios
# Install Juniper Junos collection
ansible-galaxy collection install junipernetworks.junos
# Install Arista EOS collection
ansible-galaxy collection install arista.eos
# Install multiple collections
ansible-galaxy collection install cisco.ios cisco.nxos junipernetworks.junos arista.eos
Configuração Básica
- ansible.cfg: Arquivo principal de configuração para o comportamento do Ansible
- Arquivo de inventário: Define nós gerenciados e grupos
- Configuração de chave SSH: Para autenticação sem senha
Verificando a Instalação
# Check Ansible version
ansible --version
# List installed collections
ansible-galaxy collection list
# Verify connectivity to devices
ansible all -m ping -i inventory.yaml
Entendendo a Sintaxe YAML
Fundamentos do YAML
- Estrutura: Hierarquia baseada em indentação (geralmente 2 espaços)
- Pares Chave-Valor: Formato chave: valor
- Listas: Indicadas por hífens (-)
- Comentários: Começam com #
Exemplos de YAML
# Simple key-value pairs
hostname: router1
vendor: cisco
model: ISR4451
# Lists
interfaces:
- name: GigabitEthernet0/0
ip: 192.168.1.1
- name: GigabitEthernet0/1
ip: 192.168.2.1
# Nested structures
device:
name: core-switch
location: datacenter
vlans:
- id: 10
name: Management
- id: 20
name: Users
Laboratório: Configurando o Ansible para Automação de Rede
Objetivos do Laboratório
- Instalar o Ansible e as coleções necessárias
- Configurar as configurações básicas do Ansible
- Criar um arquivo de inventário simples
- Verificar a conectividade com dispositivos de rede
Passo 1: Instalar o Ansible e Coleções de Rede
Verificar passo anterior de instalação
Passo 2: Criar o ansible.cfg
[defaults]
inventory = ./inventory
host_key_checking = False
timeout = 20
gathering = explicit
retry_files_enabled = False
[privilege_escalation]
become = False
Explicação:
inventory
: Aponta para o arquivo de inventário.timeout
: Define o tempo limite de conexão como 20 segundos.gathering = explicit
: Desativa a coleta automática de fatos para acelerar a execução.retry_files_enabled = False
: Evita a criação de arquivos de retentativa em caso de falha.become = False
: Desativa a escalação de privilégios (geralmente desnecessária para dispositivos de rede).
Passo 3: Criar o Arquivo de Inventário
- Para Cisco ACI, use o Cisco DevNet Sandbox.
- Opção 1: Utilize o sandbox "Always-On" para acesso rápido.
- Opção 2: Reserve e inicie uma instância dedicada para este laboratório.
---
all:
children:
network:
children:
cisco:
hosts:
r1:
ansible_host: r1
vars:
ansible_network_os: cisco.ios.ios
ansible_connection: ansible.netcommon.network_cli
ansible_user: admin
ansible_password: autonetops
ansible_become: yes
ansible_become_method: enable
aci:
hosts:
aci_apic:
ansible_host: <ENDEREÇO_IP_APIC> # ex.: 10.10.20.14
ansible_user: admin
ansible_password: <SENHA> # Substitua pela sua senha
ansible_network_os: cisco.aci.aci
vars:
ansible_connection: ansible.netcommon.httpapi
ansible_httpapi_use_ssl: True
ansible_httpapi_validate_certs: False
Passo 4: Verificar a Conectividade
# Test connectivity to all devices
ansible network -m ping -i inventory.yaml
ansible aci -m ping -i inventory.yaml
ansible all -m ping -i inventory.yaml
# Gather facts from Cisco devices
ansible cisco -m cisco.ios.ios_facts -i inventory.yaml
Exercícios do Laboratório
-
Adicionar dispositivos adicionais ao inventário (diferentes fornecedores, se disponível)
-
Criar grupos com base nas funções dos dispositivos (core, distribuição, acesso)
-
Usar o Ansible Vault para proteger credenciais
-
Executar um comando simples em todos os dispositivos usando o módulo apropriado
Resumo
-
A automação de rede reduz erros, aumenta a eficiência e melhora a consistência
-
O Ansible oferece uma abordagem sem agente e baseada em push para automação
-
Existem diferenças importantes entre a automação de servidores e de rede com o Ansible
-
Configurar o Ansible para automação de rede requer coleções e configurações específicas
-
A sintaxe YAML é fundamental para trabalhar com playbooks e inventários do Ansible