Entrar ou criar conta

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.

Ansible do zero à automação de infraestrutura de TI para supermercados
Ligado ao treinamento Ansible do zero à automação de infraestrutura de TI para supermercados
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.