Vagrant para ambiente de dev

Há alguns dias, perdi um bom tempo tendo que acertar algumas configurações para um servidor WAMP. Sim, isso me irritou, pois como rodar um Apache no Ubuntu é mais fácil eu demorei para achar como configurar. Ai eu tinha que configurar um LAMP e depois um WAMP, isso me deixou um pouco irritado, pois eu fiquei pensando, deveria ter algo melhor para fazer isso.

Mas tudo isso é apenas algo trabalhoso que pode ser feito, não chega a ser um grande problema, agora, imagine que a sua aplicação usa PHP, MySQL, Memcached, Redis, MongoDB e para terminar a festa, uma API RestFul feita em Java rodando no Apache Tomcat. Isso para um projeto, agora pense nos inúmeros ambientes que podemos precisar em uma mesma máquina, instalando tudo isso estaríamos sobrecarregando essa máquina, deixando até as tarefas mais simples como responder um e-mail complicadas de serem executadas pela demora na resposta da máquina.
Agora, você poderia ir desativando e ativando os serviços conforme necessário, porem isso também seria trabalhoso. É nesse ponto que entra o Vagrant. Nele podemos subir uma interface mais próxima ao nosso servidor e habilitar e desabilitar ele com apenas um comando. Como nem tudo na vida é fácil, ainda vamos precisar configurar o ambiente, porem isso sera feito apenas uma vez.

Site Vagrant

Vamos agora ao que interessa 🙂

Para o Vagrant funcionar, precisamos ter um gerenciador de máquinas virtuais, o Vagrant suporta VirtualBox, VMware e Hiper-V. Para nosso teste vamos utilizar a VirtualBox, ela pode ser baixada aqui.

Vamos precisar também baixar o Vagrant Aqui.

Depois dele instalado precisamos iniciar o Vagrant em alguma pasta, da mesma forma que fazemos para o git.

vagrant init

Esse comando vai criar o Vagrantfile, esse arquivo sera usado mais a frente para fazer algumas configurações.

O Vagrant, funciona com “boxes”, que são as VMs. No site vagrantbox.es você pode baixar a box que quiser. Eu escolhi a precise32 para demonstrar.

vagrant box add precise32 http://files.vagrantup.com/precise32.box

Ai só esperar baixar e partir para a configuração.

vagrant up

Esse comando ira iniciar a VM.

Quando ela estiver iniciado, basta acessar ela via ssh e configurar da forma que achar melhor.

vagrant ssh

Se por acaso você fizer merda, basta destruir a VM, depois disso basta iniciar e acessar via ssh.

vagrant destroy

Agora vamos configurar o Vagrantfile.


Vagrant.configure(2) do |config|
    config.vm.box = "ubuntu32"

    config.vm.network :forwarded_port, host: 8080, guest: 80
    config.vm.network :forwarded_port, host: 3306, guest: 3306
end

Com essa configuração, estamos fazendo um redirecionamento de portas, apontando as portas do host (minha máquina) para o guest (VM).
Bom, eu não sei muito sobre o Vagrantfile, mas aqui esta a sua documentação.

Até aqui falamos como configurar, subir e bla bla bla. Agora vamos falar sobre o motivo de usarmos o Vagrant e não a VM direto.

A parte interessante do uso do Vagrant é o fato que ele já monta uma unidade de disco “/vagrant” dentro da VM, essa pasta é a mesma que você fez o “vagrant init”.

Se ainda não consegui te convencer, seguem alguns dos meus motivos para usar o Vagrant.

  • Todo o trabalho para instalar uma VM
  • “vagrant destroy” desfaz toda a merda que você fez
  • Redirecionamento de portas de forma simples
  • “vagrant up” tudo funcionando “vagrant halt” seu computador fica limpo
  • Monta uma unidade de disco por padrão

Acho que é isso, escrevi bastante aqui, espero que tenham gostado.