- Publicado em
Usando o Vagrant para criar laboratórios virtuais - Parte I
- Autores
- Nome
- Felipe Padilha
Índice
Introdução
O Vagrant é uma ferramenta de automação criada para facilitar o provisionamento de ambientes virtuais consistentes. Com ele, você pode criar, destruir e versionar máquinas virtuais com apenas alguns comandos e um simples arquivo de configuração (Vagrantfile).
Em um cenário técnico — especialmente para profissionais de redes, DevOps e desenvolvimento — o Vagrant é uma mão na roda para:
- Criar laboratórios locais rápidos;
- Garantir que o ambiente de testes ou desenvolvimento seja idêntico ao ambiente de produção;
- Padronizar ambientes entre equipes;
- Integrar com ferramentas como Ansible em pipelines de automação.
Requisitos
Antes de instalar o Vagrant, você precisa garantir que alguns pacotes estejam disponíveis no seu sistema:
- Python Dependência para o VirtualBox que será o hipervisor que vamos utilizar para criação dos laboratórios virutais com o Vagrant.
É possível usar muitos outros hipervisores junto do Vagrant, incluindo o VMware Workstation Pro, porém, no dia a dia percebo que é muito mais simples e prático o combo VirtualBox + Vagrant.
Python Windows 32 API Caso esteja utilizando Windows, após a instalação do Python será necessário indtalar uma biblioteca que o VirtualBox utiliza, abra o CMD e digite:
python -m pip install pywin32
.VirtualBox O VirtualBox será o provedor de virtualização padrão utilizado para criar as VMs. É possível baixá-lo diretamente do site oficial.
Instalação do Vagrant
As instruções de instalação se encontram diretamente no site do Vagrant, estou apenas reproduzindo os comandos citados na página.
macOS
brew tap hashicorp/tap
brew install hashicorp/tap/hashicorp-vagrant
Se você utiliza macOS com chips M (arquitetura ARM), pode não ser possível seguir todos os passos descritos neste artigo sem antes ajustar alguns comandos, nem todas as imagens estão disponíveis fora da arquitetura x86.
Linux (Debian/Ubuntu)
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant
Não é possível utilizar o WSL para instalação do Vagrant, pois, ele precisa se comunicar diretamente com o processo do VirtualBox que roda no hospedeiro Windows.
Windows
Por favor, acesse a página de download do Vagrant para baixar o executável da última versão disponível.




Vagrantfiles
O Vagrantfile é um arquivo de configuração que define como a máquina virtual será criada, configurada, provisionada e conectada. Ele é escrito em Ruby, mas o Vagrant fornece uma DSL (Domain Specific Language) simplificada — você não precisa ser programador Ruby para usá-lo.
A sua estrutura base é assim:
Vagrant.configure("2") do |config|
# configurações vão aqui
end
Vagrant.configure("2") do |config|
Esse bloco indica que estamos usando a versão 2 da sintaxe do Vagrantfile, que é a mais atual e estável. O objeto config é usado para referenciar as opções de configuração que vamos aplicar.
Componentes principais do Vagrantfile
config.vm.box
config.vm.box = "ubuntu/jammy64"
Define a box base (imagem do sistema operacional). Ao rodar vagrant up, o Vagrant faz o download da box e a usa como base da VM. Você pode usar boxes públicas do Vagrant Cloud.
Se você estiver usando macOS com processadores ARM, procure por boxes que suporte a arquitetura.
config.vm.hostname
config.vm.hostname = "lab-vm"
Define o hostname da máquina virtual (exibido, por exemplo, no prompt do shell dentro da VM).
config.vm.network
config.vm.network "public_network", type: "dhcp"
Configura o tipo de rede da VM. Pode ser:
- public_network: conecta a VM à rede física (modo bridge)
- private_network: cria uma rede interna (sem acesso à internet)
- forwarded_port: encaminha uma porta do host para a VM
Exemplo com IP fixo:
config.vm.network "public_network", ip: "192.168.56.10"
config.vm.provider
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
vb.name = "lab-vm"
end
Configura o provider — neste caso, o VirtualBox — que será usado para rodar a VM. Aqui você define os recursos de hardware e outras configurações inerentes ao VirtualBox:
- memory: quantidade de RAM (em MB)
- cpus: núcleos de CPU
- name: nome da VM na interface do VirtualBox
Outros providers possíveis: vmware_desktop, hyperv, docker, etc.
config.vm.provision
config.vm.provision "shell", inline: <<-SHELL
apt update
apt install -y nginx
SHELL
Provisiona a VM com scripts inline ou arquivos externos. Pode ser shell, ansible, puppet, chef, etc. No trecho acima, rodamos um script bash logo após a VM estar criada — útil para instalar pacotes, configurar serviços, etc.
Exemplo com o arquivo completo
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/jammy64"
config.vm.hostname = "lab-vm"
config.vm.network "public_network", type: "dhcp"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
vb.name = "lab-vm"
end
config.vm.provision "shell", inline: <<-SHELL
apt update
apt install -y nginx
SHELL
end
Comandos básicos
- vagrant init → cria o Vagrantfile básico
- vagrant validate → valida se o Vagrantfile contém erros de sintaxe
- vagrant up → lê o Vagrantfile, baixa a box e cria a VM
- vagrant status → imprime na tela o estado da máquina
- vagrant ssh → conecta à VM via SSH
- vagrant halt → desliga a VM
- vagrant destroy → remove a VM completamente
Com exceção do comando vagrant init
que é responsável por criar um arquivo Vagrantfile de exemplo, os outros comandos devem ser executados em um diretório que contem um Vagrantfile válido.