Criando um ambiente de testes com Vagrant

· by Raphael Rabelo · Read in about 4 min · (719 Words)

Intro

O objetivo desse artigo é mostrar como configurar um ambiente de testes simples utilizando o Vagrant da HashiCorp. O Vagrant é uma ferramenta voltada para construir ambientes de desenvolvimento com foco em automação e simplicidade.

Nesse artigo irei utilizar o Vagrant com o VirtualBox, por ser a única opção gratuita e rodar em todas as plataformas. É possível utilizar outros provider como VMware, AWS e Docker, para isso dê uma olhada na documentação oficial

Instalação

Na data que estou escrevendo, a versão mais atual é a 1.9.1, baixe o arquivo do site oficial e instale em sua máquina.

[Download do Vagrant]

No meu caso, irei utilizar a versão para OSX, porém os passos seguintes se aplicam também para Linux e Windows.

Após a instalação abra o terminal e digite vagrant -v para verificar se foi instalado corretamente.

$ vagrant -v
Vagrant 1.9.1

Iniciando o projeto

Para começar, defina o diretório que será o seu workspace para trabalhar com o vagrant, todos os arquivos de configuração serão guardados nesse diretório.

# Criando o nosso *workspace*:
$ mkdir lab
$ cd lab

Após definir o seu workspace, criaremos o arquivo principal de configuração, o Vagrantfile, isso é feito com o comando:

$ vagrant init

Verifique no seu diretório que foi criado o arquivo Vagrantfile, agora vamos para o próximo passo que é a configuração da máquina virtual.

Imagens ou Boxes?

Ao invés de configurarmos toda máquina virtual instalando e configurando tudo - que seria chato e demorado - vamos utilizar as “Boxes” do Vagrant.

As Boxes são imagens prontas que o vagrant utiliza, existem diversas Boxes que foram criadas pela comunidade e pela HashiCorp, você pode escolher a de sua preferecia acessando o catálogo do Atlas da HashiCorp

Obs: Para baixar as Boxes é necessário criar uma conta no Atlas da HashiCorp, o cadastro é simples. Após o cadastro faça login para baixar as boxes que precisar.

Eu irei utilizar a box “centos/7” como base desse artigos. Após escolher a sua vamos adicioná-la ao vagrant:

$ vagrant box add centos/7 --provider virtualbox

Nesse momento o vagrant irá baixar a box para o seu sistema, isso pode demorar alguns minutos dependendo da velocidade da sua conexão.

Após a conclusão você deve ver a seguinte mensagem:

==> box: Successfully added box 'centos/7' (v1611.01) for 'virtualbox'!

vagrant box succeded

Precisamos agora configurar o novo Vagrantfile para usar a nova box, edite o arquivo e procure pela linha:

  config.vm.box = "base"

Substitua por:

  config.vm.box = "centos/7"

Salve o arquivo e rode o comando a seguir para iniciar a nossa box:

$ vagrant up

vagrant up

Pronto, temos nosso Centos 7 rodando, para acessar a VM use o comando vagrant ssh

Imediatamente você deve sair no terminal da nossa VM em Centos 7:

vm console

Parando e Destruindo tudo

Caso queira ‘desligar’ a VM após o uso, basta digitar no diretório de workspace o comando vagrant halt, é importante desligar a VM quando não estiver em uso para poupar recursos da sua máquina física.

O vagrant também possibilita apagar completamente a VM criada com o o comando vagrant destroy. Caso tenha feito alguma besteira, ou simplesmente queira iniciar uma VM limpa, basta usar novamente o comando vagrant up que uma nova VM será iniciada a partir do box ‘centos/7’ que baixamos no passo anterior.

Mais opções

Nosso Vagrantfile tem uma série de opcões interessante que podemos tirar proveito para automatizar a nossa VM, vale a pena gastar um tempinho lendo o arquivo que é bem comentado e testar as opções disponíveis.


Opções de Rede (network options)


config.vm.network "forwarded_port": Faz forwarding de portas para nossa VM. Exemplo:

config.vm.network "forwarded_port", guest: 80, host: 8080

No exemplo acima, acessando ‘localhost:8080’ será redirecionado para porta 80 da nossa VM (guest machine)


config.vm.network "private_network": Rede em modo Host-only, somente o host onde está rodando a VM irá acessar. Exemplo:

config.vm.network "private_network", ip: "192.168.33.10"


config.vm.network "public_network": Rede em modo Bridge, nossa VM ficará pública na rede.


Compartilhamento de arquivos (File Sharing)


config.vm.synced_folder "../data", "/vagrant_data"

Monta o diretório ../data do host no diretório “/vagrant_data” da VM.


Provisionamento automático


config.vm.provision "shell": Comandos em shell script que serão executados quando a VM for criada. Também é possível usar Ansible, Chef, Salt e Docker.


Futuramente irei mostrar como tirar proveito de algumas dessas opções criando um provisionamento automático de uma VM com servidor web e tudo mais…


Referências:

Vagrant Documentation: https://www.vagrantup.com/docs/



<ESC>:wq