Uso 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 empolgadas com isso, mas não consigo entender os benefícios dele ... parece-me que é uma série de novos comandos para aprender, a fim de fazer o mesmo 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.
Bonecos e chefs não fazem parte do Vagrant, são coisas deles, certo?
Então, sim, quais benefícios o Vagrant oferece especificamente sobre o VirtualBox por si só?
virtualbox
vagrant
John Hunt
fonte
fonte
Respostas:
Essa é uma grande questão, então eu vou dividir em três seções.
Vagabundo
O Vagrant é usado para configurar uma ou mais máquinas virtuais:
Observe que ele não instala software ou configura a máquina após carregar a VM e definir as configurações 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 sobre o VirtualBox.
1. Configure redes Multi-VM com facilidade
A maior parte do conteúdo de usuários avançados do Vagrant que li foi sobre a instalação de várias VMs ao mesmo tempo. O Vagrant fornece um único arquivo de configuração para configurá-los, permitindo que você inicie todos eles com um único comando.
Digamos que você configurou três VMs para se conectarem 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 arquivo Vagrant e recarregar as VMs, enquanto que com o VirtualBox você precisa abrir as configurações de cada VM, se não inicializar cada VM e alterá-las por dentro.
2. Controle de Origem
Ao colocar as configurações em um arquivo de texto, ele permite que a configuração seja colocada sob controle de origem. Fez algumas alterações na semana passada e acidentalmente quebrou a imagem? Basta reverter as alterações e recarregar a VM. Você pode fazer isso com os instantâneos do VirtualBox, mas ocupará muito mais espaço do que apenas um arquivo Vagrant.
3. Várias plataformas
Há um grande número de caixas disponíveis em sites como http://vagrantbox.es . Isso permite que você tente vários sistemas operacionais ou distribuições, aplicando o mesmo provisionamento para configurar ambientes semelhantes. Isso pode ajudar no teste ou na adição de suporte a novas plataformas e consumiria muito tempo usando apenas o VirtualBox.
Existem muitos argumentos para usar o software de provisionamento, bem como usar instantâneos de imagem. Para uma discussão adicional, mostrarei o excelente artigo de Stephen Nelson-Smith, Como construir 100 servidores da Web em um dia .
fonte
vmrun
comando que é oferecido pela VMware, mesmo que o endereço IP seja alterado ou executando um script dentro da máquina convidada!vmrun
para controlá-lo. Eu sempre usei o VirtualBox e, portanto, não tenho nenhuma experiência com o back-end do VMWare.VboxManage
comando? virtualbox.org/manual/ch08.html Praticamente tudo o que você mencionou pode ser criado como um script, passando o parâmetro / ip específico paravboxmanage controlvm
ou um comando semelhante em um script de shell e depois controlando a versão .. Então, comovagrant
melhorarvirtualbox
?Além da excelente resposta dada por Adam, o Vagrant une tudo. Embora Chef e Puppet (e scripts Salt e shell e qualquer outro fornecedor que você queira usar) sejam coisas separadas, o Vagrant une tudo isso e o faz funcionar com apenas um
vagrant up
.Esse único comando
Você não precisa pensar sobre tudo isso. Digamos que você esteja mudando para um projeto diferente, iniciado por um colega de trabalho. Você apenas faz o check-out do código do seu repositório e executa
vagrant up
, sem se preocupar com o download de ISOs ou com a instalação de qualquer coisa, ou se perguntando qual versão de qual distribuição você precisa usar para esse cliente em particular ou se possui uma cópia de uma VM que já possui tudo 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 uma
bundle install
alteração ou verificar se tem tudo instalado, mas ainda não é grande coisa.)Ao vincular tudo e fornecer uma interface unificada para tudo, isso pode tornar muito mais fáceis os 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 depois de se aprofundar no uso do Vagrant, descobrirá que pode fazer muito mais com muito menos esforço. Valerá a pena o investimento inicial.
fonte
A capacidade de integrar chef ou marionete no provisionamento de VM é essencial. A maioria dos usuários do Vagrant dirá que eles executam 'provisões vagantes' e ocasionalmente 'recarregam vagamente' com muito mais frequência do que 'vagabundo para cima' ou 'vagabundo destrói'. Essas tarefas indicam que o trabalho real não é girar / desativar VMs, mas "gerenciá-las" após o fato.
Para fazer uma pergunta melhor (feita por usuários experientes do Chef), talvez seja por que usar o Vagrant e não usar o plug-in apropriado (chegará ao plug-in virtualbox em um momento)? Por exemplo, passar valores de argumento armazenados em um pacote de dados para um plug-in de faca é (muito) mais inteligente, flexível e gerenciável do que manipular um Vagrantfile gigante. Normalmente, defino meus recursos 'dinâmicos' como número de CPUs, quantidade de memória, sistema operacional a ser implantado, nome do host, IP, rotas, etc., nos bancos de dados do chef, de modo que não precise continuar mudando minha receita; ) Editar um banco de dados através da interface da web do Chef é uma tarefa de entrada de dados realmente fácil que posso dar aos operadores mais jovens. Com o Vagrantfile, seu código para sempre mudar e, acredite ou não, quebras de código, o que praticamente garante que você NÃO estará entregando alterações simples à equipe de operações,
Além do fato de que o knife ainda não possui um plug-in para o virtualbox (embora eu visualize um em um futuro não muito distante), já existem plug-ins para a maioria dos produtos de virtualização 'empresariais', incluindo vmware, xenserver e praticamente todas as principais 'nuvens' fornecedor também. Isso significa que a faca é muito superior ao que o Vagrant oferece se / quando você estiver pronto para ir além da caixa virtual. Por enquanto, a comunidade Chef parece feliz em deixar os usuários de caixa virtual mancarem junto com o Vagrant, ao não integrar as APIs da caixa virtual para um plugin de faca. Existe um plug-in vagabundo que permite o uso de sacos de dados para passar argumentos. Mas ainda requer software vagante e o Vagrantfile monolítico funciona.
Então, eu vou sair em um galho e dizer que o Vagrant definitivamente NÃO é 'melhor' do que o Chef com faca; mas necessário (por enquanto) se você insistir em caixa virtual e talvez 'mais fácil' do que gerenciar chefes com sacos de dados, desde que você tenha um ambiente bastante simples de gerenciar.
fonte
Aqui estão mais dois casos de uso de desenvolvedor que o vagrant simplifica (sobre o VirtualBox "simples"). Não vi esses casos de uso mencionados especificamente nas respostas anteriores.
O Vagrant ajuda com o objetivo de manter as plataformas de desenvolvimento e produção o mais próximas possível umas das outras. Em um mundo ideal, você provisionaria o ambiente de produção com os mesmos scripts usados para provisionar a VM do Vagrant, minimizando surpresas no momento da implantação.
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 Jenkins durante a execução de testes.
Sim, o VirtualBox "simples" também pode ser usado aqui - mas as convenções usadas pelo vagrant tornam mais simples a configuração desses cenários.
fonte
O Vagrant abstrai máquinas virtuais, permitindo 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 o mesmo que todo mundo. Isso é importante em grandes empresas onde os desenvolvedores vêm e vão com frequência. Pode reduzir o tempo de configuração de 3 dias para 1 hora.
+ O que Adam disse.
(Ainda não encontrei um uso para Chef ou Puppet ...)
fonte