Descubra como o Vagrant pode agilizar a configuração de ambientes virtuais
O que é o Vagrant ?
Vagrant é uma solução de gerenciamento e construção de máquina virtuais, com a finalidade de automatizar a construção de laboratórios complexo por um único arquivo de configuração.
Por que utilizar o Vagrant ?
Tendo como principal foco a automação de ambientes, o Vagrant se conecta à um provider – podendo esse ser o VirtualBox, Hyper-V, Docker e até mesmo o VMware – através do arquivo Vagranfile um ambiente virtual poderá ser construído diretamente sem precisar realizar todas as interações que um SO precisaria, com isso agilizamos o processo de configuração de ambientes virtuais que consumiria muito tempo.
E como utilizamos o Vagrant ?
Para começar a fazer uso do Vagrant é necessário primeiramente realizar a instalação dele, que pode ser feito em qualquer ambiente por meio do gerenciador de pacotes da sua distribuição:
Debian/Ubuntu
CentOS/RedHat
Após a instalação ter finalizado iniciamos a utilização do Vagrant por meio do parâmetro init na linha de comando.
Ao executar esse parâmetro um arquivo de nome Vagrantfile será criado com uma pré configuração:
1 | vagrant$ cat Vagrantfile |
2 | Vagrant.configure("2") do |config| |
O parâmetro “-m” informado faz com que o vagrant não crie os comentários no Vagrantfile
O Vagrantfile possui uma estrutura bem simples. A partir de um bloco principal de configuração definido pela entrada:
“Vagrant.configure(“2″) do |config|”
Assim, definimos quais configurações podemos criar nas maquinas virtuais. Mas antes disso vamos definir o que são boxes para o Vagrant.
Vagrant Boxes
Boxes para o Vagrant são as máquinas virtuais que de fato irão rodar o SO. Pense na boxe como um HD com um sistema instalado e configurado pronto para ser utilizado. A box deve ser definida pela entrada config.vm.box. Todas as boxes estão armazenadas no repositório da HashiCorp, que possui diversas distribuições em diferentes versões prontas para uso, algumas já com soluções prontas como Apache, Docker, Nginx entre outras.

Iniciando uma VM pelo Vagrant
Agora que já temos uma ideia do que é o Vagrant vamos subir nossa primeira VM. Para isso, vamos mudar a config.vm.box para ubuntu/xenial64, assim teremos a versão 16.04 LTS do ubuntu já pronta para uso.
1 | vagrant$ cat Vagrantfile |
2 | Vagrant.configure("2") do |config| |
3 | config.vm.box = "ubuntu/xenial64" |
Agora podemos iniciar nossa maquina com o comando up:

Como resultado o Vagrant importa a base do box, verifica a configuração de rede, vê se a box está atualizada, define um nome, inicia a vm e já deixa uma chave ssh pronta para ser utilizada.
Agora que já temos uma máquina rodando podemos acessá-la via ssh. No caso como a conexão foi criada em uma rede NAT, também foi adicionado um redirecionamento no loopback pela porta 2222, dessa forma podemos usar o comando ssh e acessar diretamente.
1 | ssh -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1 -p2222 |
Como isso é muito trabalhoso o Vagrant já implementou um wrapper e usando a mesma chave você consegue acessar as máquinas com um simples comando:
Provisionamento
O provisionamneto dentro do Vagrant consiste na utilização de scripts e arquivos que agrupem um conjunto de ações de automação do processo de criação da VM. Alguns dos formatos de provisionamento são Shell, File, Ansible, Puppet, Chef, Salt, Docker entre outros. Como exemplo podemos incrementar nosso Vagrantfile utilizando Shell Linux e passar todos os comandos utilizados para instalação de pacotes, alteração de arquivo de configuração.
03 | Vagrant.configure("2") do |config| |
04 | config.vm.box = "ubuntu/xenial64" |
06 | config.vm.provision "shell", |
09 | config.vm.provision "shell", inline:<<-SHELL |
12 | apt install -y apache2 |
Para que o provisionamento seja realizado precisamos rodar o comando “vagrant provision”, com isso a etapa de provisionamento será reexecutada e teremos os repositório APT atualizado e os pacotes CowSay e Apache2 instalados e pronto para serem utilizados.

Agora temos nosso Apache rodando podemos acessar o WebServer, mas para isso precisamos de um redirecionamento para acessar a porta 80 da VM. O redirecionamento precisa ser feito no VirtualBox mas com o Vagrant podemos especificar com uma única linha no Vagrantfile.
02 | Vagrant.configure("2") do |config| |
03 | config.vm.box = "ubuntu/xenial64" |
05 | config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" |
07 | config.vm.provision "shell", |
10 | config.vm.provision "shell", inline:<<-SHELL |
Agora executando o “vagrant reload” nossa VM será reiniciada e conseguiremos acessar via porta 8080 da nossa maquina física o Apache2.

Conclusão
Com Vagrant podemos criar rapidamente diversos laboratórios sem precisar configurar uma máquina virtual, ou um conjunto, do zero e instalar o sistema operacional, tudo isso por um único arquivo de configuração, o Vagrantfile.
CURSOSCONSULTORIA CONTATO