ULC Lab · implementação reproduzível
Laboratório: Provisionamento automatizado de uma máquina virtual Ubuntu no VirtualBox usando Terraform
Você terá uma máquina virtual Ubuntu provisionada automaticamente no VirtualBox, controlada por arquivos Terraform. O laboratório leva cerca de 2 horas para ser concluído.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 4
- Versões da documentação consultada
- Terraform 1.6.x · VirtualBox 7.x · Ubuntu Server ISO 22.04 LTS · Provider VirtualBox para Terraform consulte a documentação
Demonstrar como usar Terraform para criar, destruir e versionar uma máquina virtual localmente, sem depender de nuvem pública. O laboratório mostra como Infraestrutura como Código facilita a reprodutibilidade e o controle de mudanças, mesmo em ambientes de laboratório ou desenvolvimento.
Topologia
Seu computador hospeda o VirtualBox e o Terraform. O Terraform controla o VirtualBox via provider, criando uma VM Ubuntu com endereço privado (exemplo: 192.168.56.10) em uma rede interna do VirtualBox. Não há conexão externa obrigatória.
+--------------------+
| Seu PC/Host |
|--------------------|
| Terraform CLI |
| VirtualBox |
+--------+-----------+
|
v
+--------------+
| VM Ubuntu |
|192.168.56.10 |
+--------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| PC ou notebook | 2 vCPU, 4 GB RAM, 20 GB livres, suporte a virtualização |
| Conexão à Internet | Para baixar ISOs e pacotes |
| Terraform | MPL 2.0 · 1.6.x |
| VirtualBox | GPLv2 · 7.x |
| Ubuntu Server ISO | GPL/LGPL · 22.04 LTS |
| Provider VirtualBox para Terraform | MPL 2.0 · consulte a documentação |
Roteiro
- Preparar ambiente local
Você precisa do Terraform e do VirtualBox instalados. O VirtualBox permite criar VMs locais. O Terraform orquestra tudo via provider.
sudo apt update && sudo apt install virtualbox curl -fsSL https://releases.hashicorp.com/terraform/1.6.6/terraform_1.6.6_linux_amd64.zip -o terraform.zip unzip terraform.zip && sudo mv terraform /usr/local/bin/O que você deve ver: VirtualBox e Terraform disponíveis no terminal.
- Baixar ISO do Ubuntu Server
A VM será provisionada a partir da ISO oficial do Ubuntu. Isso garante reprodutibilidade.
wget https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.isoO que você deve ver: Arquivo ISO salvo no diretório atual.
- Instalar o provider VirtualBox do Terraform
O Terraform precisa de um provider para controlar o VirtualBox. O provider é um plugin externo.
Consulte a documentação: https://github.com/terra-farm/terraform-provider-virtualbox#installationO que você deve ver: Provider instalado e disponível para o Terraform.
- Criar diretório do projeto e arquivos iniciais
Organize seu código em um diretório dedicado. Isso facilita versionamento e manutenção.
mkdir lab-terraform-vbox && cd lab-terraform-vbox touch main.tf variables.tf outputs.tfO que você deve ver: Diretório e arquivos vazios criados.
- Definir o provider no main.tf
O Terraform precisa saber qual provider usar e onde está o VirtualBox.
provider "virtualbox" { version = "~> 0.2" }O que você deve ver: Arquivo main.tf com bloco provider configurado.
- Declarar recursos: VM, disco e rede
Você precisa definir recursos básicos: disco, rede e a máquina virtual em si. Isso torna o provisionamento idempotente.
resource "virtualbox_vm" "ubuntu" { name = "lab-ubuntu" image = "${path.module}/ubuntu-22.04.4-live-server-amd64.iso" cpus = 2 memory = 2048 network_adapter { type = "hostonly" host_interface = "vboxnet0" } storage_controller { name = "SATA Controller" type = "sata" port_count = 1 } disk { image = "${path.module}/ubuntu-22.04.4-live-server-amd64.iso" port = 0 } }O que você deve ver: main.tf com recursos definidos. Não execute ainda.
- Inicializar o Terraform
O Terraform precisa baixar plugins e preparar o ambiente.
terraform initO que você deve ver: Mensagem de sucesso indicando inicialização e plugins instalados.
- Executar o plano de provisionamento
O comando 'plan' mostra o que será criado, sem executar. Isso evita surpresas.
terraform planO que você deve ver: Resumo das ações: criação da VM, disco e rede.
- Aplicar o provisionamento
O comando 'apply' executa de fato as mudanças. O Terraform cria a VM no VirtualBox.
terraform applyO que você deve ver: VM criada, disco anexado, rede configurada. Mensagem final de sucesso.
- Verificar a VM no VirtualBox
Abra o VirtualBox para ver a VM criada. Isso valida o provisionamento físico.
virtualbox &O que você deve ver: VM 'lab-ubuntu' listada e em execução.
- Acessar a VM via console do VirtualBox
Abra o console da VM para ver o boot do Ubuntu. Isso garante que a ISO foi usada corretamente.
N/AO que você deve ver: Tela de instalação do Ubuntu Server exibida na VM.
- Destruir a infraestrutura criada
O comando 'destroy' remove todos os recursos criados. Isso garante reprodutibilidade e evita resíduos.
terraform destroyO que você deve ver: VM removida do VirtualBox e recursos destruídos.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar existência da VM no VirtualBox | VBoxManage list vms | A VM 'lab-ubuntu' aparece na lista após o apply, e some após o destroy. |
| Checar arquivos de estado do Terraform | ls *.tfstate | Arquivo terraform.tfstate presente e atualizado após apply. |
| Verificar logs do Terraform | cat terraform.tfstate | Recursos declarados aparecem no estado. |
| Acessar console da VM | Abrir VirtualBox e conectar à VM | Tela de boot do Ubuntu visível. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Erro: Provider não encontrado | Provider VirtualBox não instalado corretamente | Siga as instruções do provider em https://github.com/terra-farm/terraform-provider-virtualbox#installation |
| VM não aparece no VirtualBox | Terraform não aplicou o plano ou erro de permissão | Verifique logs do Terraform e permissões do usuário |
| Erro de rede host-only | Interface vboxnet0 não criada | Crie a interface no VirtualBox antes de aplicar |
| ISO não encontrada | Caminho da ISO incorreto no main.tf | Corrija o caminho para o arquivo ISO baixado |
Segurança e hardening
- Não exponha a rede host-only para a Internet
- Mantenha o Terraform atualizado para evitar vulnerabilidades conhecidas
- Não compartilhe arquivos .tfstate sem revisão, pois podem conter dados sensíveis
Checklist final
Referências
- Terraform Documentation · HashiCorp (developer.hashicorp.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 1 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
