Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Automação de Provisionamento Seguro de Servidores Linux com Ansible e HashiCorp Vault

Você vai automatizar o provisionamento de um servidor Linux usando Ansible, extraindo segredos (como senhas e tokens) de um Vault seguro. Em cerca de 2 horas, terá um ambiente funcional com automação e segurança integradas.

Automação e segurança de cloud com Ansible e HashiCorp Vault
Ligado ao treinamento Automação e segurança de cloud com Ansible e HashiCorp Vault
ULC-LAB-CLOU-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.15 · HashiCorp Vault 1.13 · OpenSSH a versão estável atual
Objetivo

Demonstrar como integrar Ansible e HashiCorp Vault para provisionar servidores de forma automatizada e segura. O laboratório cobre desde a instalação básica até a execução de um playbook que busca segredos do Vault, aplica configurações e valida o resultado. O foco é mostrar práticas recomendadas para não expor credenciais em arquivos ou variáveis locais, usando apenas software livre.

Topologia

Você usará três VMs em uma rede privada: uma VM para o Ansible Controller (192.168.56.10), uma para o HashiCorp Vault Server (192.168.56.11) e uma VM alvo para provisionamento (192.168.56.20). O Ansible Controller acessa o Vault e a VM alvo. O Vault só aceita conexões do Controller.


+-------------------+        +------------------+
|  Ansible Control  | <----> |  Vault Server    |
| 192.168.56.10     |        | 192.168.56.11    |
+-------------------+        +------------------+
         |
         |
         v
+-------------------+
|   VM Alvo         |
| 192.168.56.20     |
+-------------------+

Equipamentos e software

ItemRequisito, licença ou versão
VM Ansible Controller1 vCPU, 1GB RAM, Ubuntu 22.04 ou CentOS 8
VM HashiCorp Vault Server1 vCPU, 1GB RAM, Ubuntu 22.04 ou CentOS 8
VM Alvo (Linux)1 vCPU, 512MB RAM, Ubuntu 22.04 ou CentOS 8
AnsibleGPLv3 · 2.15
HashiCorp VaultMPL 2.0 · 1.13
OpenSSHBSD · a versão estável atual

Roteiro

  1. Preparar as VMs e rede

    Crie três VMs (Controller, Vault, Alvo) em uma rede privada. Garanta que todas se pingam.

    O que você deve ver: Ping entre as VMs retorna pacotes.

  2. Instalar o Ansible no Controller

    Instale o Ansible para automatizar tarefas.

    sudo apt update && sudo apt install ansible -y

    O que você deve ver: Ansible instalado. 'ansible --version' mostra a versão.

  3. Instalar o Vault Server

    Instale o HashiCorp Vault na VM dedicada.

    Consulte a documentação oficial para o pacote adequado ao seu sistema.

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

  4. Inicializar e desbloquear o Vault

    O Vault exige inicialização e unseal para operar. Isso gera chaves de desbloqueio e root token.

    vault operator init
    vault operator unseal

    O que você deve ver: Vault mostra chaves de unseal e root token. Status 'initialized' e 'sealed: false'.

  5. Configurar política e usuário no Vault

    Crie uma política restrita e um token de acesso para o Ansible.

    vault policy write ansible-policy - <<EOF
    path "secret/data/*" {
      capabilities = ["read"]
    }
    EOF
    vault token create -policy=ansible-policy

    O que você deve ver: Token de acesso para Ansible gerado.

  6. Armazenar um segredo no Vault

    Insira um segredo (ex: senha de usuário) para ser lido pelo Ansible.

    vault kv put secret/ansible_lab user_password=SenhaForte123

    O que você deve ver: Mensagem de sucesso do Vault.

  7. Instalar dependências Python para Ansible e Vault

    O Ansible precisa do módulo hvac para acessar o Vault.

    sudo apt install python3-pip -y
    pip3 install hvac

    O que você deve ver: hvac instalado sem erros.

  8. Configurar acesso SSH da Controller para a VM Alvo

    Gere chave SSH e copie para a VM Alvo para automação sem senha.

    ssh-keygen -t ed25519
    ssh-copy-id user@192.168.56.20

    O que você deve ver: Login SSH sem senha na VM Alvo.

  9. Criar inventário e playbook do Ansible

    Monte um inventário simples e um playbook que cria um usuário com senha vinda do Vault.

    [alvo]
    192.168.56.20 ansible_user=user
    
    ---
    - hosts: alvo
      vars:
        vault_addr: "http://192.168.56.11:8200"
        vault_token: "<token do passo 5>"
      tasks:
        - name: Buscar senha do Vault
          set_fact:
            user_password: "{{ lookup('community.hashi_vault.hashi_vault', 'secret=secret/ansible_lab:user_password token=' + vault_token + ' url=' + vault_addr) }}"
        - name: Criar usuário seguro
          user:
            name: seguro
            password: "{{ user_password | password_hash('sha512') }}"

    O que você deve ver: Arquivos salvos sem erros.

  10. Instalar coleção Ansible para HashiCorp Vault

    A coleção community.hashi_vault é necessária para o lookup.

    ansible-galaxy collection install community.hashi_vault

    O que você deve ver: Coleção instalada com sucesso.

  11. Executar o playbook

    Rode o playbook para provisionar o usuário seguro com senha retirada do Vault.

    ansible-playbook -i inventario playbook.yml

    O que você deve ver: Saída mostra tarefas OK e usuário criado.

  12. Verificar logs e auditoria do Vault

    Confirme que o Vault registrou o acesso ao segredo.

    Consulte a documentação sobre audit devices do Vault.

    O que você deve ver: Registro do acesso ao segredo aparece nos logs configurados.

Como saber que funcionou

TesteComandoCritério
Acesso SSH com o usuário criadossh seguro@192.168.56.20Login permitido com a senha do Vault.
Verificar usuário criadogetent passwd seguroLinha com usuário seguro aparece.
Checar se senha bate com a do Vaultsudo su - seguroA senha é aceita.
Verificar acesso ao Vault via APIcurl --header "X-Vault-Token: <token>" http://192.168.56.11:8200/v1/secret/data/ansible_labRetorno JSON com o segredo.

Troubleshooting

SintomaCausa provávelCorreção
Erro de autenticação no VaultToken expirado ou política insuficienteCrie novo token e revise a política.
Usuário não criado na VM AlvoFalha no lookup do Vault ou permissão SSHVerifique logs do Ansible e acesso SSH.
Senha não aceita no loginHash incorreto ou senha não aplicadaConfirme o filtro password_hash e refaça o playbook.
Playbook falha na tarefa de buscar segredoColeção community.hashi_vault ausenteInstale a coleção com ansible-galaxy.

Segurança e hardening

  • Nunca armazene tokens do Vault em arquivos públicos ou repositórios.
  • Restrinja o acesso de rede ao Vault apenas ao Controller.
  • Use políticas de menor privilégio no Vault para os tokens de automação.
  • Habilite e monitore logs de auditoria do Vault.
  • Proteja as chaves de unseal e root token fora do ambiente das VMs.

Checklist final

Referências

  1. Documentação Oficial do Ansible · Ansible (Red Hat) (docs.ansible.com)
  2. Documentação Oficial do HashiCorp Vault · HashiCorp (developer.hashicorp.com)
  3. Documentação Oficial do Python · Python Software Foundation (python.org)
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.