Linux Servidor linux

Entenda como utilizar o Vagrant com VirtualBox

Entenda como utilizar o Vagrant com VirtualBox

Neste artigo irei ensinar como utilizar o Vagrant, mas afinal o que é o Vagrant? O Vagrant é gerenciador de Máquinas Virtuais (VMs) para construir e provisionar ambientes completos, ele pode ser instalado em diversas plataformas como: Linux, Windows e Mac OSX, podendo rodar vms com o seu projeto em seu próprio desktop, servidor ou cloud, é um software Open Source escrito em Ruby, produzido e mantido pela HashiCorp, uma empresa de código aberto com sede na Califórnia, além do Vagrant a empresa também produz outras ferramentas, como: Packer, Terraform, Consul, Vault e Nomad.

Ao invés de trabalharmos com “templates” que são aquelas vms que configuramos do zero e depois clonamos quando precisamos de um ambiente novo, o vagrant usa o conceito chamado box, que são imagens de sistemas operacionais pré-configurados que vão servir como base para a construção de nossas vms.

O Vagrant reduz o tempo de configuração do ambiente de desenvolvimento, a ideia dele é poder criar ambientes completos e customizados de forma simples, tanto para o time de infraestrutura/operações quanto desenvolvimento, ambos pode criar o seu próprio ambiente, não se limitando ao time de infraestrutura.

Com alguns comandos você cria, ambientes rápidos e personalizados, como: Definir a quantidade de recursos hardware, definir hostname, instalação de pacotes, iniciar serviços e por ai vai…

Pré-requisitos:

Iremos utilizar com o VirtualBox, então precisa ter o VirtualBox instalado, para instalar, acesse a loja da sua Distro ou baixe direto do site: virtualbox.org

Instalando o Vagrant

Pacotes para instalação do Vagrant: https://www.vagrantup.com/downloads.html

Debian/Ubuntu/Deepin:

# wget https://releases.hashicorp.com/vagrant/2.2.0/vagrant_2.2.0_x86_64.deb
# dkpg -i vagrant_2.2.0_x86_64.deb
# apt install vagrant

RHEL/CentOS/Fedora:

# wget https://releases.hashicorp.com/vagrant/2.2.0/vagrant_2.2.0_x86_64.rpm
# rpm -Uvh vagrant_2.2.0_x86_64.rpm
# yum install vagrant -y

Verificando a versão:

Se a instalação ocorreu tudo certo, o comando irá retornar a versão do Vagrant.

# vagrant -v

Preparando o ambiente para subir a nossa primeira VM

Irei criar na home do meu usuário (root) um diretório chamado “projetos” onde irei criar os diretórios que as minhas vms irão ficar, e também o diretório CentOS7 para criar a nossa primeira vm em CentOS 7.

# mkdir -p /root/projetos/CentOS7

Entre dentro do diretório que criamos:

# cd ~/projetos/CentOS7/

Criando a primeira VM com o Vagrant

Agora iremos criar a nossa VM com o CentOS 7.5, para isso precisamos criar o Vagrantfile passando o parâmetro init nome da box ou arquivo.box, se quiser gerar um Vagrantfile genérico para conhecer o arquivo, basta digitar o comando vagrant init.

O arquivo Vagrantfile é o arquivo de configuração do Vagrant para a criação da nossa vm, este arquivo é escrito em ruby, o mesmo é criado dentro do diretório que irá subir a sua VM, em nosso cenário o arquivo vai ser criado em: /root/projetos/CentOS7/, o vagrantfile é onde especificamos todas as features da nossa vm, como: Sistema Operacional, Interfaces de Redes, Recursos de Hardware, Programas a instalar e etc.

# vagrant init centos/7

A Vagrantfile has been placed in this directory. You are now ready to vagrant up your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on vagrantup.com for more information on using Vagrant.

Caso precisa especificar uma versão específica do CentOS 7 coloque o parâmetro –box-version + versão.

# vagrant init centos/7 --box-version 1804.02

A Vagrantfile has been placed in this directory. You are now ready to vagrant up your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on vagrantup.com for more information on using Vagrant.

Liste o conteúdo do diretório e perceba que o arquivo foi criado:

# ls -lh
total 4,0K
-rw-r--r-- 1 root root 3,0K nov  5 01:54 Vagrantfile

Para subir a sua VM, execute o comando vagrant up.

# vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: 1804.02
==> default: Loading metadata for box 'centos/7'
    default: URL: https://vagrantcloud.com/centos/7
==> default: Adding box 'centos/7' (v1804.02) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1804.02/providers/virtualbox.box
    default: Progress: 37% (Rate: 3624k/s, Estimated time remaining: 0:01:07) >> baixando BOX

>> Após baixar a imagem ele irá iniciar a BOX [VM]

==> default: Successfully added box 'centos/7' (v1804.02) for 'virtualbox'!
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/7' is up to date...
==> default: Setting the name of the VM: CentOS7_default_1541390428020_42312
==> default: Fixed port collision for 22 => 2222. Now on port 2201.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2201 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2201
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default: 
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Rsyncing folder: /root/projetos/CentOS7/ => /vagrant

Ué mas como você sabe qual parâmetro passar para o comando vagrant init para criar uma BOX com imagem específica?

Basta ir no site: Vagrant Cloud Box e clicar na imagem desejada, lá irá conter duas formas de como criar o Vagrantfile:

Vagrant Cloud Box

Abaixo é o print do site Vagrant Cloud Box, para baixar o box desejado, clique na imagem que deseja, no cenário acima utilizei o CentOS 7.5 versão 1809.01 então clique em centos/7 1809.01.

Como utilizar o Vagrant

Ao clicar logo vemos duas abas, a Vagrantfile e New.
Caso queira criar o Vagrantfile, basta clicar na aba Vagrantfile e copiar o conteúdo, e criar o Vagrantfile sem precisar dar o comando vagrant init para criar o arquivo.

Como utilizar o Vagrant

Logo abaixo tem a versão da imagem, caso queira baixar ela em específico basta criar o vagrantfile:

# vim Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.box_version = "1809.01" >> esse parâmetro
end

Como utilizar o Vagrant

Agora caso queira baixar e criar o box deixando o Vagrant criar sozinho o Vagrantfile, clique na aba New, e execute o comando igual a imagem acima:

# vagrant init centos/7
# vagrant up

Para baixar a versão 1804.01 passe o parâmetro: –box-version 1804.01.

# vagrant init centos/7 --box-version 1804.02

Após iniciada a VM conecte nela usando o ssh.

# vagrant ssh

Perceba abaixo, que após conectar na minha VM com CentOS 7, ela foi criada de acordo com os parâmetros que eu passei.

Como utilizar o Vagrant

Pronto, seu ambiente está pronto para uso!

Comandos úteis- Administrando VMs

Criando um Vagrantfile

# vagrant init

Ligando uma VM

# vagrant up

**Listar a VM **

Listar e verificar onde foi inciada, caso você não lembre:

# vagrant global-status 
id       name    provider   state   directory                           
------------------------------------------------------------------------
76457d7  default virtualbox running /root/projetos/CentOS7

Para administrar uma VM, você precisa estar dentro do diretório onde criou a sua VM, ou passando o [comando] + [id da vm], eu recomendo que especifique o id, pois não precisa ficar acessando os diretórios das VMs criadas para acessa-las, ficando assim:

# vagrant [parametro] [iddavm]

Iniciar uma VM

# vagrant up 76457d7

Conectar na VM através de ssh

# vagrant ssh 76457d7

Conectar na VM através de rdp

Se for Windows

# vagrant rdp

Iniciando uma VM

# vagrant up 76457d7

Desligando uma VM

# vagrant halt 76457d7

Reboot em uma VM

# vagrant reload 76457d7

Suspender uma VM

# vagrant suspend

Para fazer resume de uma vm suspensa

# vagrant resume

Para exibir o status de uma VM

# vagrant status 76457d7

Para excluir uma VM

# vagrant destroy 76457d7

Comandos úteis – Snapshots

Tirando snapshot

Para tirar snapshot do status atual da VM

# vagrant snapshot save 76457d7 teste2
==> default: Snapshotting the machine as 'teste1'...
==> default: Snapshot saved! You can restore the snapshot at any time by
==> default: using `vagrant snapshot restore`. You can delete it using
==> default: `vagrant snapshot delete`.

Listar os snapshots

# vagrant snapshot list 76457d7
teste1
teste2

Para restaurar um snapshot

# vagrant snapshot restore 76457d7 teste1

Para excluir um snapshot

# vagrant snapshot delete 76457d7 teste2

Comandos úteis – Administrando as BOXs

Listar as boxes (Imagens S.O.) que foram baixadas

# vagrant box list 
centos/6        (virtualbox, 1809.01)
centos/7        (virtualbox, 1804.02)
ubuntu/trusty64 (virtualbox, 20181031.0.1)

Removendo uma box

# vagrant box remove ubuntu/trusty64

Adicionando uma BOX

# vagrant box add puppetlabs/centos-7.0-64-nocm

Caso ele pergunte qual software de virtualização está utilizando, selecione o VirtualBox.

1) virtualbox
2) vmware_desktop
3) vmware_fusion

Enter your choice: 1 >> selecione 1

Adicionando uma BOX e criando o vagrantfile

Ele faz o download da box e cria o vagrantfile

# vagrant init ubuntu/trusty64

Referências

https://www.vagrantup.com/docs/vagrantfile/
http://gutocarvalho.net/octopress/2014/05/09/entenda-o-vagrant/

Por enquanto é isso galera, no próximo irei ensinar como criar vms limitando recursos de hardware e configurações pré-definidas… enfim.

Esse provavelmente será o ultimo artigo de 2018, espero que ajude bastante gente, eu recomendo, estou utilizando no dia-dia para testar alguns serviços e vem me ajudando muito!

Enfim, feliz ano novo e muito sucesso nesse novo ciclo!

Abraços.

comments powered by Disqus

Assine nossa Newsletter! 🐧

Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.