Entrar ou criar conta

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.

Automação de infraestrutura de TI para supermercados com Ansible
Ligado ao treinamento Automação de infraestrutura de TI para supermercados com Ansible

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.

ULC-LAB-SUPE-0002 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
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
Objetivo

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

ItemRequisito, 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
AnsibleGPLv3 · 2.14
OpenSSHBSD · a versão estável atual
Apache HTTP ServerApache License 2.0 · a versão estável atual

Roteiro

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

    O que você deve ver: Serviço SSH rodando em todas as VMs.

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

    O que você deve ver: Acesso SSH sem senha para todos os servidores-alvo.

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

    O que você deve ver: Arquivo hosts.ini criado com os três servidores listados.

  4. Testar conectividade Ansible

    Valide a comunicação entre o Ansible e os servidores usando o módulo ping.

    ansible -i hosts.ini supermercado -m ping

    O que você deve ver: Saída 'pong' para cada servidor.

  5. 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: sudo

    O que você deve ver: Playbook salvo como playbook.yml.

  6. Executar o playbook

    Aplique o playbook em todos os servidores do inventário.

    ansible-playbook -i hosts.ini playbook.yml

    O que você deve ver: Saída mostrando tarefas executadas com sucesso em todos os servidores.

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

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

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

    O que você deve ver: Tarefas marcadas como 'ok', sem alterações.

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

TesteComandoCritério
Verificar acesso web ao Apachecurl http://192.168.56.11Receber HTML padrão do Apache.
Validar sincronização NTPansible -i hosts.ini supermercado -a 'ntpq -p'Tabela de peers NTP exibida.
Checar usuário adminansible -i hosts.ini supermercado -a 'getent passwd admin'Linha do usuário admin exibida.
Testar idempotênciaansible-playbook -i hosts.ini playbook.ymlSem tarefas marcadas como 'changed'.

Troubleshooting

SintomaCausa provávelCorreção
Erro de permissão SSHChave SSH não copiada corretamenteExecute ssh-copy-id novamente e teste 'ssh user@host' manualmente.
Módulo apt falhaDistribuição não é Debian/UbuntuAdapte o playbook para usar o módulo 'yum' em sistemas Red Hat.
Serviço Apache não iniciaPorta 80 ocupada ou firewall ativoVerifique com 'sudo lsof -i :80' e ajuste regras de firewall.
Playbook não encontra hostsErro de sintaxe no arquivo hosts.iniRevise 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

  1. Documentação oficial do Ansible · Ansible (Red Hat) (docs.ansible.com)
  2. Coleções Ansible · Ansible (Red Hat) (docs.ansible.com)
Verificação editorial
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
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.