Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Provisionamento automatizado de dois servidores Linux com Ansible

Você vai automatizar a configuração de dois servidores Linux em máquinas virtuais usando Ansible, com inventário local e playbook YAML. Em cerca de 2 horas, terá um ambiente básico de automação funcional.

Provisionamento automatizado de infraestrutura com Ansible
Ligado ao treinamento Provisionamento automatizado de infraestrutura com Ansible
ULC-LAB-INFR-0004 · 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
5
Versões da documentação consultada
Ansible 2.15 · OpenSSH a versão estável atual · Linux (Ubuntu ou CentOS) a versão estável atual
Objetivo

Demonstrar, na prática, como o Ansible automatiza a instalação de pacotes, criação de usuários e configuração de serviços em múltiplos servidores Linux. O laboratório mostra o ciclo completo: instalação do Ansible, preparação do inventário, criação de playbook e execução remota das tarefas. O foco é entender o porquê da automação: padronização, velocidade e redução de erros humanos.

Topologia

Três máquinas: uma VM controladora (Ansible) e duas VMs alvo (servidores Linux). Todas em uma rede privada virtual (exemplo: 192.168.56.0/24). O control node acessa os managed nodes via SSH.

           +-------------------+
           |  Controladora    |
           |  (Ansible)       |
           | 192.168.56.10    |
           +--------+---------+
                    |
   +----------------+----------------+
   |                                 |
+--+-----------+           +---------+--+
| Managed Node |           | Managed Node |
|   (srv1)     |           |   (srv2)     |
|192.168.56.11 |           |192.168.56.12 |
+--------------+           +--------------+

Equipamentos e software

ItemRequisito, licença ou versão
VM Linux (controladora)1 vCPU, 1 GB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8
VM Linux (alvo 1)1 vCPU, 512 MB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8
VM Linux (alvo 2)1 vCPU, 512 MB RAM, 1 interface de rede, Ubuntu 22.04 ou CentOS 8
AnsibleGPLv3 · 2.15
OpenSSHBSD · a versão estável atual
Linux (Ubuntu ou CentOS)GPLv2 · a versão estável atual

Roteiro

  1. Preparar as VMs e rede

    Crie três VMs em sua máquina local ou em um ambiente de virtualização. Configure-as na mesma rede virtual privada. Defina IPs estáticos: controladora (192.168.56.10), srv1 (192.168.56.11), srv2 (192.168.56.12).

    O que você deve ver: As três VMs se enxergam via ping.

  2. Instalar o Ansible na controladora

    O Ansible só precisa ser instalado na máquina controladora. Use o gerenciador de pacotes adequado.

    sudo apt update && sudo apt install ansible -y

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

  3. Configurar acesso SSH sem senha

    O Ansible usa SSH para acessar os nodes. Gere uma chave SSH na controladora e copie para os managed nodes.

    ssh-keygen -t ed25519 -C "ansible-lab"
    ssh-copy-id user@192.168.56.11
    ssh-copy-id user@192.168.56.12

    O que você deve ver: Acesso SSH entre controladora e nodes sem pedir senha.

  4. Testar conectividade SSH

    Verifique se o usuário consegue acessar ambos os nodes via SSH.

    ssh user@192.168.56.11 'hostname'
    ssh user@192.168.56.12 'hostname'

    O que você deve ver: O hostname de cada VM aparece na tela.

  5. Criar inventário Ansible

    O inventário define quais máquinas o Ansible vai gerenciar. Crie um arquivo chamado 'hosts' no diretório do projeto.

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

    O que você deve ver: O arquivo 'hosts' contém os IPs dos nodes.

  6. Testar o inventário com Ansible ad-hoc

    Use um comando ad-hoc do Ansible para testar a comunicação.

    ansible -i hosts srv -m ping -u user

    O que você deve ver: Retorno 'pong' para cada node.

  7. Criar um playbook básico

    O playbook define as tarefas de automação. Crie 'site.yml' para instalar o pacote 'htop', criar usuário 'devops' e garantir o serviço SSH ativo.

    cat > site.yml <<EOF
    - hosts: srv
      become: yes
      tasks:
        - name: Instalar htop
          apt:
            name: htop
            state: present
          when: ansible_os_family == 'Debian'
        - name: Instalar htop (CentOS)
          yum:
            name: htop
            state: present
          when: ansible_os_family == 'RedHat'
        - name: Criar usuário devops
          user:
            name: devops
            state: present
        - name: Garantir SSH ativo
          service:
            name: ssh
            state: started
            enabled: yes
          when: ansible_os_family == 'Debian'
        - name: Garantir SSH ativo (CentOS)
          service:
            name: sshd
            state: started
            enabled: yes
          when: ansible_os_family == 'RedHat'
    EOF

    O que você deve ver: Arquivo YAML criado com as tarefas.

  8. Executar o playbook

    Rode o playbook para aplicar as configurações nos nodes.

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

    O que você deve ver: Saída mostra cada tarefa sendo aplicada e status 'changed' ou 'ok'.

  9. Verificar criação do usuário

    Confirme que o usuário 'devops' foi criado em ambos os nodes.

    ssh user@192.168.56.11 'id devops'
    ssh user@192.168.56.12 'id devops'

    O que você deve ver: Exibe UID, GID e grupos do usuário 'devops'.

  10. Verificar instalação do htop

    Cheque se o pacote 'htop' está instalado.

    ssh user@192.168.56.11 'htop --version'
    ssh user@192.168.56.12 'htop --version'

    O que você deve ver: Versão do htop exibida nos dois nodes.

  11. Verificar status do serviço SSH

    Confirme que o serviço SSH está ativo e habilitado.

    ssh user@192.168.56.11 'systemctl status ssh || systemctl status sshd'
    ssh user@192.168.56.12 'systemctl status ssh || systemctl status sshd'

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

  12. Reexecutar o playbook (idempotência)

    Execute novamente o playbook para observar o comportamento idempotente (não deve alterar nada se já está conforme).

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

    O que você deve ver: Saída mostra status 'ok' para todas as tarefas, sem 'changed'.

Como saber que funcionou

TesteComandoCritério
Conectividade SSH sem senhassh user@192.168.56.11 'echo ok'Retorno 'ok' sem solicitar senha
Execução ad-hoc com Ansibleansible -i hosts srv -m ping -u userRetorno 'pong' para cada node
Usuário devops criadossh user@192.168.56.11 'id devops'Exibe informações do usuário devops
Pacote htop instaladossh user@192.168.56.12 'htop --version'Versão do htop exibida
Serviço SSH ativossh user@192.168.56.12 'systemctl is-active ssh || systemctl is-active sshd'Saída 'active'

Troubleshooting

SintomaCausa provávelCorreção
Falha ao conectar via SSHChave SSH não copiada ou permissão incorretaVerifique permissões (~/.ssh) e repita ssh-copy-id
Erro 'UNREACHABLE' no AnsibleIP errado no inventário ou firewall bloqueando porta 22Confirme IPs e regras de firewall
Pacote não encontrado ao instalar htopRepositórios desatualizados ou sistema não suportadoAtualize repositórios (apt update/yum update) e tente novamente
Serviço SSH não iniciaNome do serviço diferente entre distribuiçõesUse 'ssh' para Debian/Ubuntu e 'sshd' para CentOS/RedHat

Segurança e hardening

  • Chaves SSH devem ter permissões restritas (600 para id_ed25519, 700 para ~/.ssh)
  • Usuário Ansible não deve ser root direto; use become para tarefas privilegiadas
  • Remova chaves SSH de teste após o laboratório
  • Não exponha as VMs de laboratório em redes públicas sem firewall

Checklist final

Referências

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