1up4developers logo

1up4developers

Nadando contra o Waterfall. tail -f /mind/realworld >> /blog

Vagrant, Virtualizando O Ambiente De Trabalho

| | Comments


Vagrant, se você não conhece ou não deu atenção para ele nestes últimos tempos, este post é pra ti mesmo. Trata-se de uma ferramenta que facilita (e muito!) a criação de Máquinas Virtuais usando o Virtual Box por baixo dos panos. E não é só isso! Com o Vagrant fazer port forward, compartilhar pastas é só questão de alterar um arquivo de configuração. Continue lendo que eu detalho melhor tudo isto.

Prós e Contras

Vários pontos se destacam no uso do Vagrant:

  • Centraliza as dependências de ambiente do projeto. Sabe aquele projeto legado que só roda com rubygems 1.4.2 e mongo 1.1, com o Sol alinhado aos anéis de Saturno, então, você pode deixar tudo isso num box do Vagrant.

  • Documenta as dependências de ambiente, caso use algum Provisioner.

  • Facilita a integração de novos desenvolvedores na equipe, independente do SO que utiliza.

  • Mantém a sua máquina local “limpa”. Você não precisa instalar o Mysql, Postgree, Redis, Memcache etc. para cada projeto que roda.

Agora vem o contra.

  • Se você trabalha com projetos simples ou até mesmo com poucos projetos, você pode sentir que está usando um canhão para matar mosca.

Instalação

Você precisa do VirtualBox (versões 4.0.x ou 4.1.x). Já o Vagrant, o jeito mais fácil é instalar via rubygems, ou seja, um “gem install vagrant” e pronto! Caso ache melhor instalar via .dmg, .deb etc., você pode baixar em http://downloads.vagrantup.com.

Exemplo de Uso

O Getting Started do Vagrant é bem completo e tem também o Rails Cast, mas segue um resumão.

Supondo que o vagrant está instalado. Vamos adicionar uma máquina:

$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

Dentro da pasta do projeto, você tem criar o Vagrantfile e para isso execute:

$ vagrant init lucid32  #ja especificando o box lucid32 baixado

Vamos subir a VM:

$ vagrant up

Para acessar a VM:

$ vagrant ssh

Repare que dentro da VM, na pasta “/vagrant” estará montado o diretório do seu projeto, onde está o Vagrantfile. Supondo que seja um projeto Rails, daí em diante você segue todo o fluxo default, instalando o bundler, dando um bundle install e etc.

Vamos supor que você executou um “rails s” na VM e o projeto subiu na porta 3000. Para acessá-lo, você tem que configurar o forward_port no VagrantFile:

1
config.vm.forward_port 3000, 4000  # 3000 from VM, available at 4000

Dá um restart na VM:

$ vagrant halt && vagrant up

Subir o projeto novamente. (vagrant ssh e o “rails s” dentro do /vagrant)

Acesse http://localhost:4000.

Extras e Conclusão

A idéia deste post é explicar rapidamente o que é e como usar o Vagrant, mas com certeza o Vagrant tem muito mais a oferecer. Segue alguns tópicos, que valem posts:

Provisioning – Existem várias ferramentas que podem te ajudar no setup da sua VM. O Vagrant tem suport a Chef, Puppet e até mesmo Shell script.

Plugins – Você pode mudar ou adicionar funcionalidades ao Vagrant, criando plugins. É claro que sempre vale a pena googlar antes. Por exemplo o vagrant-snap, que ajuda a tirar e gerenciar snapshots da VM.

Boxes – No exemplo acima, usamos um box de Ubuntu, mas nada impede de você criar ou utilizar outros boxes. Existe o vagrantbox.es que pode te ajudar a baixar uma existente, ou você vai ter que se aventurar pelos docs para criar uma zerada.

Comments