Configurando um ambiente de desenvolvimento com Vagrant

Publicado por Lucas Krämer de Sousa no dia dev

Imagine-se em um grande time de desenvolvimento onde existem desde adoradores da Apple até amantes do software livre. Cada desenvolvedor prefere um sistema operacional e, por isso, cada um deles tem um ambiente diferente de desenvolvimento em sua máquina.

Na Resultados Digitais usamos o Boxen e o Vagrant para padronizar os ambientes sem tirar a liberdade de cada desenvolvedor. Com eles é possível subir um ambiente de maneira rápida, sem desperdício de tempo. Este é um dos princípios do nosso código de cultura: ser lean.

Neste post, pretendo dar uma breve introdução ao Vagrant, um gerenciador de VMs (máquinas virtuais). Através dele é possível definir o ambiente de desenvolvimento onde seu projeto irá rodar. Com suporte para Mac OSX, Linux e Windows, é uma ótima alternativa para deixar que um desenvolvedor utilize o sistema que preferir sem perder tempo na instalação de dependências para começar a colocar a mão na massa.

Vagrant, o que é?

O Vagrant é um gerenciador de VMs (máquinas virtuais). Através dele é possível definir o ambiente de desenvolvimento onde seu projeto irá rodar. Com suporte para Mac OSX, Linux e Windows, consegue atender boa parte dos desenvolvedores. Ele utiliza providers, boxes e se necessário provisioners.

Providers

O Vagrant precisa ter um provider instalado. Ele será onde a máquina virtual contendo seu ambiente irá rodar. O Vagrant dá suporte a providers como VirtualBox, VMware e AWS.

Boxes

Afim de evitar o processo tedioso de criar uma VM do zero, o Vagrant trabalha com boxes. Elas são imagens base para ele clonar uma VM. Definir uma box para seu ambiente é o primeiro passo a ser feito na configuração do seu Vagrantfile. Caso a box selecionada já tenha tudo o que você precisa, não é necessário se preocupar com provisioners.

Provisioners

Com provisioners é possível pré-instalar aplicações, definir configurações e realizar toda a parte de ajuste fino de uma box para atender as suas necessidades. É possível utilizar desde shell scripts básicos até sistemas de gerenciamento de configurações como o Chef, Puppet e Docker.

Legal… Mas como funciona?

Quando executamos o comando para o Vagrant subir uma VM, ele lê o arquivo Vagrantfile. Nele estão todas as configurações e definições da VM em questão. O Vagrant inicia uma box no provider, definida no arquivo de configuração. Caso existam mais instruções expressas através de provisioners, ele as executa antes de deixar a máquina disponível.

Como eu junto tudo isso?

Things together

Primeiro você precisa instalar o Vagrant e o VirtualBox. Usarei o Vbox como exemplo, pois o Vagrant já tem suporte built-in. Após instalar ambos, você vai até a pasta raiz do projeto e executa os seguintes passos:

1
2
3
4
5
$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Seu Vagrantfile foi criado! Agora você só precisa definir qual box será usada (Usaremos um Ubuntu 32bits) editando a linha config.vm.box = "base" para config.vm.box = "hashicorp/precise32".

Feito isso, digite o comando:

1
2
3
4
5
6
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
.
.
.
$

Sua VM já está disponível. Como acessá-la?

1
2
3
4
5
6
7
8
9
10
11
$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

* Documentation:  https://help.ubuntu.com/
New release '14.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 06:22:31 2012 from 10.0.2.2
vagrant@precise32:~$ cd /vagrant
vagrant@precise32:/vagrant$

O Vagrant trabalha com pastas compartilhadas. Ao final do código é possível ver que o diretório atual é o /vagrant. Nele estão todos os arquivos e pastas da raiz do seu projeto.

Se você não quiser editar o código através da linha de comando, você pode simplesmente editar os arquivos com seu editor preferido através do seu sistema operacional, já que são os mesmos arquivos que estão dentro da VM.

Basicamente é isso que você precisa fazer para ter uma VM rodando com Vagrant!

It's magic!

O Vagrant é simples e versátil. Ele evita dores de cabeça e, mais importante, facilita o onboarding de novos participantes a um projeto.

O que foi mostrado aqui é algo básico. A documentação do Vagrant é muito ampla e vale a leitura para você conseguir deixar seu ambiente exatamente do jeito que precisa.

Lucas Krämer de Sousa

Lucas Krämer de Sousa

Software Trainee

Comentários