Galera pensei em fazer este post com o intuito de compartilhar alguns link úteis para aqueles que estão, assim como eu, na luta :D para usar o Vagrant como seu provedor de ambiente. Mas se você não sabe o que é ou pra que “bulufas” serve o Vagrant, segue uma breve abordagem.
Sempre quando entramos em um novo projeto temos um ambiente específico para aquele projeto rodar, mas agora pense em um cenário em que você está envolvido com mais de 2 projetos.
Lista dos projetos
- O primeiro é um legado da empresa, feito em PHP 4.x
- O segundo é um projeto que será o carro chefe da empresa feito em PHP 5.2
- O terceiro é um freelancer que está sendo desenvolvido usando ZendFramework2 e PHP 5.4
Como preparar sua máquina para atender a esta demanda?
Este problema já me atrasou muito nas migrações de projetos e Vagrant veio TAMBÉM para resolver isso. Vagrant é uma ferramenta open source lálálálá… se você quiser saber mais sobre como foi criado clique aqui.
Entendendo como funciona
Nele você seleciona qual será o SO ou Box (CentOS 5.8 x86_64, Ubuntu precise 32, Debian Squeeze 64, etc) de sua máquina virtual. Este SO você precisará baixar somente uma vez, podendo reaproveitar sempre que necessário para gerar suas VM.
Você gera a VM informando qual box irá usar (Ex: vagrant init precise32). Lembrando que você deve dar init na pasta do projeto e a mesma será usada na sua vm como seu DOCUMENT_ROOT.
O Vagrant irá gerar um arquivo chamado Vagrantfile, e esse cara que faz toda a mágica. Lembre que o Vagrant irá criar uma máquina virtual para você customizar da forma como bem entender, mas você não precisará editar seus códigos dentro da VM. OPA????? Ficou confuso??? Mas é exatamente isso, a VM irá prover o ambiente para você rodar seu código. No Vagrantfile você pode fazer a seguinte configuração – config.vm.forward_port 80, 8080 – Aqui estou falando que a porta 80 da minha VM irá responder a porta 8080 do HOST (Meu computador). E para visualizar o código “tinindo” é só jogar no browser a URL “localhost:8080”.
Claro que não é só para isso que o Vagrant funciona, mas isso já quebra um galhão. Sem falar que depois de criada e configurada você pode compartilhar esta VM ou box com a sua equipe, forçando a galera a conversar na mesma língua independente do HOST (Mac, Windows, Linux, etc) de cada um.
Links úteis
- Vagrant site
- Listagem de boxes disponíveis.
- Puppet. Com ele você pode criar módulos que para quando gerada sua VM ela já contenha algumas configurações ou pacotes instalados (Ex: ZendServer).
- Puppet Forge. Repositório com módulos prontos para usar com Vagrant.
- Chef. Que também serve para gerenciar sua VM, mas usando como linguagem ruby para a construção de seus módulos.