Laboratório em bancada
Laboratório: Orquestração de Backup Automatizado e Seguro de No-Breaks com Ansible e SSH
Você vai automatizar o backup da configuração de dois no-breaks SNMP simulados em VMs Linux, usando Ansible com criptografia de senhas sensíveis via Ansible Vault. Em até 2 horas, terá um pipeline rastreável e seguro para coleta e armazenamento dos dados.

- Duração estimada
- 90 min
- Passos
- 12
- Validações
- 5
Demonstrar como orquestrar, com Ansible, o backup periódico e seguro de equipamentos críticos de energia (no-breaks SNMP simulados), protegendo credenciais com Ansible Vault e garantindo rastreabilidade das execuções. O laboratório cobre desde a preparação dos hosts até a execução automatizada e validação dos resultados, incluindo práticas de segurança essenciais.
Topologia
Três máquinas virtuais em uma rede privada: uma VM 'controladora' (192.168.56.10) com Ansible, e duas VMs 'no-break' (192.168.56.21 e 192.168.56.22) simulando equipamentos SNMP, acessíveis via SSH. O controle é feito via SSH sem senha usando chaves. O backup coleta arquivos de configuração dos no-breaks e armazena na controladora.
+-------------------+
| VM Controladora |
| 192.168.56.10 |
+---------+---------+
|
+--------------+-------------+
| |
+---------+ +---------+
| No-Break | | No-Break |
| VM1 | | VM2 |
|192.168.56.21| |192.168.56.22|
+---------+ +---------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Controladora | 1 vCPU, 1GB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8 |
| VM No-Break 1 | 1 vCPU, 512MB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8 |
| VM No-Break 2 | 1 vCPU, 512MB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8 |
| Ansible | GPLv3 · 2.15 |
| OpenSSH | BSD · a versão estável atual |
| Net-SNMP | BSD · a versão estável atual |
Roteiro
- Preparar as VMs no-break
Instale Net-SNMP nas VMs no-break para simular equipamentos SNMP. Isso permite testar automação de backup sem hardware real.
sudo apt update && sudo apt install snmpd -y # ou para CentOS sudo dnf install net-snmp net-snmp-utils -yO que você deve ver: snmpd instalado e rodando
- Criar arquivo de configuração simulada
Em cada VM no-break, crie um arquivo /etc/ups.conf simulando a configuração do no-break. O Ansible irá coletar esse arquivo.
echo 'model=APC-SmartUPS ip=192.168.56.21 community=public' | sudo tee /etc/ups.confO que você deve ver: Arquivo /etc/ups.conf criado
- Habilitar acesso SSH sem senha
Na controladora, gere um par de chaves SSH e copie a chave pública para as VMs no-break. Isso é necessário para automação segura.
ssh-keygen -t ed25519 ssh-copy-id user@192.168.56.21 ssh-copy-id user@192.168.56.22O que você deve ver: Login SSH sem senha habilitado
- Instalar Ansible na controladora
Instale o Ansible na VM controladora para orquestrar as tarefas.
sudo apt update && sudo apt install ansible -y # ou para CentOS sudo dnf install ansible -yO que você deve ver: Ansible instalado
- Criar inventário Ansible
Crie um arquivo de inventário Ansible listando as VMs no-break. Isso define os alvos da automação.
cat > hosts.ini <<EOF [ups] 192.168.56.21 ansible_user=user 192.168.56.22 ansible_user=user EOFO que você deve ver: Arquivo hosts.ini criado
- Testar conectividade Ansible
Valide a comunicação entre a controladora e os no-breaks usando Ansible.
ansible -i hosts.ini ups -m pingO que você deve ver: pong para cada host
- Criar playbook de backup
Crie um playbook Ansible para coletar o arquivo de configuração dos no-breaks e salvar localmente na controladora. Isso garante rastreabilidade do backup.
cat > backup_ups.yml <<EOF - hosts: ups tasks: - name: Coletar configuração do no-break fetch: src: /etc/ups.conf dest: ./backups/{{ inventory_hostname }}-ups.conf flat: yes EOFO que você deve ver: Playbook criado
- Proteger credenciais com Ansible Vault
Crie um arquivo de variáveis sensíveis (exemplo: comunidade SNMP) e proteja com Ansible Vault. Isso impede exposição acidental.
cat > secrets.yml <<EOF snmp_community: public EOF ansible-vault encrypt secrets.ymlO que você deve ver: Arquivo secrets.yml criptografado
- Ajustar playbook para usar variáveis Vault
Altere o playbook para referenciar a variável protegida. Isso demonstra uso seguro de segredos.
# No playbook, use {{ snmp_community }} onde necessário. Consulte a documentação para detalhes.O que você deve ver: Playbook referenciando variável Vault
- Executar backup automatizado
Rode o playbook usando Ansible Vault para descriptografar as variáveis em tempo real.
ansible-playbook -i hosts.ini backup_ups.yml --ask-vault-passO que você deve ver: Backup dos arquivos ups.conf salvo em ./backups
- Agendar backup periódico (opcional)
Configure um cron job na controladora para rodar o playbook em intervalos definidos. Isso automatiza o processo.
crontab -e # Exemplo de linha: 0 * * * * ansible-playbook -i /caminho/hosts.ini /caminho/backup_ups.yml --vault-password-file /caminho/vault_pass.txtO que você deve ver: Backup executado periodicamente
- Auditar logs de execução
Verifique os logs de execução do Ansible para rastrear quando e como os backups foram feitos.
cat /var/log/syslog | grep ansible # ou consulte o output do playbookO que você deve ver: Entradas de execução do Ansible
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar arquivos de backup | ls ./backups/ | Arquivos ups.conf para cada host presentes |
| Checar conteúdo do backup | cat ./backups/192.168.56.21-ups.conf | Conteúdo igual ao arquivo original |
| Validar proteção de segredos | cat secrets.yml | Arquivo ilegível sem senha do Vault |
| Testar execução automatizada | ansible-playbook -i hosts.ini backup_ups.yml --ask-vault-pass | Backup executado sem erros |
| Auditar logs de execução | grep ansible /var/log/syslog | Entradas correspondentes à execução do playbook |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Erro de permissão ao coletar arquivo | Usuário remoto sem permissão de leitura | Ajuste permissões do arquivo /etc/ups.conf |
| Falha de autenticação SSH | Chave SSH não copiada ou permissões incorretas | Reexecute ssh-copy-id e verifique permissões em ~/.ssh |
| Erro de descriptografia do Vault | Senha do Vault incorreta | Digite a senha correta ou recupere o arquivo Vault |
| Playbook não encontra hosts | Inventário mal configurado | Revise hosts.ini e certifique-se dos IPs corretos |
| Backup não aparece em ./backups | Diretório não existe ou permissão insuficiente | Crie o diretório e ajuste permissões |
Segurança e hardening
- Nunca armazene senhas em texto claro; use sempre Ansible Vault
- Restrinja o acesso SSH apenas à controladora
- Mantenha logs de execução protegidos contra acesso não autorizado
- Limite permissões dos arquivos de backup e segredos
- Desabilite autenticação por senha no SSH das VMs no-break
