← Voltar ao cursoExemplo de inventário (
Exemplo de Playbook (
Automation and Programmability
Automação com Ansible e Python
Automação de Rede
Ferramentas modernas permitem gerenciar centenas de dispositivos de forma programática e consistente.
Ansible (Red Hat)
Ferramenta de automação agentless (usa SSH). Ideal para configurar equipamentos de rede.
Arquitetura:
- Control node: Onde o Ansible é instalado (pode ser um servidor Linux)
- Managed nodes: Dispositivos gerenciados (roteadores, switches)
- Inventory: Lista de dispositivos em formato INI ou YAML
- Playbook: Arquivo YAML com as tarefas a executar
Exemplo de inventário (hosts.ini):
[switches]
sw01 ansible_host=10.0.0.1
sw02 ansible_host=10.0.0.2
[routers]
rtr01 ansible_host=10.0.0.10
Exemplo de Playbook (config-vlan.yml):
---
- name: Configurar VLANs nos switches
hosts: switches
gather_facts: no
tasks:
- name: Criar VLAN 10
cisco.ios.ios_vlan:
vlan_id: 10
name: VENDAS
state: present
- name: Configurar interface access na VLAN 10
cisco.ios.ios_interface:
name: GigabitEthernet0/1
mode: access
access_vlan: 10
Módulos Cisco no Ansible:
cisco.ios.ios_config— Comandos IOS arbitrárioscisco.ios.ios_vlan— Gerenciamento de VLANscisco.ios.ios_interface— Configuração de interfacescisco.ios.ios_l3_interface— Configuração L3cisco.ios.ios_lldp— LLDPcisco.ios.ios_static_route— Rotas estáticas
Python + Netmiko / NAPALM
Netmiko: Biblioteca Python simplifica SSH para dispositivos de rede (multi-vendor).
from netmiko import ConnectHandler
cisco_router = {
'device_type': 'cisco_ios',
'host': '10.0.0.1',
'username': 'admin',
'password': 'senha',
}
connection = ConnectHandler(**cisco_router)
output = connection.send_command('show ip interface brief')
print(output)
connection.disconnect()
NAPALM: Biblioteca que abstrai diferenças entre fabricantes:
from napalm import get_network_driver
driver = get_network_driver('ios')
device = driver('10.0.0.1', 'admin', 'senha')
device.open()
print(device.get_facts())
print(device.get_interfaces())
print(device.get_bgp_neighbors())
device.close()
JSON e JSON Path:
Formato leve de troca de dados, amplamente usado em APIs REST:
{
"hostname": "SW01",
"interfaces": [
{"name": "G0/1", "status": "up", "vlan": 10},
{"name": "G0/2", "status": "up", "vlan": 20}
]
}