Vagrant

E aí, pessoal!

Neste post curto, vamos configurar um ambiente simples para criar VMs no macOS com chips Apple (M1/M2/M3 ou mais novos) usando o Vagrant.

1. Introdução

O que é o Vagrant?

O Vagrant é uma ferramenta que nos permite criar e gerenciar máquinas virtuais de forma fácil e eficaz. Com ele, podemos criar VMs a partir de um arquivo de configuração chamado Vagrantfile, o que facilita o compartilhamento das configurações da máquina e mantém a consistência entre os ambientes. Esse software usa por baixo dos panos os principais provedores de virtualização, como VirtualBox, VMware, QEMU, Parallels, Docker, Hyper-V, entre outros.

Principais funcionalidades

  • Ambientes consistentes e reproduzíveis: através do arquivo Vagrantfile, conseguimos usar o mesmo ambiente para todas as pessoas desenvolvedoras envolvidas em um projeto, por exemplo.

  • Redução de trabalho manual e de erros: como as configurações do ambiente são feitas por código, o trabalho manual para criar várias VMs diminui drasticamente, reduzindo também a margem para erros.

2. Preparando o ambiente

Requisitos

  • SO: macOS 11.0 (Big Sur), mas é recomendado usar a versão mais recente do macOS (como Monterey 12.0 ou Ventura 13.0) para melhor compatibilidade e performance.
  • Processador: Apple M1/M2/M3 ou mais novo…
  • Gerenciador de pacotes: Homebrew

Instalação

Primeiro, vamos instalar o Homebrew, caso você ainda não tenha.

# Instalar o Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Agora, vamos instalar o QEMU, um emulador e virtualizador de máquinas virtuais de código aberto. Você pode escolher outro se preferir, como VMware, VirtualBox…

# Instalar o QEMU
brew install qemu

Por fim, vamos baixar o Vagrant em si e o plugin do QEMU.

# Instalar o Vagrant
brew tap hashicorp/tap
brew install hashicorp/tap/hashicorp-vagrant

# Instalar o plugin do Vagrant para o QEMU
vagrant plugin install vagrant-qemu

3. Configuração da VM (arm64)

Crie uma pasta para armazenar o arquivo de configuração do Vagrant.

# Criar um diretório
mkdir linux-machine && cd linux-machine

Dentro do diretório criado, gere o arquivo de configuração da máquina.

# Gerar um Vagrantfile
touch Vagrantfile

Usando um editor de texto de sua preferência (nano, vim, VSCode…), adicione o seguinte código:

Vagrant.configure("2") do |config|
  config.vm.box = "perk/ubuntu-2204-arm64"
  config.vm.provider "qemu" do |qemu|
    # defina a porta de sua preferência
    qemu.ssh_port = "9999"
  end
end

NOTA: A imagem utilizada foi perk/ubuntu-2204-arm64. Mas você pode usar qualquer outra que seja compatível com o provider QEMU e com a arquitetura arm64. Você encontra mais imagens no Vagrant Cloud. Por exemplo, a imagem generic/debian12 também oferece compatibilidade com QEMU e arm64.

4. Subindo a VM

Baixe a imagem e inicie a VM.

# Baixar a imagem e subir
# Isso pode levar um tempo
vagrant up --provider=qemu

Acesse a linha de comando da máquina via SSH.

vagrant ssh

Muito bem, seu novo ambiente está pronto. 🙃

Aqui vão alguns comandos do Vagrant para te ajudar:

# Ver o status da máquina
vagrant status

# Ver imagens baixadas (box)
vagrant box list

# Remover imagens (box)
vagrant box remove nome-da-box