Entrar ou criar conta

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.

Automação e Segurança em Energia Crítica com Ansible do zero à orquestração avançada
Ligado ao treinamento Automação e Segurança em Energia Crítica com Ansible do zero à orquestração avançada
Duração estimada
90 min
Passos
12
Validações
5
Objetivo

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

ItemRequisito, licença ou versão
VM Controladora1 vCPU, 1GB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8
VM No-Break 11 vCPU, 512MB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8
VM No-Break 21 vCPU, 512MB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8
AnsibleGPLv3 · 2.15
OpenSSHBSD · a versão estável atual
Net-SNMPBSD · a versão estável atual

Roteiro

  1. 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 -y

    O que você deve ver: snmpd instalado e rodando

  2. 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.conf

    O que você deve ver: Arquivo /etc/ups.conf criado

  3. 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.22

    O que você deve ver: Login SSH sem senha habilitado

  4. 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 -y

    O que você deve ver: Ansible instalado

  5. 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
    EOF

    O que você deve ver: Arquivo hosts.ini criado

  6. Testar conectividade Ansible

    Valide a comunicação entre a controladora e os no-breaks usando Ansible.

    ansible -i hosts.ini ups -m ping

    O que você deve ver: pong para cada host

  7. 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
    EOF

    O que você deve ver: Playbook criado

  8. 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.yml

    O que você deve ver: Arquivo secrets.yml criptografado

  9. 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

  10. 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-pass

    O que você deve ver: Backup dos arquivos ups.conf salvo em ./backups

  11. 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.txt

    O que você deve ver: Backup executado periodicamente

  12. 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 playbook

    O que você deve ver: Entradas de execução do Ansible

Como saber que funcionou

TesteComandoCritério
Verificar arquivos de backupls ./backups/Arquivos ups.conf para cada host presentes
Checar conteúdo do backupcat ./backups/192.168.56.21-ups.confConteúdo igual ao arquivo original
Validar proteção de segredoscat secrets.ymlArquivo ilegível sem senha do Vault
Testar execução automatizadaansible-playbook -i hosts.ini backup_ups.yml --ask-vault-passBackup executado sem erros
Auditar logs de execuçãogrep ansible /var/log/syslogEntradas correspondentes à execução do playbook

Troubleshooting

SintomaCausa provávelCorreção
Erro de permissão ao coletar arquivoUsuário remoto sem permissão de leituraAjuste permissões do arquivo /etc/ups.conf
Falha de autenticação SSHChave SSH não copiada ou permissões incorretasReexecute ssh-copy-id e verifique permissões em ~/.ssh
Erro de descriptografia do VaultSenha do Vault incorretaDigite a senha correta ou recupere o arquivo Vault
Playbook não encontra hostsInventário mal configuradoRevise hosts.ini e certifique-se dos IPs corretos
Backup não aparece em ./backupsDiretório não existe ou permissão insuficienteCrie 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

Checklist final

Referências

  1. Ansible User Guide
  2. Ansible Vault Documentation
  3. YAML Specification