Front End

4 dez, 2013

Front-End Ops: Vagrant

Publicidade

Segundo os autores, o Vagrant é “uma ferramenta para construir ambientes de desenvolvimento. Com um fluxo de trabalho simples e com foco na automação, o Vagrant reduz o tempo de configuração de seu ambiente de desenvolvimento”.

De maneira bem resumida, é exatamente isso. Em 2010, o desenvolvedor Mitchell Hashimoto deu início ao projeto open source que, de uma maneira bem simplificada na explicação, faz com que você rode um sistema operacional dentro de outro – esse método é conhecido por virtualização.

Mas você deve estar se perguntando: “ora, bolas, por que vou usar Vagrant e não VirtualBox? Ou Parallels? Ou qualquer outro software de virtualização?” A resposta é: você vai.

O Vagrant funciona como um comando headless para a ferramenta de virtualização. Em vez de abrir o aplicativo e configurá-lo utilizando uma interface gráfica, você faz tudo através de uma interface de linha de comando.

Começando com o Vagrant

Tudo que será explicado neste artigo foi feito utilizando o OS X, com o VirtualBox como ferramenta de virtualização. Mas você pode encontrar mais detalhes e outros meios diretamente na documentação do site do projeto.

Baixe o que for necessário

Em primeiro lugar, você deve fazer o download do Virtualbox, que é de distribuição gratuita. Em seguida, baixe o Vagrant. Instale nessa mesma ordem. ATENÇÃO: verifique antes a compatibilidade entre a versão do Vagrant e a do VirtualBox na área chamada VIRTUALBOX da Documentação do Vagrant.

Depois de baixar os aplicativos, baixe também a distribuição de seu sistema operacional de preferência. Para meus ambientes locais, costumo utilizar o Ubuntu Precise 64 bits. Você pode encontrar várias boxes gratuitas, muitas até com várias aplicações já instaladas, nesta URL.

Para adicionar uma box, basta executar o seguinte comando:

$ vagrant box add {nome-da-box} {url}

Ou seja

Caso queira adicionar ao seu VirtualBox o Ubuntu Precise 64, basta executar os seguintes comandos:

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

Logo após fazer isso, você precisa de um arquivo de configuração. Há duas opções:

  1. Executar o comando vagrant init dentro da pasta do projeto que deseja criar seu ambiente.
  2. Ter um arquivo Vagrantfile na pasta do projeto onde deseja criar seu ambiente. Você pode criar o seu Vagrantfile padrão e reutilizá-lo em vários projetos.

O meu arquivo Vagrantfile padrão está abaixo, e explicarei linha a linha:

01 | VAGRANTFILE_API_VERSION = "2"

02 | 

03 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

04 |   config.vm.box = "nome-do-box"

05 |   config.vm.box_url = "caminho/para/seu/arquivo.box"

06 |   config.vm.synced_folder "nome-do-projeto", "/var/www/nome-do-projeto"

07 |   config.vm.network "private_network", ip: "10.0.1.7"

08 |   config.vm.network "forwarded_port", guest: 80, host: 0707

09 | end

 

Ou seja

01 | VAGRANTFILE_API_VERSION = "2"

02 | 

03 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

04 |   config.vm.box = "precise64"

05 |   config.vm.box_url = "http://files.vagrantup.com/precise64.box"

06 |   config.vm.synced_folder "imasters-feops", "/var/www/imasters-feops"

07 |   config.vm.network "private_network", ip: "10.0.1.7"

08 |   config.vm.network "forwarded_port", guest: 80, host: 0707

09 | end

 

Linha a linha, a explicação das funções:

Linha 1: Definindo qual versão da API estamos utilizando.

Linha 3: Início do bloco de configuração da máquina virtual.

Linha 4: Nome do box a ser criado.

Linha 5: Caminho do box a ser baixado (pode ser uma URL ou caminho interno do computador, caso o arquivo .box já exista).

Linha 6: Pasta local e da máquina virtual a ser sincronizada. Tudo que você alterar em sua pasta local será automagicamente replicado para o caminho que especificou na máquina virtual. E esse é um diferencial para os programadores front-end 🙂

Linha 7: Endereço de IP da rede privada.

Linha 8: Caso sua máquina virtual tenha que estar acessível na rede local, o melhor caminho que encontrei é mapear uma porta local de seu IP para uma porta do IP de rede da máquina virtual. Assim, se seu IP na rede é 192.168.0.1, quando 192.168.0.1:0707 for acessado, a conexão será redirecionada para o endereço 10.0.1.7:80, a partir da sua própria máquina.

Linha 9: Final do bloco de configuração da máquina virtual.

Fiz tudo, e agora?

Agora vamos, finalmente, rodar seu ambiente de desenvolvimento.

Para isso, dentro da pasta onde está o seu arquivo Vagrantfile, basta executar o seguinte comando:

$ vagrant up

Pronto. Você vai ver aquela tela que quem não trabalha com computadores olha e fala: CARAMBA, QUE HACKER!

Agora é só desfrutar das vantagens, como o acesso fácil e rápido via SSH.

SSH

Para acessar o terminal de sua máquina virtual, o primeiro passo é: esqueça o VirtualBox. Você tem tudo em suas mãos pelo terminal.

$ vagrant ssh

Pronto. Você está dentro de seu ambiente de desenvolvimento novo em folha. Atualize o sistema e instale seu ambiente do jeito que você precisa. Com Apache, Nginx, Ruby Python, Nodejs, não importa. Você tem uma máquina nova, limpa e pronta para usar.

Do meu ponto de vista, essa é a vantagem. Se você está trabalhando em um projeto que usa Ruby na versão 1.9.3, e começou outro projeto que já utiliza a versão 2.1.0 e não quer que elas se atrapalhem (sem usar rvm ou outros gerenciadores de versão), basta ter uma VM para cada ambiente, o que vai deixar seu computador ileso de conflitos.

Mas lembre-se: você está instalando um sistema operacional pra cada ambiente de desenvolvimento, o que demanda memória e espaço em disco. Use com sabedoria. Como disse a tia do Batman, “com grandes poderes, grandes responsabilidades”.

(OK, eu sei que foi o tio do Peter Parker ;D)