ULC Lab · implementação reproduzível
Laboratório: Provisionamento automatizado de um servidor clínico Linux com Ansible
Você vai automatizar a instalação e configuração de um servidor Linux para clínica, usando Ansible em duas máquinas virtuais. Em cerca de 2 horas, terá um ambiente pronto para expandir automações clínicas.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 4
- Versões da documentação consultada
- Ansible a versão estável atual · OpenSSH a versão estável atual
Demonstrar, na prática, como o Ansible pode provisionar e configurar um servidor Linux para uso clínico, garantindo padronização e rastreabilidade. O laboratório cobre desde a preparação do ambiente até a execução de um playbook real, incluindo validações e troubleshooting, para que você entenda o ciclo completo da automação.
Topologia
Duas máquinas virtuais em rede privada: uma controladora (Ansible) e uma alvo (servidor clínico). O controlador acessa o alvo via SSH (porta 22). Exemplo: controlador em 192.168.56.10, alvo em 192.168.56.20.
+-------------------+
| VM1: Controlador|
| (Ansible) |
| 192.168.56.10 |
+--------+---------+
|
(rede privada)
|
+--------+---------+
| VM2: Alvo |
| (Servidor Linux)|
| 192.168.56.20 |
+------------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Controlador | 1 vCPU, 1 GB RAM, 1 interface de rede, Ubuntu Server 22.04 LTS |
| VM Alvo | 1 vCPU, 1 GB RAM, 1 interface de rede, Ubuntu Server 22.04 LTS |
| Ansible | GPL v3 · a versão estável atual |
| OpenSSH | BSD · a versão estável atual |
Roteiro
- Preparar as máquinas virtuais
Crie duas VMs Ubuntu Server 22.04 LTS, conectadas à mesma rede privada. Uma será o controlador (Ansible), outra o alvo (servidor clínico).
O que você deve ver: Ambas as VMs ligadas, com IPs privados acessíveis entre si.
- Atualizar os sistemas operacionais
Mantenha ambos os sistemas atualizados para evitar falhas por pacotes antigos.
sudo apt update && sudo apt upgrade -yO que você deve ver: Nenhum pacote pendente de atualização.
- Instalar o OpenSSH no alvo
O Ansible usa SSH para se conectar. Instale e inicie o serviço no servidor alvo.
sudo apt install openssh-server -y sudo systemctl enable --now sshO que você deve ver: Serviço SSH ativo e escutando na porta 22.
- Instalar o Ansible no controlador
O controlador precisa do Ansible instalado para orquestrar as automações.
sudo apt install ansible -yO que você deve ver: Comando 'ansible --version' retorna informações da versão.
- Configurar autenticação SSH sem senha
Para automação, o controlador deve acessar o alvo via chave SSH, sem senha.
ssh-keygen -t ed25519 -C "ansible-lab" ssh-copy-id usuario@192.168.56.20O que você deve ver: Acesso SSH do controlador ao alvo sem pedir senha.
- Testar conectividade SSH
Confirme que o controlador acessa o alvo via SSH.
ssh usuario@192.168.56.20 'hostname'O que você deve ver: Nome do host do alvo exibido no terminal.
- Criar inventário Ansible
O inventário define quais hosts o Ansible vai gerenciar.
echo '[clinica] 192.168.56.20 ansible_user=usuario' > ~/inventarioO que você deve ver: Arquivo inventario criado com IP do alvo e usuário.
- Criar playbook básico de provisionamento
Um playbook YAML descreve as tarefas de configuração do servidor clínico.
nano ~/provisiona_clinica.ymlO que você deve ver: Arquivo salvo com conteúdo YAML válido.
- Exemplo de playbook de provisionamento
Inclua tarefas como atualização, instalação de pacotes clínicos e hardening.
Conteúdo do arquivo: --- - hosts: clinica become: yes tasks: - name: Atualizar pacotes apt: update_cache: yes upgrade: dist - name: Instalar pacote de prontuário eletrônico (exemplo: GNU Health) apt: name: gnuhealth state: present - name: Garantir firewall ativo ufw: state: enabled policy: deny - name: Permitir SSH ufw: rule: allow port: 22 proto: tcpO que você deve ver: Playbook YAML salvo corretamente. Consulte yaml.org/spec para sintaxe.
- Executar o playbook
Rode o playbook para provisionar e configurar o servidor clínico.
ansible-playbook -i ~/inventario ~/provisiona_clinica.ymlO que você deve ver: Saída com status de cada tarefa (ok, changed, failed).
- Verificar logs e estado do servidor
Confira se as mudanças foram aplicadas no alvo.
ssh usuario@192.168.56.20 'dpkg -l | grep gnuhealth && sudo ufw status'O que você deve ver: Pacote gnuhealth instalado e firewall ativo, SSH permitido.
- Reaplicar o playbook (idempotência)
Execute novamente para garantir que tarefas não sejam repetidas desnecessariamente.
ansible-playbook -i ~/inventario ~/provisiona_clinica.ymlO que você deve ver: Tarefas reportadas como 'ok', sem mudanças desnecessárias.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| SSH sem senha do controlador para o alvo | ssh usuario@192.168.56.20 'echo ok' | Saída 'ok' sem pedir senha |
| Pacote clínico instalado | ssh usuario@192.168.56.20 'dpkg -l | grep gnuhealth' | Linha contendo 'gnuhealth' aparece |
| Firewall ativo e SSH permitido | ssh usuario@192.168.56.20 'sudo ufw status' | Status: active; 22/tcp ALLOW |
| Idempotência do playbook | ansible-playbook -i ~/inventario ~/provisiona_clinica.yml | Tarefas reportadas como 'ok' sem mudanças |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Erro de permissão ao rodar playbook | Usuário do alvo sem sudo sem senha | Adicione o usuário ao grupo sudo e configure sudoers conforme a documentação |
| Falha de conexão SSH | Chave pública não copiada ou firewall bloqueando | Reenvie a chave com ssh-copy-id e confira as regras do UFW |
| Pacote gnuhealth não encontrado | Repositório não habilitado | Atualize apt e habilite repositórios necessários |
| Playbook falha por sintaxe YAML | Erro de indentação ou formatação | Valide o YAML em yaml.org/spec e corrija |
Segurança e hardening
- Use chaves SSH fortes e exclusivas para automação
- Restrinja o acesso SSH apenas ao controlador
- Ative e configure o firewall (UFW) no alvo
- Revise permissões sudo do usuário remoto
- Remova serviços desnecessários do servidor clínico
Checklist final
Referências
- Documentação oficial do Ansible · Ansible (Red Hat) (docs.ansible.com)
- Especificação YAML · Yaml (yaml.org)
- 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
