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 end
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.
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
Descubra o Jitsi: a solução completa para videoconferências
Logo do Jitsi Introdução Durante o momento que vivemos, basicamente todas nossas interações se tornaram virtuais, com o home office sendo a alternativa primaria para muitas empresas, tivemos um súbito
DevOpsDays Maringá: Evento internacional de tecnologia chega ao Paraná
Sétima edição no Brasil e a primeira a ser realizada no estado do Paraná, o DevOpsDays Maringá reunirá especialistas para expor e debater temas do mundo DevOps. O DevOpsDays terá
Guia completo: Implantação de MongoDB resiliente no Google Kubernetes Engine
Este guia aborda a implantação de um MongoDB resiliente no GKE, incluindo etapas para configurar um StatefulSet, serviço headless e inicializar o conjunto réplica. Aprenda a utilizar recursos do GKE