ULC Lab · implementação reproduzível
Laboratório: Provisionamento automatizado de switches e roteadores OpenWrt com Ansible em ambiente de varejo simulado
Você terá um ambiente virtual com dois roteadores OpenWrt e um servidor Ansible, automatizando a configuração de rede entre eles. O laboratório leva cerca de 2 horas para ser concluído.

- Duração estimada
- 120 min
- Passos
- 11
- Validações
- 5
- Versões da documentação consultada
- Ansible 2.15 · OpenWrt 22.03 · QEMU/KVM ou VirtualBox a versão estável atual
O objetivo é demonstrar, na prática, como automatizar o provisionamento e atualização de configurações básicas (hostname, interfaces, roteamento estático, Wi-Fi) em equipamentos OpenWrt usando Ansible. Você aprenderá a estruturar playbooks, inventários e variáveis para ambientes multi-loja, simulando um cenário real de varejo com múltiplos pontos de acesso e switches. O foco é garantir reprodutibilidade e escala, usando apenas ferramentas de código aberto.
Topologia
Três máquinas virtuais: uma para o servidor Ansible (192.168.56.10), duas rodando OpenWrt (192.168.56.101 e 192.168.56.102). O Ansible acessa os roteadores via SSH na rede interna. Cada OpenWrt simula um switch/roteador de loja, conectados apenas ao Ansible, não entre si.
+-------------------+
| Ansible VM |
| 192.168.56.10 |
+--------+---------+
|
+----------+----------+
| |
+--------+-------+ +-------+--------+
| OpenWrt Loja 1 | | OpenWrt Loja 2 |
|192.168.56.101 | |192.168.56.102 |
+----------------+ +----------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Ansible | 1 vCPU, 1 GB RAM, Ubuntu 22.04 ou superior, acesso SSH |
| VM OpenWrt | 1 vCPU, 256 MB RAM, OpenWrt 22.03 ou superior, interface de rede em modo bridge ou host-only |
| Ansible | GPLv3 · 2.15 |
| OpenWrt | GPLv2 · 22.03 |
| QEMU/KVM ou VirtualBox | GPLv2/GPLv3 · a versão estável atual |
Roteiro
- Preparar as VMs OpenWrt
Baixe e instale duas VMs OpenWrt. Configure cada uma com IP fixo (192.168.56.101 e 192.168.56.102) na interface LAN. Isso simula roteadores/switches de lojas.
Consulte https://openwrt.org/docs/guide-quick-start/virtualbox-qemu-installation para baixar e instalar. Edite /etc/config/network em cada VM: config interface 'lan' option ifname 'eth0' option proto 'static' option ipaddr '192.168.56.101' # ou .102 option netmask '255.255.255.0'O que você deve ver: As VMs OpenWrt iniciam com IPs acessíveis na rede interna.
- Preparar a VM Ansible
Instale o Ansible na VM Ubuntu. O Ansible será o orquestrador das configurações.
sudo apt update && sudo apt install ansible -yO que você deve ver: O comando ansible --version retorna a versão instalada.
- Configurar acesso SSH sem senha
Gere chave SSH na VM Ansible e copie para as VMs OpenWrt. O Ansible precisa de acesso SSH sem senha para automação.
ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519 ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.56.101 ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.56.102O que você deve ver: O comando ssh root@192.168.56.101 conecta sem pedir senha.
- Criar inventário Ansible
Monte um arquivo de inventário com os hosts OpenWrt. Isso define os alvos da automação.
cat > hosts <<EOF [openwrt] 192.168.56.101 192.168.56.102 EOFO que você deve ver: O arquivo hosts contém os IPs das VMs OpenWrt.
- Testar conectividade Ansible
Use o módulo ping do Ansible para garantir que a comunicação SSH está funcional.
ansible -i hosts openwrt -m ping -u rootO que você deve ver: Retorno SUCCESS e 'pong' para cada host.
- Criar playbook para configurar hostname e rede
Monte um playbook YAML para definir hostname e interface LAN em cada OpenWrt. Isso padroniza o ambiente multi-loja.
cat > config_openwrt.yml <<EOF - hosts: openwrt gather_facts: no tasks: - name: Definir hostname ansible.builtin.shell: uci set system.@system[0].hostname='{{ inventory_hostname }}' && uci commit system - name: Configurar IP da LAN ansible.builtin.shell: uci set network.lan.ipaddr='{{ ansible_host }}' && uci commit network EOFO que você deve ver: Playbook YAML criado com tasks para hostname e IP.
- Executar o playbook de configuração
Aplique o playbook para provisionar os roteadores OpenWrt. Isso garante consistência e velocidade.
ansible-playbook -i hosts -u root config_openwrt.ymlO que você deve ver: Saída de sucesso para cada task em cada host.
- Criar playbook para configurar Wi-Fi
Monte um playbook para ativar e configurar o Wi-Fi (SSID, senha) em ambos OpenWrt. Isso simula o provisionamento de APs em lojas.
cat > wifi_openwrt.yml <<EOF - hosts: openwrt gather_facts: no tasks: - name: Ativar Wi-Fi ansible.builtin.shell: uci set wireless.@wifi-device[0].disabled='0' && uci commit wireless - name: Definir SSID ansible.builtin.shell: uci set wireless.@wifi-iface[0].ssid='VarejoDemo' && uci commit wireless - name: Definir senha WPA2 ansible.builtin.shell: uci set wireless.@wifi-iface[0].encryption='psk2' && uci set wireless.@wifi-iface[0].key='SenhaForte123' && uci commit wireless - name: Reiniciar Wi-Fi ansible.builtin.shell: wifi reload EOFO que você deve ver: Playbook YAML para Wi-Fi criado.
- Executar o playbook de Wi-Fi
Aplique o playbook para ativar e padronizar o Wi-Fi nas lojas.
ansible-playbook -i hosts -u root wifi_openwrt.ymlO que você deve ver: Saída de sucesso para cada task em cada host.
- Criar playbook para atualização de firmware (simulado)
Monte um playbook para simular atualização de firmware via sysupgrade. Não execute sem backup real em produção.
cat > upgrade_openwrt.yml <<EOF - hosts: openwrt gather_facts: no tasks: - name: Simular atualização de firmware ansible.builtin.shell: echo 'sysupgrade /tmp/openwrt-firmware.bin' EOFO que você deve ver: Playbook de simulação de upgrade criado.
- Executar o playbook de upgrade (simulado)
Execute o playbook de upgrade para validar o processo automatizado. Não faz upgrade real, apenas simula.
ansible-playbook -i hosts -u root upgrade_openwrt.ymlO que você deve ver: Saída mostrando o comando sysupgrade simulado.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar hostname em cada OpenWrt | ssh root@192.168.56.101 'uci get system.@system[0].hostname' | Retorna o hostname igual ao IP. |
| Verificar IP da LAN | ssh root@192.168.56.102 'ip a show br-lan' | IP configurado corretamente. |
| Verificar Wi-Fi ativado | ssh root@192.168.56.101 'iw dev' | Interface wireless listada como ativa. |
| Verificar SSID e senha | ssh root@192.168.56.102 'uci get wireless.@wifi-iface[0].ssid' | Retorna 'VarejoDemo'. |
| Verificar simulação de upgrade | ansible-playbook -i hosts -u root upgrade_openwrt.yml | Saída mostra comando sysupgrade simulado. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Falha no ansible -m ping | Chave SSH não copiada ou IP incorreto | Verifique IP e repita ssh-copy-id |
| Playbook falha com permissão negada | Usuário root não habilitado no OpenWrt | Habilite login root por SSH em /etc/ssh/sshd_config |
| Wi-Fi não ativa | Driver wireless não instalado na VM OpenWrt | Consulte a documentação OpenWrt para instalar drivers compatíveis |
| Hostname não altera | Task Ansible com erro de sintaxe | Revise o playbook e consulte a documentação do módulo shell |
Segurança e hardening
- Nunca use senha padrão em produção
- Restrinja acesso SSH por firewall
- Altere a senha root do OpenWrt após o laboratório
- Remova chaves SSH desnecessárias após testes
- Nunca execute sysupgrade real sem backup
Checklist final
Referências
- Ansible User Guide · Ansible (Red Hat) (docs.ansible.com)
- OpenWrt Documentation Start Page · Projeto OpenWrt (openwrt.org)
- YAML 1.2 Specification · Yaml (yaml.org)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 3 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
