Entrar ou criar conta

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

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