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
apt install -y vagrant
CentOS/RedHat
yum install -y vagrant
Após a instalação ter finalizado iniciamos a utilização do Vagrant por meio do parâmetro init na linha de comando.
vagrant init -m
Ao executar esse parâmetro um arquivo de nome Vagrantfile será criado com uma pré configuração:
vagrant$ cat Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "base"
end
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.
vagrant$ cat Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
end Agora podemos iniciar nossa maquina com o comando up:
vagrant 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.
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:
vagrant ssh
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.
cat Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provision "shell",
inline: "apt update"
config.vm.provision "shell", inline:<<-SHELL
apt install -y cowsay
apt install -y links
apt install -y apache2
SHELL
endPara 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.
cat Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
config.vm.provision "shell",
inline: "apt update"
config.vm.provision "shell", inline:<<-SHELL
apt install -y cowsay
apt install -y links
apt install -y apache2
SHELL
end
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.
About author
Você pode gostar também
Docker BuildX: Otimizando sua Pipeline de Infraestrutura como Código
Transforme seu processo de criação de imagens Docker e eleve sua infraestrutura ao próximo nível com esta extensão poderosa do Docker CLI. Por que ainda usar apenas Docker Build em
Automatize processos com Rundeck: Guia completo para DevOps
O Rundeck é uma aplicação java de código aberto que automatiza processos e rotinas nos mais variados ambientes, gerenciado via interface gráfica fica extremamente simples de verificar status de execuções,
Entenda o Git: O que é, como funciona e como começar a usar
GIT? O que é? Git é um sistema de controle de versões distribuído, ou seja, ele não precisa de um servidor central para funcionar. É uma ferramenta open source, criada











