Conhecendo Vagrant

Rodrigo Long Chen Kashiwakura
SkyHub Labs
Published in
4 min readMay 3, 2017

Introdução

Já imaginou programar seus códigos em qualquer sistema operacional e ser capaz de verificar como ficariam em produção? Então, aqui está sua solução! Vagrant é a ferramenta capaz de criar e configurar ambientes de desenvolvimento leves, isolados e que replicam qualquer ambiente.

Em outras palavras, Vagrant é a ferramenta que permite o desenvolvedor criar uma máquina virtual leve a partir de um setup inicial e personalizá-la para o cenário que for necessário. Para isto, basta conhecimentos gerais em bash, um software de virtualização (VirtualBox, VMWare, etc) e estamos prontos para este tutorial!

Instalando Vagrant

Primeiramente, será necessário instalar um software de virtualização e depois o Vagrant para iniciarmos o desenvolvimento. Para este tutorial, irei utilizar o VirtualBox.

Para Linux basta executar o seguinte script:

#!/bin/bashset -eecho “Instalando VirtualBox...”cd /tmp/wget http://download.virtualbox.org/virtualbox/5.1.18/virtualbox-5.1_5.1.18-114002~Ubuntu~xenial_amd64.debsudo dpkg -i virtualbox-5.1_5.1.18-114002~Ubuntu~xenial_amd64.debsudo apt-get -f install -yecho “Instalando Vagrant...”cd /tmp/wget https://releases.hashicorp.com/vagrant/1.9.1/vagrant_1.9.1_x86_64.debsudo dpkg -i vagrant_1.9.1_x86_64.debsudo apt-get -f install -yset +e

Para Windows, instalar os seguintes softwares:

VirtualBox:

http://download.virtualbox.org/virtualbox/5.1.20/VirtualBox-5.1.20-114628-Win.exe

Vagrant:

https://releases.hashicorp.com/vagrant/1.9.3/vagrant_1.9.3.msi?_ga=1.258612943.411762214.1492558989

Primeiros Passos

Para começar imediatamente, precisamos escolher uma box para iniciar nosso desenvolvimento! Logo, devemos acessar a página https://atlas.hashicorp.com/boxes/search e escolher uma das boxes disponíveis ao VirtualBox! A mais indicada, para início, seria a hashicorp/precise64, que por sua vez já foi criada para ter a melhor performance em conjunto com o Vagrant. Assim, devemos criar um diretório e dentro do mesmo executar:

vagrant init hashicorp/precise64

Este comando irá criar o arquivo Vagrantfile, baixar a box em questão e setar uma máquina virtual para nosso uso! Isso tudo com apenas um comando!

Assim como podemos subir nossa máquina com apenas um comando, podemos desligá-la, reativá-la sempre com um comando! Segue a lista com os principais comandos:

vagrant up - Inicia o ambiente virtual(Execute este comando onde o Vagrantfile se localiza)vagrant halt - Para a máquina virtualvagrant suspend - Suspende a máquina virtualvagrant destroy - Destrói a máquina virtualvagrant global-status - Mostra todos os ambientes de Vagrant criados e seus respectivos status

Mas é claro que isto é apenas o início, porque podemos configurar o Vagrant para que quando seja executado, ele já baixe todas as dependências necessárias, ou abra determinadas portas, ou defina a quantidade de memória que será alocada a mesma e muito mais!

Vamos observar o Vagrantfile:

vagrant.configure("2") do |config|  config.vm.box = "hashicorp/precise64"end

Basicamente, seria apenas estas três linhas (caso removêssemos todas as linhas comentadas) e esta linha central serve para a primeira execução do vagrant up, que por sua vez define qual box utilizar. Mas dentro do |config|, podemos adicionar muito mais configurações. Como por exemplo:

config.vm.provider "virtualbox" do |vb|  # Numero de CPUs utilizadas pela maquina virtual  vb.cpus = 1  # Quantidade de memoria utilizada pela maquina virtual  vb.memory = 1024end

A configuração acima irá permitir que ao iniciar o Vagrant, a máquina automaticamente seja setada com as configurações acima, que seria 1024 MB de RAM e 1 CPU.

config.vm.provision "shell", inline: 'echo "Ola Vagrant!"', run: “always”

Esta permitirá a máquina sempre ser iniciada com a mensagem “Ola Vagrant!” no terminal.

config.vm.synced_folder "skyhub", "/skyhub"

Na minha opinião, a configuração config.vm.synced_folder é a mais importante de todas, pois permite que o Vagrant sincronize a pasta skyhub, que se encontra do mesmo diretório do Vagrantfile, com a pasta de mesmo nome dentro do diretório base na máquina virtual. Isto é o que torna o Vagrant poderoso, pois permite o desenvolvedor modificar seus arquivos localmente e o mesmo refletir imediatamente na máquina virtual, possibilitando uma programação em qualquer sistema operacional!

config.vm.network "forwarded_port", guest: 3000, host: 9000

Por último, esta configuração serve para refletir as portas da máquina virtual 9000 para 3000 local, permitindo acessar qualquer serviço necessário nas portas que forem configuradas.

Este artigo foi apenas uma breve introdução ao Vagrant e suas configurações básicas. Pretendo no próximo artigo descrever mais sobre as funcionalidades do Vagrant e como subir sistemas inteiros automaticamente a partir de apenas um comando. Até a próxima!

Referências

A seguir são apresentadas algumas das fontes utilizadas pela nossa equipe para aprender e nos aperfeiçoar em Vagrant.

Links

https://scotch.io/tutorials/get-vagrant-up-and-running-in-no-time

https://www.vagrantup.com/

--

--