O que é Vagrant?
Lançado pela primeira vez em março de 2010 por Mitchell Hashimoto da Hashicorp e seu parceiro John Bender, Vagrant é uma ferramenta de linha de comando de código aberto para gerenciamento do ciclo de vida de máquinas virtuais (VM). A utilidade visa aumentar a produtividade do desenvolvimento ao tornar esse processo muito mais simples. Embora o Vagrant tenha sido originalmente vinculado ao Oracle VirtualBox, a partir da versão 1.1, também incluiu suporte para VMware, KVM e outros. No entanto, por mais útil que a virtualização seja no desenvolvimento web, o uso do Vagrant nem sempre é uma opção infalível.
Por que usar Vagrant? Vale a pena?
Em primeiro lugar, o Vagrant oferece muito mais flexibilidade com um ambiente baseado em hipervisor imutável. Isso permite que os desenvolvedores criem ambientes que exigem recursos disponíveis apenas em outros sistemas.
Por exemplo, se você precisasse criar um aplicativo que suportasse uma variedade de sistemas operacionais e kernels, poderia facilmente criar várias máquinas virtuais para executar testes usando o Vagrant. Da mesma forma, se você quisesse replicar o ambiente do seu cliente (SO, recursos, etc.), combinar VMs e Vagrant também pode ser particularmente útil.
Instalando Vagrant em uma estação de trabalho
Para começar com o Vagrant, faça o download do instalador ou do pacote adequado a partir da página oficial de Downloads do Vagrant. As instruções abaixo são para o Vagrant v2.3.3 (a versão mais recente em dezembro de 2022).
Instalando o Vagrant no Windows
Para instalar o Vagrant no Windows, primeiro você precisa baixar o pacote MSI. Em seguida, basta executar o arquivo e seguir um processo de instalação regular.
Nota: O instalador adicionará automaticamente ‘vagrant’ ao seu caminho do sistema, então também estará disponível nos terminais. Se o Vagrant não for encontrado, no entanto, tente fazer logout e logar novamente no sistema, pois isso é uma ocorrência comum no Windows.
Instalando o Vagrant no MacOS Catalina
Supondo que você já tenha um gerenciador de pacotes ‘brew’ instalado, para configurar rapidamente o Vagrant no Mac, você pode executar a instalação com este comando em uma única linha:
```bash
$> brew install vagrant
```
Alternativamente, você pode instalar o Vagrant a partir de binários.
Instalando o Vagrant no Linux
Para sistemas Linux, demonstraremos o processo de instalação para Vagrant no Ubuntu 20.04:
Instale a chave:
```bash
$> wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
```
Adicione o repositório:
```bash
$> echo "deb [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
```
Puxe atualizações e execute a instalação:
```bash
$> sudo apt update && sudo apt install vagrant
```
É tudo o que há para isso! Agora tudo o que você precisa fazer é abrir seu terminal e digitar “vagrant”. Também vale a pena mencionar, no entanto, que se você executar o Vagrant sozinho, receberá uma lista com os subcomandos disponíveis.
Principais Problemas Que Você Pode Ter Ao Instalar Vagrant
Embora erros de instalação do Vagrant sejam bastante raros, a probabilidade disso aumenta significativamente se múltiplos hypervisores estiverem instalados em sua máquina. Afinal, os hypervisores não tendem a permitir a criação de máquinas virtuais quando mais de um deles já está em uso.
A seguir estão algumas soluções rápidas retiradas da documentação oficial do Vagrant que podem ajudá-lo a usar o Vagrant e o VirtualBox quando outro hypervisor está presente:
No Linux
Ao usar outro hypervisor, você pode enfrentar o erro abaixo:
```bash
There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", <ID of the VM>, "--type", "headless"]
Stderr: VBoxManage: error: VT-x is being used by another hypervisor (VERR_VMX_IN_VMX_ROOT_MODE).
VBoxManage: error: VirtualBox can't operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot
(VERR_VMX_IN_VMX_ROOT_MODE)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
```
Para fazer o VirtualBox funcionar corretamente, qualquer hypervisor adicional precisará ser adicionado à lista de negação do seu sistema.
Para fazer isso, primeiro descubra como o hypervisor é chamado:
```bash
$> lsmod | grep kvm
kvm_intel 204800 6
kvm 593920 1 kvm_intel
irqbypass 16384 1 kvm
```
Em seguida, basta usar o comando “blacklist” para adicionar o hypervisor à sua lista de negação.
```bash
echo 'blacklist kvm-intel' >> /etc/modprobe.d/blacklist.conf
```
Finalmente, reinicie sua máquina e use o comando “vagrant” novamente.
No Windows
No Windows, ao tentar iniciar uma máquina virtual do VirtualBox, você pode enfrentar uma tela azul perturbadora.
Para usar o VirtualBox normalmente, é necessário garantir que o Hyper-V esteja desabilitado. Use o seguinte comando simples para desativar o recurso no Windows 10:
```PowerShell
$> Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
```
No Windows 11, você também pode usar um Powershell elevado:
```PowerShell
$> bcdedit /set hypervisorlaunchtype off
```
Alternativamente, você pode desabilitar o Hyper-V nas configurações do sistema do Windows.
- Clique com o botão direito no botão do Windows e escolha “Aplicativos e Recursos”
- Abra “Ativar ou desativar recursos do Windows”
- Desmarque o Hyper-V e, finalmente, clique em OK
Reinicie o computador para aplicar essas alterações.
No MacOS
Se você encontrar a seguinte mensagem de erro ao tentar executar o VBoxManage:
falha ao abrir /dev/vboxnetctl: Não existe tal arquivo ou diretório
Reinstale o VirtualBox completamente ou simplesmente use os comandos abaixo:
sudo /Library/StartupItems/VirtualBox/VirtualBox restart
ou
sudo /Library/StartupItems/VirtualBox/VirtualBox start
Observe que em versões mais recentes, o arquivo /Library/StartupItems/VirtualBox/VirtualBox
não existe, então você terá que usar o seguinte comando:
sudo launchctl load /Library/LaunchDaemons/org.virtualbox.startup.pl
MacOS Catalina: Mas Funciona no Meu Computador
Outro problema que pode ocorrer no Mac é aquele problema clássico quando ouve-se que um aplicativo “funciona bem no meu computador”, e nenhuma quantidade de implorar ou chorar pode fazê-lo fazer o mesmo em qualquer outro lugar. Minha equipe do SPG também enfrentou esse problema antes.
Imagine que você está atualmente implantando e testando ambientes locais com Vagrant + VirtualBox. Um dos engenheiros de software em sua equipe usa uma versão personalizada de VagrantBox, que até agora está funcionando bem para eles. Eles serão conhecidos como Desenvolvedor 1. Em seu computador, VirtualBox v6.1.34, Vagrant 2.2 e Ubuntu estão todos funcionando sem problemas.
Por outro lado, é claro que Desenvolvedor 2 precisa atualizar seu ambiente local. Eles atualmente usam uma mistura de MacOS, VirtualBox v6.1.24 e Vagrant 2.1.x em seu próprio computador.
Como resultado, pelo menos à primeira vista, a estratégia do Desenvolvedor 2 parece ser simples:
- Passo 1: Atualizar as versões do VirtualBox e Vagrant (é crucial usar versões unificadas)
- Passo 2: Instalar todos os componentes adicionais do projeto
Ambas as operações são concluídas com sucesso, mas o resultado certamente é inesperado — por algum motivo, o site que foi instalado no VirtualBox agora é totalmente inacessível. Mas que diabos!?
Ao enfrentar tal enigma, é crucial fazer brainstorming para encontrar uma solução e tomar ações sensatas como as listadas abaixo:
- Examinar os arquivos de log
- Verificar se todos os serviços do VirtualBox, como PHP, Nginx e MySQL estão operacionais
- Usar curl para acessar a página
Neste caso, no entanto, tudo parece estar funcionando como deveria, sem problemas óbvios dentro da instância do VirtualBox em si.
O seu time então decide mudar de estratégia e determinar se o host do VirtualBox é acessível de fora. Após usar um simples comando ping, ficam surpresos ao descobrir que 100% dos pacotes são perdidos. Embora essa notícia seja um tanto perturbadora, pode também ser a causa de todo o problema.
Seguindo essa linha de investigação, eles acabam descobrindo que os adaptadores HostOnly agora devem receber uma faixa diferente de endereços IP. Isso aparentemente começou com a atualização do VirtualBox v6.1.30 (uma atualização de patch, de tudo):
192.168.55.х prior to the update
192.168.56.х. after the update.
Ali está, claro como o dia, na recentemente revisada manual do usuário do VirtualBox:
“No Linux, Mac OS X e Solaris, o Oracle VM VirtualBox permitirá apenas endereços IP na faixa 192.168.56.0/21 a serem atribuídos a adaptadores host-only.”
Todos no seu time suspiram de alívio. O problema desaparece de repente após criar um novo adaptador HostOnly e alterar o existente na instância do VirtualBox. O componente web crítico da solução finalmente é acessível, e o Desenvolupador 2 está feliz por fim.
Vagrant Ou…? Quais Alternativas Existem? Como São Melhores?
Com tanta empolgação, você poderia ser perdoado por procurar alternativas a Vagrant. No entanto, se fizesse isso, provavelmente encontraria vários sites que comparam a utilidade a contêineres (mais frequentemente, Docker). Mas essa é realmente uma comparação válida? Como se vê, realmente é, contanto que você esteja ciente da diferença entre os dois.
Muitas das vantagens que o Docker tem sobre os hypervisores também podem ser consideradas desvantagens — isso depende do que você precisa. Então, vamos começar com um grande ponto: tempo de inicialização. Enquanto os contêineres podem iniciar rapidamente porque são basicamente apenas um conjunto de processos, isso também significa que usa o kernel do host. Como resultado, em vez de depender de hardware virtualizado, os contêineres usarão o hardware do host diretamente.
Os hypervisors também podem ter recursos dedicados na forma de memória, tempo de CPU, espaço em disco e outros. Por outro lado, os contêineres compartilham recursos com outros processos no computador host. Da mesma forma, enquanto o Vagrant permite criar uma máquina virtual inteira — o que exigirá mais tempo e recursos — a abordagem em contêiner do Docker permite implantar mais rapidamente com menos recursos.
Então, com isso em mente, lembre-se de que isso não é uma competição. É simplesmente sobre as necessidades da sua empresa.
Conclusão
Embora o Vagrant seja indiscutivelmente uma ferramenta formidável, também não é imune a problemas. Se sua empresa carece de expertise ou conhecimento, uma equipe dedicada de desenvolvedores de software pode ser capaz de ajudar. Afinal, mesmo quando apenas “funciona no meu computador”, existe uma solução para cada problema.
Source:
https://dzone.com/articles/vagrantvirtualbox-on-macos-catalina-but-it-works-o