ULC Lab · implementação reproduzível
Laboratório: Provisionamento automatizado de servidores de loja com Ansible
Você terá um ambiente simulado de supermercado, com três servidores provisionados e configurados automaticamente via Ansible, em cerca de 2 horas. O laboratório cobre desde a instalação do Ansible até a execução de playbooks para instalar e configurar serviços essenciais.

- Duração estimada
- 120 min
- Passos
- 10
- Validações
- 4
- Versões da documentação consultada
- Ansible 2.14 · OpenSSH a versão estável atual · Apache HTTP Server a versão estável atual
Demonstrar, na prática, como o Ansible automatiza o provisionamento e a configuração de servidores Linux em uma rede típica de supermercado. O laboratório cobre desde a preparação do ambiente até a execução de playbooks que instalam e configuram Apache, NTP e um usuário administrativo, reforçando o controle e a padronização na infraestrutura.
Topologia
Uma máquina de controle (Ansible) conecta-se via SSH a três servidores simulando caixas, estoque e retaguarda, todos em uma rede privada (faixa 192.168.56.0/24). O Ansible executa comandos remotos para provisionar e configurar cada servidor.
+----------------+
| Ansible Host |
|192.168.56.10 |
+--------+-------+
|
+---------------+-----------------+
| | |
+-------+ +--------+ +---------+
| Caixa | | Estoque| | Retaguarda|
|.11 | | .12 | | .13 |
+-------+ +--------+ +---------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| Máquina de controle (host físico ou VM) | 1 vCPU, 1GB RAM, Ubuntu 22.04 ou CentOS 8 |
| 3 VMs Linux (servidores-alvo) | 1 vCPU, 512MB RAM cada, Ubuntu 22.04 ou CentOS 8, acesso SSH |
| Ansible | GPLv3 · 2.14 |
| OpenSSH | BSD · a versão estável atual |
| Apache HTTP Server | Apache License 2.0 · a versão estável atual |
Roteiro
- Preparar as VMs dos servidores-alvo
Crie três VMs Linux com IPs fixos: 192.168.56.11 (caixa), .12 (estoque), .13 (retaguarda). Instale OpenSSH Server em cada uma. Isso simula os servidores de loja.
sudo apt update && sudo apt install openssh-server -yO que você deve ver: Serviço SSH rodando em todas as VMs.
- Configurar máquina de controle
No host Ansible (192.168.56.10), instale o Ansible e gere uma chave SSH para autenticação sem senha.
sudo apt update && sudo apt install ansible -y ssh-keygen -t ed25519 -C "ansible-lab" ssh-copy-id user@192.168.56.11 ssh-copy-id user@192.168.56.12 ssh-copy-id user@192.168.56.13O que você deve ver: Acesso SSH sem senha para todos os servidores-alvo.
- Criar inventário Ansible
Defina o inventário dos hosts em um arquivo chamado hosts.ini. Isso permite ao Ansible saber onde atuar.
[supermercado] caixa ansible_host=192.168.56.11 estoque ansible_host=192.168.56.12 retaguarda ansible_host=192.168.56.13O que você deve ver: Arquivo hosts.ini criado com os três servidores listados.
- Testar conectividade Ansible
Valide a comunicação entre o Ansible e os servidores usando o módulo ping.
ansible -i hosts.ini supermercado -m pingO que você deve ver: Saída 'pong' para cada servidor.
- Criar playbook de provisionamento
Crie um arquivo playbook.yml para instalar Apache, NTP e criar um usuário admin. Isso padroniza a configuração dos servidores.
Consulte a documentação para detalhes de sintaxe. Exemplo básico: - hosts: supermercado become: yes tasks: - name: Instalar Apache apt: name: apache2 state: present when: ansible_os_family == 'Debian' - name: Instalar NTP apt: name: ntp state: present when: ansible_os_family == 'Debian' - name: Criar usuário admin user: name: admin state: present groups: sudoO que você deve ver: Playbook salvo como playbook.yml.
- Executar o playbook
Aplique o playbook em todos os servidores do inventário.
ansible-playbook -i hosts.ini playbook.ymlO que você deve ver: Saída mostrando tarefas executadas com sucesso em todos os servidores.
- Verificar serviços instalados
Confirme que Apache e NTP estão rodando em todos os servidores.
ansible -i hosts.ini supermercado -a 'systemctl status apache2' ansible -i hosts.ini supermercado -a 'systemctl status ntp'O que você deve ver: Status 'active (running)' para ambos os serviços.
- Validar criação do usuário admin
Cheque se o usuário admin foi criado em todos os servidores.
ansible -i hosts.ini supermercado -a 'id admin'O que você deve ver: Saída mostrando UID e grupos do usuário admin.
- Reaplicar o playbook (idempotência)
Execute novamente o playbook para garantir que não há mudanças desnecessárias. O Ansible deve relatar 'ok' em vez de 'changed'.
ansible-playbook -i hosts.ini playbook.ymlO que você deve ver: Tarefas marcadas como 'ok', sem alterações.
- Customizar variáveis por host
Adicione variáveis para instalar pacotes diferentes em cada servidor, editando ou criando arquivos em group_vars/ ou host_vars/. Isso demonstra flexibilidade do Ansible.
Consulte a documentação para sintaxe de variáveis por host.O que você deve ver: Playbook adapta ações conforme o host.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar acesso web ao Apache | curl http://192.168.56.11 | Receber HTML padrão do Apache. |
| Validar sincronização NTP | ansible -i hosts.ini supermercado -a 'ntpq -p' | Tabela de peers NTP exibida. |
| Checar usuário admin | ansible -i hosts.ini supermercado -a 'getent passwd admin' | Linha do usuário admin exibida. |
| Testar idempotência | ansible-playbook -i hosts.ini playbook.yml | Sem tarefas marcadas como 'changed'. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Erro de permissão SSH | Chave SSH não copiada corretamente | Execute ssh-copy-id novamente e teste 'ssh user@host' manualmente. |
| Módulo apt falha | Distribuição não é Debian/Ubuntu | Adapte o playbook para usar o módulo 'yum' em sistemas Red Hat. |
| Serviço Apache não inicia | Porta 80 ocupada ou firewall ativo | Verifique com 'sudo lsof -i :80' e ajuste regras de firewall. |
| Playbook não encontra hosts | Erro de sintaxe no arquivo hosts.ini | Revise o formato do inventário conforme documentação oficial. |
Segurança e hardening
- Utilize chaves SSH protegidas por senha
- Restrinja acesso SSH apenas ao host de controle
- Remova usuários e serviços de teste após o laboratório
- Aplique atualizações de segurança em todos os sistemas
Checklist final
Referências
- Documentação oficial do Ansible · Ansible (Red Hat) (docs.ansible.com)
- Coleções Ansible · Ansible (Red Hat) (docs.ansible.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 2 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
