fbpx

VAGRANT: Meu PRIMEIRO contato

Quem me acompanha no Instagram (se você não acompanha, clique aqui e me siga lá), sabe que recentemente comecei a utilizar o Vagrant para criação de alguns laboratórios usando Linux. Na verdade, eu nunca tinha utilizado, mas resolvi dedicar um pouco do meu tempo para entender e aprender pelo menos o básico da ferramenta.

O Vagrant é uma ferramenta totalmente open-source desenvolvida pela Hashicorp (que possui outras ferramentas famosas como Terraform) e pode ser acessada clicando aqui. Vamos falar sobre a mesma ao longo do artigo.

Requisitos

Para que você obtenha o máximo de conhecimentos do artigo, seria interessante se você já soubesse:

  • O que é uma máquina virtual
  • O que é um Hypervisor
  • Trabalhar na linha de comando do Linux (básico).
  • O que é SSH e como funciona autenticação de chaves assimétricas (tenho um vídeo aqui).
  • Trabalhar em um editor de texto da linha de comando (recomendo o Vim).

O problema

Se você entender o problema que o Vagrant veio para resolver, você praticamente entende o funcionamento dele no geral. Vamos contar uma historinha?

  1. Bom, imagine você que criou uma aplicação em Python ou Shell Script e precisa testar a mesma em uma versão específica do Linux.
  2. O que você faz? Baixa uma imagem do site da distribuição (CentOS por exemplo).
  3. Instala do zero
  4. Instala as bibliotecas necessárias e copia o arquivo
  5. Testar o programa

Percebe o quanto tempo você perde para colocar uma máquina virtual para rodar, sendo que você vai somente testar um script?

E se precisar compartilhar a mesma máquina com outros colegas para que eles também possam fazer os mesmos testes? Possivelmente, vai ter que copiar o arquivo da VM “.vbox” que vai ter um tamanho bem elevado. Isto é, sem escala nenhuma.

A solução

O Vagrant veio para resolver todos os pepinos para nós. Basicamente, ele é uma interface entre nós usuários e o hypervisor (VirtualBox, VMWare, Hyper-V, etc…).

O objetivo é facilitar a iniciação de uma máquina virtual, diminuindo seu tempo e aumentando a produtividade tanto do operador quanto do desenvolvedor. Além disso, é facilmente escalável pois basta um arquivo de configuração que vai ditar como a máquina virtual será construída.

O que levava antes 1 hora para colocar uma máquina virtual no ar, hoje consome cerca de 1 minuto para fazer. ISSO É DE MAIS!

Setup inicial

Mas, chega de enrolação. Vamos para a parte prática.

Antes de qualquer coisa, você precisa ter um Hypervisor instalado. Recomendo que você utilize o VirtualBox. Você pode encontrar diversas opções de instalação aqui. No meu caso, bastou instalar pelo repositório oficial:

  • $ sudo apt install virtualbox -y

Depois de instalar o Hypervisor, você precisa instalar o Vagrant:

  • $ sudo apt install vagrant -y

Lembrando que os procedimentos estão sendo executados no meu Debian Testing, mas você pode fazer em qualquer distribuição. Certamente, o Vagrant estará disponível no repositório oficial da sua distribuição.

Criando a primeira VM

A primeira coisa que você precisa saber é que uma máquina virtual no Vagrant é chamada de Box. Você pode encontrar diversas Boxes aqui.

Neste Lab, vamos usar a box do CentOS 7, que por sinal, é uma imagem oficial.

Vamos criar um diretório para trabalharmos, pode ser com o usuário normal:

  • $ cd ~
  • $ mkdir centos7
  • $ cd centos7/
  • $ ls
VAGRANT: Meu PRIMEIRO contato

Agora, perceba que estamos dentro de um diretório vazio.

Vamos iniciar o Download de uma Box diretamente do repositório da Hashicorp.

  • $ vagrant init centos/7
  • $ ls
VAGRANT: Meu PRIMEIRO contato

Perceba que um arquivo chamado Vagrantfile foi criado no diretório local. Esse arquivo é muito semelhante ao Dockerfile do Docker. Basicamente, contém instruções de como a VM será criada. Esse arquivo pode ser compartilhado para que qualquer pessoa construa uma VM idêntica a nossa.

Vamos editar esse arquivo usando o Vim ou Nano:

  • $ vim Vagrantfile

Adicione as seguintes linhas no arquivo (ou descomente, que foi o meu caso):

VAGRANT: Meu PRIMEIRO contato

A primeira opção fará com que a interface de rede seja usada no modo bridge para pegar IP diretamente do seu roteador.

A segunda opção irá executar os comandos ao longo do provisionamento da VM. Isto é, quando tudo terminar, um Servidor Web já vai estar pronto e rodando. Salve o arquivo.

Agora, basta iniciar a mágica!

  • $ vagrant up

Ele vai terminar mais ou menos dessa forma:

VAGRANT: Meu PRIMEIRO contato

Mas como testar se está tudo funcionando corretamente? Vamos ver nos próximos comandos.

Comandos úteis

O primeiro comando é para acessar a máquina remotamente usando o SSH:

  • $ vagrant ssh
  • $ ip a

Pegue esse endereço IP e cole no seu browser.

VAGRANT: Meu PRIMEIRO contato
VAGRANT: Meu PRIMEIRO contato

Percebe que o Servidor Web já está “up and running”? Coisa linda!

Você também acessou via SSH sem usar senhas, isso porque usa-se o conceito de chaves assimétricas para efetuar o login.

Veja o que aconteceu no VirtualBox:

VAGRANT: Meu PRIMEIRO contato

Por trás, o Vagrant criou uma VM no VirtualBox.

Veja mais alguns comandos úteis:

  • $ vagrant halt # Desligar a VM
  • $ vagrant destroy # Desliga e destrói a VM (necessário fazer rebuild com vagrant up)
  • $ vagrant suspend # Vai salvar o snapshot da VM em runtime
  • $ vagrant resume # Restaura um snapshot

Conclusão

Podemos notar que claramente o Vagrant auxilia na automatização da VMs e aumenta muito a produtividade de qualquer profissional, seja ele desenvolvedor o administrador. Também é possível escalar isso facilmente e é muito versátil com suporte a diversos tipos de hypervisors.

Conforme meus conhecimentos sobre essa ferramenta forem aumentando, eu vou produzindo outros artigos sobre ele.

Bom pessoal, espero que tenha gostado dessas dicas. Se gostarem, não esqueçam de compartilhar com os colegas em grupos de Linux. Este artigo pode ajudar muitas outras pessoas.

Me siga no Instagram onde eu faço conteúdos da minha rotina diária.

Participe dos nossos grupos no Telegram e Facebook! 🙂

Se tiver alguma dúvida ou sugestão de conteúdo, por favor, entre em contato aqui ou comente abaixo!