Por que devo usar o Vagrant em vez de apenas o VirtualBox?

214

Estou usando o VirtualBox há muitos anos para criar um ambiente de desenvolvimento.

Muitos dos meus colegas estão falando sobre o Vagrant e muitas pessoas parecem muito entusiasmadas com isso, mas eu simplesmente não consigo entender os benefícios disso. Parece-me que é uma série de novos comandos para aprender a fim de faça as mesmas coisas que fiz com o Virtualbox.

Com o VirtualBox, eu instalo e configuro um ambiente perfeitamente, então posso empacotá-lo como um OVA ou qualquer outra coisa e compartilhá-lo com outros usuários do escritório. Você pode tirar um instantâneo no VirtualBox se algo der errado.

O fantoche e o chef não são realmente parte do Vagrant, são eles mesmos, certo?

Então, sim, quais benefícios especificamente a Vagrant oferece sobre o VirtualBox por conta própria?

    
por John Hunt 17.04.2013 / 16:39

5 respostas

146

Esta é uma grande questão, então vou dividi-la em duas seções.

Vagabundo

O Vagrant é usado para configurar uma ou mais máquinas virtuais:

  • Importando imagens pré-criadas (chamadas "caixas")
  • Definindo configurações específicas da VM (endereço IP, nomes de host, encaminhamento de porta, memória, etc.)
  • Execução de software de provisionamento, como Puppet ou Chef

Observe que ele não instala o software nem configura a máquina após o carregamento da VM e a configuração do VirtualBox. Pense nisso como um mecanismo de script para o VirtualBox.

Aqui estão algumas razões que eu vi para usar o Vagrant apenas no VirtualBox.

1. Configurar redes multi-VM com facilidade

A maior parte do conteúdo do usuário avançado do Vagrant que eu li foi sobre a configuração de várias VMs ao mesmo tempo. O Vagrant oferece um único arquivo de configuração para configurá-los, permitindo que você inicie todos eles com um único comando.

Digamos que você tenha configurado três VMs para a rede umas com as outras usando IPs estáticos na sub-rede 192.168.1. *. Você se encontra em um local que já está usando essa sub-rede para distribuir endereços IP e suas VMs agora estão em conflito. Com o Vagrant, você pode simplesmente editar o Vagrantfile e recarregar as VMs, enquanto que com o VirtualBox você teria que abrir as configurações para cada VM, se não inicializar cada VM e alterá-las para dentro.

2. Controle de Origem

Ao colocar as configurações em um arquivo de texto, ele permite que a configuração seja colocada sob o controle de origem. Fez algumas mudanças na semana passada e acidentalmente quebrou a imagem? Apenas reverta as alterações e recarregue a VM. Você pode fazer isso com instantâneos do VirtualBox, mas vai ocupar muito mais espaço do que apenas um Vagrantfile.

3. Várias plataformas

Há um grande número de caixas disponíveis em sites como o link . Isso permite que você experimente vários sistemas operacionais ou distribuições, aplicando o mesmo provisionamento para configurar ambientes semelhantes. Isso pode ajudar a testar ou adicionar suporte a novas plataformas e consumir muito tempo usando apenas o VirtualBox.

Existem muitos argumentos para usar o software de provisionamento, bem como o uso de instantâneos de imagem. Para uma discussão adicional, vou lhe indicar o excelente artigo de Stephen Nelson-Smith Como construir 100 servidores web em um dia .

    
por 27.04.2013 / 07:41
26

Além da excelente resposta dada por Adam, o Vagrant amarra tudo junto. Embora Chef e Puppet (e scripts Salt e shell e qualquer outro dispositivo que você queira usar) sejam coisas separadas, o Vagrant une tudo e faz com que ele funcione com apenas um vagrant up .

Esse comando será

  1. inicie a VM se isso for o necessário, mas também
  2. crie a caixa da sua caixa base especificada, se isso também não estiver pronto, mas se você nem tiver a caixa de base na sua máquina, ela será a primeira
  3. busque-o em seu URL e faça o download para sua máquina.

Você não precisa pensar em tudo isso. Digamos que você esteja mudando para um projeto diferente, iniciado por um colega de trabalho. Você acabou de verificar o código do seu repositório e executar vagrant up , não se preocupar com o download de ISOs ou instalar nada, nem saber qual versão de qual distro você precisa usar para esse cliente específico ou se você tem uma cópia de uma VM já tem tudo que você precisa.

Você nem precisa se preocupar se eles configuraram as coisas usando Chef ou Puppet ou apenas scripts de shell. (Ok, então você pode precisar fazer um bundle install ou ter certeza de que tudo está instalado, mas ainda assim não é grande coisa.)

Ao juntar tudo e fornecer uma interface unificada para tudo isso, é possível facilitar muito o uso dos casos de uso mais simples. No começo, você pode sentir que está apenas reaprendendo uma nova maneira de fazer o que já está fazendo, mas quando se aprofundar no uso do Vagrant, descobrirá que pode fazer muito mais com muito menos esforço. Valerá a pena o investimento inicial em tempo.

    
por 09.01.2014 / 18:56
8

A capacidade de integrar chef ou fantoche ao provisionamento de VM é essencial. A maioria dos usuários de Vagabundos dirá que eles correm 'provisão de vagabundo' e ocasionalmente 'recarregam vagabundos' com muito mais frequência do que 'vagrant up' ou 'vagrant destroy'. Essas tarefas indicam que o trabalho real não é girar para cima / para baixo nas VMs, mas "administrá-las" após o fato.

Para colocar uma pergunta melhor (feita por proficientes usuários do Chef, de qualquer forma) pode ser por que usar o Vagrant e não o knife com o plugin apropriado (chegará ao plugin do VirtualBox, em um momento)? Por exemplo, passar valores de argumentos armazenados em um pacote de dados para um plugin de faca é (mais ou menos) mais inteligente, flexível e gerenciável do que fazer malabarismos com um Vagrantfile gigante. Eu normalmente defino meus recursos 'dinâmicos' como # de CPUs, quantidade de memória, que sistema operacional implantar, hostname, IP, rotas, etc, no (s) databag (s) do chef de tal forma que eu não precise continuar mudando a minha receita; ). Editar um arquivo de dados através da interface web do Chef é uma tarefa de entrada de dados realmente fácil que posso dar aos operadores mais jovens. Com Vagrantfile, seu código sempre modificável e, acredite ou não - quebras de código - que praticamente garante que você NÃO estará entregando mudanças simples para a equipe de Operações, nunca.

Além do fato de a faca ainda não ter um plugin para o virtualbox (embora eu prefira um no futuro não muito distante), já existem plugins para a maioria dos produtos de virtualização 'enterprise', incluindo vmware, xenserver e praticamente todos os principais provedor 'nuvem', também. Isso significa que a faca é muito superior ao que a Vagrant oferece se / quando você estiver pronto para ir além do virtualbox. Por enquanto, a comunidade Chef parece feliz em deixar os usuários de VirtualBox coxearem com o Vagrant por não integrar o VirtualBox Apis para um plugin de faca. Existe um plugin faca-vagrant que permite o uso de sacos de dados para passar argumentos. Mas, ainda requer software vagabundo e seu Vagrantfile monolítico funciona.

Então, eu vou sair em um membro e dizer Vagrant definitivamente não é "melhor" do que o Chef com faca; mas necessário (por enquanto) se você insistir no virtualbox e talvez "mais fácil" do que gerenciar o chef com bolsas de dados, desde que você tenha um ambiente bastante simples para gerenciar.

    
por 21.03.2014 / 15:13
8

Aqui estão mais dois casos de uso de desenvolvedor que o vagrant simplifica (sobre o VirtualBox "simples"). Eu não vi esses casos de uso serem explicados especificamente nas respostas anteriores.

  1. O Vagrant ajuda com o objetivo de manter as plataformas de desenvolvimento e produção o mais próximo possível uma da outra. Em um mundo ideal, você provisionaria o ambiente de produção com OS MESMOS scripts usados para provisionar a VM do Vagrant, minimizando as surpresas no momento da implantação.

  2. Testes de integração e integração contínua: O Vagrant é fácil de controlar a partir de testes e, portanto, pilhas inteiras de várias máquinas podem ser facilmente controladas a partir de ferramentas como o Jenkins ao executar testes.

Sim, o VirtualBox "simples" também pode ser usado aqui - mas as convenções usadas pelo vagrant tornam mais simples definir esses cenários.

    
por 20.06.2014 / 13:19
0

O Vagrant abstrai as máquinas virtuais para que você possa alternar facilmente as implementações de máquinas virtuais. Você pode alternar do Virtual Box para o AWS ou o Digital Ocean. É como usar o SQL em vez de uma linguagem de consulta específica do banco de dados.

O Vagrant permite que os desenvolvedores configurem seu ambiente rapidamente com apenas um comando e é exatamente igual ao de todos os outros. Isso é importante em grandes empresas, onde os desenvolvedores vêm e & Vá com freqüência. Pode reduzir o tempo de configuração de 3 dias para 1 hora.

+ O que Adam disse.

(Eu ainda não encontrei um uso para Chef ou Puppet embora ...)

    
por 29.03.2018 / 03:58