Vagrant
Introdução
editarO Vagrant[1] é uma ferramenta para criação e configuração de infraestrutura (Ambientes de desenvolvimento) para um determinado projeto, a partir da utilização de uma Máquina Virtual (VM). Porém, é de se pensar que, para um grande número de projetos, a gerência dessa VM's seja um problema, além de sobrecarregar os recursos de hardware disponíveis. Em relação à questão anterior, o Vagrant abstrai o problema da gerência dessas diversas VM's, deixando o usuário livre para trabalhar no código.
Máquina Virtual (Vagrant)
editarUma Máquina Virtual (VM)[2] é um software de ambiente computacional que executa programas como se fosse um computador real, ou seja, é uma cópia eficiente e isolada de uma máquina real. O Vagrant trabalha com VM's leves, reprodutíveis e portáteis. Deste modo, o usuário tem a liberdade de criar um ambiente de desenvolvimento diferenciado para cada um de seus projetos, com Sistemas Operacionais e softwares variados.
Processo de Instalação
editarDependências
editarPara a criação das máquinas virtuais o Vagrant precisa de um provedor de VM's como o VirtualBox, VMware, AWS, ou qualquer outro. Porém, o Vagrant dá suporte automático ao VirtualBox, Hyper-V, e Docker, basta tê-lo(os) instalado(os). Antes que você possa usar um outro provedor, você deve instalá-lo. A Instalação de outros provedores é feita através do sistema de plugins Vagrant. O provedor não precisa estar executando para utilizar o Vagrant.
Instalação do Vagrant
editarA instalação do Vagrant é extremamente simples. Basta visitar a página de Downloads do Vagrant[3] e obter o instalador ou pacote apropriado para sua plataforma. Instale o pacote utilizando os procedimentos padrões para seu sistema operacional.
O instalador irá adicionar automaticamente o Vagrant ao path do sistema para que este esteja disponível em terminais.
Configuração básica e Iniciação
editarNeste pequeno guia de iniciação e configuração básica[4] será utilizado o Vagrant com o VirtualBox[5] , uma vez que este é livre, disponível em todas as principais plataformas, e built-in(default) para o Vagrant. Mas lembrando que o Vagrant pode trabalhar com muitos outros provedores de máquinas virtuais.
De início, crie uma pasta para o seu projeto no seu ambiente de trabalho e acesse-a via terminal:
$ mkdir vagrant_getting_started
$ cd vagrant_getting_started
Para a construção de suas máquinas virtuais o Vagrant usa as chamadas "Boxes", ou no singular "Box". Que são imagens base (ISO) do sistema operacional que rodará na VM. Desse forma, é possível clonar rapidamente uma máquina virtual.
Então, antes de qualquer coisa, deve-se adicionar uma box para que esta esteja disponível para criação de um projeto com Vagrant:
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
Neste caso, este comando irá trazer uma Box do Ubuntu Lucid.
Com a Box já pronta, agora basta rodar o comando abaixo para configurar seu projeto com Vagrant:
$ vagrant init lucid32
Isto irá criar um Vagrantfile em seu diretório atual.
Os objetivos do Vagrantfile são:
- Marcar o diretório raiz do seu projeto. Muitas das opções de configuração no Vagrant são relativos a este diretório raiz.
- Descrever o tipo de máquina e recursos necessários para executar seu projeto, bem como o software para instalar e como você quer acessá-lo.
Você também pode executar "vagrant init" em um diretório pré-existente para configurar o Vagrant para um projeto existente.
OBS: É importante commitar o Vagrantfile junto ao controle de versão do seu projeto, se você usar um. Desta forma, cada pessoa que trabalha com o projeto poderá ter acesso ao ambiente de desenvolvimento provido pelo Vagrant.
Agora basta subir o ambiente com o comando:
$ vagrant up
Depois de executar este comando, você terá uma máquina virtual totalmente em execução no VirtualBox rodando Ubuntu 10.04.4 LTS 32-bit.
Agora o diretório do seu projeto está sincronizado junto à máquina virtual. Portanto, você pode editar arquivos no conforto de sua própria máquina(host) e tê-los sincronizados para dentro da máquina virtual.
Você pode também fazer um acesso SSH na máquina virtual com:
$ vagrant ssh
E quando você terminar de trabalhar no projeto, você pode encerrar a máquina virtual com:
$ vagrant destroy
É possível, também, usar ferramentas de provisionamento tais como shell scripts, Chef, ou Puppet para instalar e configurar software na máquina automaticamente como parte do processo do "vagrant up". Isso automatiza o processo de instalação de softwares, tornando-o repetível. E Mais interessante ainda, não requer nenhuma interação humana, para que se possa ter um ambiente de trabalho totalmente pronto com um único comando.
Benefícios do Vagrant
editarPara um desenvolvedor, o Vagrant irá isolar dependências e sua configuração dentro de um único ambiente descartável, consistente, sem sacrificar nenhuma das ferramentas que você está acostumado a trabalhar com (editores, navegadores, depuradores, etc.). Uma vez que você ou alguém cria um único Vagrantfile, você só precisa dar uma "vagrant up" e tudo será instalado e configurado para você trabalhar. Outros membros de sua equipe criarão seus ambientes de desenvolvimento a partir da mesma configuração, por isso se você estiver trabalhando em Linux, Mac OS X ou Windows, todos os membros da equipe estarão executando o código no mesmo ambiente, com as mesmas dependências, tudo configurado do mesmo jeito. Ou seja, o Vagrant veio para acabar com o "funciona na minha máquina".