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.

- 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
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
| Item | Requisito, licença ou versão |
|---|---|
| VM Ansible Controller | 1 vCPU, 1GB RAM, Ubuntu 22.04 ou CentOS 8 |
| VM HashiCorp Vault Server | 1 vCPU, 1GB RAM, Ubuntu 22.04 ou CentOS 8 |
| VM Alvo (Linux) | 1 vCPU, 512MB RAM, Ubuntu 22.04 ou CentOS 8 |
| Ansible | GPLv3 · 2.15 |
| HashiCorp Vault | MPL 2.0 · 1.13 |
| OpenSSH | BSD · a versão estável atual |
Roteiro
- 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.
- Instalar o Ansible no Controller
Instale o Ansible para automatizar tarefas.
sudo apt update && sudo apt install ansible -yO que você deve ver: Ansible instalado. 'ansible --version' mostra a versão.
- 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.
- 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 unsealO que você deve ver: Vault mostra chaves de unseal e root token. Status 'initialized' e 'sealed: false'.
- 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-policyO que você deve ver: Token de acesso para Ansible gerado.
- 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=SenhaForte123O que você deve ver: Mensagem de sucesso do Vault.
- 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 hvacO que você deve ver: hvac instalado sem erros.
- 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.20O que você deve ver: Login SSH sem senha na VM Alvo.
- 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.
- Instalar coleção Ansible para HashiCorp Vault
A coleção community.hashi_vault é necessária para o lookup.
ansible-galaxy collection install community.hashi_vaultO que você deve ver: Coleção instalada com sucesso.
- Executar o playbook
Rode o playbook para provisionar o usuário seguro com senha retirada do Vault.
ansible-playbook -i inventario playbook.ymlO que você deve ver: Saída mostra tarefas OK e usuário criado.
- 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
| Teste | Comando | Critério |
|---|---|---|
| Acesso SSH com o usuário criado | ssh seguro@192.168.56.20 | Login permitido com a senha do Vault. |
| Verificar usuário criado | getent passwd seguro | Linha com usuário seguro aparece. |
| Checar se senha bate com a do Vault | sudo su - seguro | A senha é aceita. |
| Verificar acesso ao Vault via API | curl --header "X-Vault-Token: <token>" http://192.168.56.11:8200/v1/secret/data/ansible_lab | Retorno JSON com o segredo. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Erro de autenticação no Vault | Token expirado ou política insuficiente | Crie novo token e revise a política. |
| Usuário não criado na VM Alvo | Falha no lookup do Vault ou permissão SSH | Verifique logs do Ansible e acesso SSH. |
| Senha não aceita no login | Hash incorreto ou senha não aplicada | Confirme o filtro password_hash e refaça o playbook. |
| Playbook falha na tarefa de buscar segredo | Coleção community.hashi_vault ausente | Instale 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
- Documentação Oficial do Ansible · Ansible (Red Hat) (docs.ansible.com)
- Documentação Oficial do HashiCorp Vault · HashiCorp (developer.hashicorp.com)
- Documentação Oficial do Python · Python Software Foundation (python.org)
- 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
