dev-resources.site
for different kinds of informations.
Vagrant - configurando VM's de forma performática
Vagrant é uma ferramenta que permite a criação e manipulação de máquinas virtuais. É uma ótima ferramenta quando precisamos manipular várias máquinas, ou para automatizar settup de máquina virtual. No exemplo estou utilizando ela em conjunto com o VirtualBox, porém poderia ser utilizada com outras ferramentas de virtual machine.
** Não vou comentar a instalação do VB, pois já existem centenas de tutoriais sobre o assunto.
A ferramenta utiliza o conceito de box, então cada máquina criada é uma pequena caixa com configurações e gestão independente. Utilizando a ferramenta não é necessário passar horas baixando ISO's, ou configurando a mesma máquina centenas de vezes. Basta encontrar uma configuração de box compátivel com a que eu quero e configura-la uma vez. Ou até mesmo criar minha propria box (para mim não foi necessário até o momento).
Instalação no Ubuntu
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant
Informações úteis
Dependendo das configurações do VirtualBox, será necessário importar essa variável de ambiente antes de começar as iterações com a ferramenta, ou criar um arquivo de ambiente:
export VAGRANT_DISABLE_VBOXSYMLINKCREATE=1
Configuração
Assim como o Ansible, Docker e afins, o Vagrant utiliza um arquivo central de configuração, o Vagrantfile, pode ser criado um arquivo por contexto:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "hashicorp/precise64"
config.vm.define :db do |db_config|
db_config.vm.network :private_network, :ip => "192.168.56.10"
end
config.vm.define :web do |web_config|
web_config.vm.network :private_network, :ip => "192.168.56.12"
end
end
O parâmetro config.vm.define :db
, define um alias para a máquina que será criada, nesse caso o acrônimo será db.
config.vm.box = "hashicorp/precise64"
, é a configuração de box que será utilizada para criar as máquinas. Nesses sites você pode encontrar mais informações: https://vagrantcloud.com/. Uma box para a versão recente do ubuntu é: bento/ubuntu-22.04
.
Um informação importante é o range de IP's que será utilizado para configuração de network, esteja atento as configurações rede da máquina hospedeira.
Comandos úteis
Para criar todas as máquinas do context (isso dentro do work directory onde está o arquivo de configurações):
vagrant up
Para excluir todas as máquinas de um contexto (ele abre um dialogue box e pergunta quais serão excluídas):
vagrant destroy
Para adicionar uma configuração de box localmente:
vagrant box add nome_da_vm
Para acessar uma máquina:
vagrant ssh nome_da_vm
Featured ones: