![Primeiros passos com Vagrant [Ubuntu]](/images/blog-posts/uploads/2020/12/Vagrant_hubb861f7391bf0a807957f1ef14d8039d_477892_555x294_resize_q100_h2_lanczos_2.webp)
Primeiros passos com Vagrant [Ubuntu]
- Vinicius Souza
- Linux
- 26 de dezembro de 2020
VAGRANT
O Vagrant é uma ferramenta que permite criar rapidamente ambientes virtuais com a finalidade de automatizar a construção de laboratórios complexos, desenvolvimento ou provisionamento de ambientes utilizando as soluções de virtualização mais comuns como o Virtualbox e o VMWare.
Para esse tutorial de “Primeiros passos” usaremos máquinas virtuais para preparar o laboratório, porém diferente do que você possa estar acostumado a fazer usando o Virtual Box via interface gráfica, a ideia é usarmos o máximo de possível como código e para isso você deverá usar o Vagrant para fazer qualquer provisionamento de máquina Virtual via Command Line!
INSTALAÇÕES
Usaremos o Virtual Box neste tutorial, então a primeira coisa que faremos é instalar o Vagrant e o VirtualBox.
Instalando o Vagrant via Command Line:
sudo apt install vagrant
Validando o sucesso na instalação do Vagrant:
vagrant --version

Instalando o VirtualBox via Command Line:
sudo apt install virtualbox
Instale também as dependências:
sudo apt install virtualbox-dkms libelf-dev
**PROVISIONANDO SUA PRIMEIRA MÁQUINA **Laboratório 1
O primeiro passo para interagir com o Vagrant é criar um diretório onde ficará o arquivo Vagrantfile, é dentro dele que vão todas as configurações de suas VMs. Para deixar as coisas organizadas vamos criar uma pasta para armazenar nossos projetos do Vagrant.
1- Crie e entre do diretório:
mkdir -pv ~/vagrant/projects && cd ~/vagrant/projects
(Este comando cria o diretório e caso tenha sucesso ‘&&’ irá entrar dentro do mesmo)
**2- Criando o diretório para o Laboratório 1: **
mkdir -v lab01 && cd lab01
3- Escolhendo a imagem/ box:
O Vagrant utiliza o conceito chamado box, que são imagens de sistemas operacionais pré-configurados que vão servir como base para a construção das máquinas virtuais. Acesse a página e escolha uma das boxes disponíveis para VirtualBox, estaremos utilizando neste lab a imagem debian/jessie64.
4- Criando o Vagrantfile
Todas as instruções para se criar máquinas virtuais com o Vagrant são feitas via código usando o arquivo Vagrantfile. Nossa primeira ação é inicializar o vagrant para que ele gera o arquivo Vagrantfile modelo para que possamos futuramente customizar a nosso gosto.
vagrant init -m debian/jessie64
No Vagrant você tem a opção de criar o Vagrantfile usando a opção -m (minimal) que gera um arquivo apenas com as linhas essenciais ou ocultando a opção -m ele irá gerar um arquivo com todos os parâmetros do vagrantfile porém, comentados para você usar caso de fato precise.
Veja o conteúdo do arquivo:
cat Vagrantfile

Todo arquivo Vagrant irá começar com a linha Vagrant.configure(“2”) que representa a versão da API e o bloco de configuração do que você está configurando. No nosso caso apenas especificamos que queremos uma máquina virtual que usa a imagem do Debian.
5- O próximo passo é provisionar de fato a VM com o seguinte comando:
vagrant up
Aqui é onde a mágica realmente acontece, o Vagrant faz download da imagem do SO escolhido para uma cópia local, e a partir desta cópia inicia-se a comunicação com a API do VirtualBox passando todos os parâmetros que você pode customizar no arquivo.
Ao final você pode verificar que a sua máquina foi criada pela interface gráfica do VirtualBox:

Ou executando o comando:
vagrant status

ACESSANDO SUA MÁQUINA
1- Acessando a máquina:
vagrant ssh

Execute alguns comandos para testar sua máquina virtual:
ip address

free -h

df -h

exit
COMANDOS BÁSICOS VAGRANT
Assim como podemos subir nossa máquina com apenas um comando, podemos desligá-la, reativa-la sempre com um comando, a seguir temos alguns dos principais comandos que são importantes que você saiba para conseguir gerenciar suas máquinas virtuais, sempre via Command Line!
Iniciar a configuração de uma VM
vagrant init
(Nesse caso como já criamos, ele apenas vai informar que o Vagrantfile já existe)
Para desligar a VM
vagrant halt
Atualizar boxes
vagrant box update
Para provisionar e/ou ligar uma VM
vagrant up
**Para recarregar uma VM (reboot) **Aqui ele faz a releitura do arquivo de configuração e atualiza a VM caso necessário:
vagrant reload
Para suspender uma VM (pause)
vagrant suspend
Verificar o Status de uma VM
vagrant status
Para fazer resume de uma VM suspensa
vagrant resume
Verificar o status de uma VM (faça de novo para fixar a mudança de status)
vagrant status
Para acessar sua VM
vagrant ssh
Sair de uma VM
exit
Para destruir a VM (apaga todos os dados)
vagrant destroy
Verificar o status de uma VM (faça de novo para fixar a mudança de status)
vagrant status
Para outros comandos e ajuda
vagrant help
Exibir todos os ambientes de Vagrant criados e seus respectivos status
vagrant global-status
CUSTOMIZANDO O VAGRANTFILE
Explorando o Vagrantfile
O “Vagrantfile” funciona de modo bem parecido ao “Dockerfile” do Docker ambos contém parâmetros que permitem configurar uma máquina virtual/contêiner, redirecionamento de conexões de rede, compartilhamento de diretórios e até mesmo executar trechos de código. Porém, como o Vagrant possui muito mais recursos que o Docker por se tratar de uma Máquina Virtual, ele acaba tendo uma estrutura um pouco mais complexa.
Incrementando Vagrantfile
Edite o arquivo Vagrantfile criado anteriormente deixando como no bloco abaixo:
Vagrant.configure("2") do |config|
config.vm.box = "debian/jessie64"
config.vm.hostname = "laboratorio-01"
config.vm.network :private_network, :ip => "10.10.0.100"
config.vm.provider :virtualbox do |v|
v.cpus = 1
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--name", "laboratorio-01"]
end
end
Caso você tenha executado os comandos do bloco anterior sua VMfoi destruída, então execute “vagrant up”, caso contrário, basta dar um reload:
vagrant up
ou
vagrant reload
Ao efetuar ssh na VM perceba que foi definido:
vagrant ssh
Uma nova interface de rede com o ip fixo: 10.10.0.100:
ip address

Foi definido o hostname:
hostnamectl

A memória foi reduzida de 1GB para 512MB:
free -h

Este é um POST de primeiros passos, então aprendemos o que é o Vagrant, o que é e como escolher uma box, gerar um vagrantfile, customizar um vagrantfile e etc. A partir desse post você já conseguirá trabalhar e desfrutar de tudo que o Vagrant pode te trazer, porém indicamos que baixe nosso Ebook de guia definitivo onde você aprenderá criar compartilhamentos de diretórios, executar comandos Shell durante o provisionamento, executar scripts prontos durante o provisionamento, etc!
Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !