Entrar ou criar conta

Laboratório: Provisionamento e Configuração de Servidores Web Apache com Ansible

Você irá provisionar e configurar automaticamente dois servidores web Apache em máquinas virtuais usando Ansible, partindo do zero. Em cerca de 2 horas, terá uma infraestrutura mínima automatizada e validada.

Automação de infraestrutura de TI com Ansible
Ligado ao treinamento Automação de infraestrutura de TI 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-DEVO-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
12
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

O objetivo é demonstrar, na prática, como o Ansible pode automatizar o provisionamento e a configuração de servidores Linux para rodar um serviço web. Você vai criar um playbook do zero, aplicar em múltiplos hosts e validar o resultado, entendendo cada etapa do processo.

Topologia

Uma máquina de controle (Ansible) conecta via SSH a duas máquinas alvo (web1 e web2), todas em uma rede privada (exemplo: 192.168.56.0/24). O controle executa os playbooks e gerencia as configurações dos servidores web.

                +----------------+
                |  Ansible      |
                |  Controller   |
                |192.168.56.10  |
                +-------+--------+
                        |
        +---------------+---------------+
        |                               |
+-------+--------+             +--------+-------+
|   web1         |             |   web2         |
|192.168.56.11   |             |192.168.56.12   |
+----------------+             +----------------+

Equipamentos e software

ItemRequisito, licença ou versão
VM ou máquina física para Ansible Controller1 vCPU, 1 GB RAM, 1 porta de rede, Ubuntu 22.04 ou CentOS 8
VM ou máquina física para web11 vCPU, 512 MB RAM, 1 porta de rede, Ubuntu 22.04 ou CentOS 8
VM ou máquina física para web21 vCPU, 512 MB RAM, 1 porta de rede, Ubuntu 22.04 ou CentOS 8
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 e a rede

    Crie três VMs (uma para o Ansible Controller, duas para web) na mesma rede privada. Isso garante conectividade SSH.

    O que você deve ver: As três VMs conseguem se pingar usando IPs privados.

  2. Configurar acesso SSH sem senha

    No Controller, gere uma chave SSH e copie para web1 e web2. Isso é pré-requisito para automação sem intervenção.

    ssh-keygen -t ed25519
    ssh-copy-id user@192.168.56.11
    ssh-copy-id user@192.168.56.12

    O que você deve ver: Acesso SSH do Controller para web1 e web2 sem pedir senha.

  3. Instalar o Ansible no Controller

    Instale o Ansible usando o gerenciador de pacotes. O Ansible é a ferramenta central deste laboratório.

    sudo apt update && sudo apt install ansible -y # Ubuntu
    sudo dnf install ansible -y # CentOS

    O que você deve ver: Comando 'ansible --version' retorna a versão instalada.

  4. Criar arquivo de inventário

    Defina os hosts gerenciados em um arquivo 'hosts' no Controller. O inventário é o ponto de partida de toda automação com Ansible.

    cat > hosts <<EOF
    [webservers]
    192.168.56.11
    192.168.56.12
    EOF

    O que você deve ver: Arquivo 'hosts' criado com os IPs dos servidores web.

  5. Testar conectividade Ansible

    Use o módulo 'ping' do Ansible para testar comunicação com os alvos. Isso valida o setup SSH e inventário.

    ansible -i hosts webservers -m ping -u user

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

  6. Criar playbook para instalar Apache

    Escreva um playbook YAML que instala e inicia o Apache. O playbook é o coração da automação.

    cat > apache.yml <<EOF
    - hosts: webservers
      become: yes
      tasks:
        - name: Instalar Apache
          apt:
            name: apache2
            state: present
          when: ansible_os_family == 'Debian'
        - name: Instalar Apache (CentOS)
          yum:
            name: httpd
            state: present
          when: ansible_os_family == 'RedHat'
        - name: Iniciar e habilitar Apache
          service:
            name: "{{ 'apache2' if ansible_os_family == 'Debian' else 'httpd' }}"
            state: started
            enabled: yes
    EOF

    O que você deve ver: Arquivo 'apache.yml' criado com as tarefas de instalação e inicialização.

  7. Executar o playbook

    Rode o playbook para instalar e iniciar o Apache nos dois servidores. Isso demonstra a automação em ação.

    ansible-playbook -i hosts apache.yml -u user

    O que você deve ver: Saída mostra tarefas OK ou changed para cada host.

  8. Verificar status do Apache manualmente

    Confirme que o Apache está rodando em cada servidor. Isso valida o resultado do playbook.

    ssh user@192.168.56.11 'sudo systemctl status apache2 || sudo systemctl status httpd'
    ssh user@192.168.56.12 'sudo systemctl status apache2 || sudo systemctl status httpd'

    O que você deve ver: Status 'active (running)' para o serviço Apache.

  9. Testar acesso HTTP

    Acesse a página padrão do Apache via curl a partir do Controller. Isso garante que o serviço está disponível na rede.

    curl http://192.168.56.11
    curl http://192.168.56.12

    O que você deve ver: Retorno contém 'Apache2 Ubuntu Default Page' ou equivalente.

  10. Modificar página inicial via Ansible

    Adicione uma tarefa ao playbook para criar um index.html personalizado. Isso mostra como gerenciar conteúdo.

    cat >> apache.yml <<EOF
        - name: Criar página inicial personalizada
          copy:
            dest: /var/www/html/index.html
            content: "Servidor gerenciado por Ansible"
            owner: www-data
            group: www-data
            mode: '0644'
    EOF

    O que você deve ver: Playbook atualizado com nova tarefa.

  11. Reaplicar o playbook

    Execute novamente para aplicar a nova configuração. O Ansible é idempotente: só muda o que precisa.

    ansible-playbook -i hosts apache.yml -u user

    O que você deve ver: Saída mostra tarefa de cópia como changed.

  12. Validar página personalizada

    Acesse novamente via curl e verifique o conteúdo. Isso confirma que a automação alterou o serviço.

    curl http://192.168.56.11
    curl http://192.168.56.12

    O que você deve ver: Retorno contém 'Servidor gerenciado por Ansible'.

Como saber que funcionou

TesteComandoCritério
Conectividade Ansible com todos os hostsansible -i hosts webservers -m ping -u userTodos retornam 'pong'
Apache rodando nos dois servidoresssh user@192.168.56.11 'sudo systemctl status apache2 || sudo systemctl status httpd'Status 'active (running)'
Acesso HTTP funcionalcurl http://192.168.56.11Página padrão ou personalizada do Apache aparece
Página inicial personalizada entreguecurl http://192.168.56.11Retorno contém 'Servidor gerenciado por Ansible'

Troubleshooting

SintomaCausa provávelCorreção
Erro de permissão ao rodar playbookUsuário remoto não tem sudo sem senhaConfigure sudoers para o usuário ou use --ask-become-pass
Falha de conexão SSHChave SSH não copiada ou firewall bloqueandoVerifique ssh-copy-id e regras de firewall
Apache não iniciaPorta 80 já em uso ou erro de instalaçãoVerifique logs do Apache e libere a porta
Página personalizada não apareceCache do navegador ou erro de permissão no arquivoLimpe cache e confira permissões do index.html

Segurança e hardening

  • Restrinja o acesso SSH apenas ao Controller
  • Utilize chaves SSH fortes e nunca compartilhe a privada
  • Remova ou limite o uso de sudo sem senha após o laboratório
  • Verifique permissões dos arquivos gerados pelo Ansible
  • Não exponha as VMs à internet pública sem firewall

Checklist final

Referências

  1. Documentação oficial do Ansible · Ansible (Red Hat) (docs.ansible.com)
  2. Documentação de inventário do Ansible · Ansible (Red Hat) (docs.ansible.com)
  3. Documentação de playbooks · 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
3 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.