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:
- Executar o comando vagrant init dentro da pasta do projeto que deseja criar seu ambiente.
- 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)