O
Vagrant é uma ferramenta para criar e gerenciar ambientes de máquinas virtuais. Ele reduz drasticamente o tempo de configuração do ambiente de desenvolvimento, pois é possível criarmos scripts para automatizar o provisionamento de máquinas com os chamados "Vagrantfile".
Pré-requisitos:
Possuir os softwares instalados de acordo com suas respectivas distribuições:
Abaixo vou mostrar um exemplo de como podemos criar um ambiente com o S.O Debian 10 com as seguintes características:
- 2 GB de Memória
- 1 CPU
- IP FIXO: 172.27.11.10
Criaremos então nosso diretório de trabalho no $HOME do usuário:
cd $HOME
mkdir -p vol/provision
Obs.: o diretório provision irá conter nosso shell script contendo os comandos que serão executados durante o processo de criação da máquina.
Em seguida vamos acessar o diretório criado:
cd vol
Criaremos agora nosso
Vagrantfile contendo as configurações da máquina conforme mostrado abaixo:
vim Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
vms = {
'server' => {'memory' => '2048', 'cpus' => 1, 'ip' => '10'}
}
Vagrant.configure('2') do |config|
config.vm.box = 'debian/buster64'
config.vm.box_check_update = false
vms.each do |name, conf|
config.vm.define "#{name}" do |k|
k.vm.hostname = "#{name}"
k.vm.network 'private_network', ip: "172.27.11.#{conf['ip']}"
k.vm.provider 'virtualbox' do |vb|
vb.memory = conf['memory']
vb.cpus = conf['cpus']
end
k.vm.provider 'libvirt' do |lv|
lv.memory = conf['memory']
lv.cpus = conf['cpus']
lv.cputopology :sockets => 1, :cores => conf['cpus'], :threads => '1'
end
end
end
config.vm.provision 'shell', path: 'provision/provision.sh'
end
Note que acima temos uma linha contendo um script chamado "provision/provision.sh" que faz a instalação dos pacotes durante a criação do ambiente. Em nosso exemplo eu utilizei os seguintes pacotes:
vim provision/provision.sh
#!/bin/bash
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common dirmngr vim telnet curl golang sysstat
Agora é que vem a parte mágica do negócio, com um simples comando minha máquina será criada.
vagrant up
Note que o VirtualBox em nenhum momento foi aberto, porém, se você abri-lo, poderá ver uma máquina criada dentro dele conforme mostrado abaixo:
Agora é só aguardar que seu ambiente será provisionado de forma automática. Quando tudo for finalizado, iremos acessar nosso ambiente utilizando o comando abaixo:
vagrant ssh server
Obs.: o nome do hostname server foi definido na configuração do nosso Vagrantfile.
Agora iremos verificar se nosso ambiente Debian 10 foi criado:
cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Também vamos verificar se nosso pacote vim foi instalado:
sudo apt list --installed vim
Listing... Done
vim/stable,now 2:8.1.0875-5 amd64 [installed]
E se eu quisesse criar mais maquinas ao invés de uma? Simples, seria apenas alterar a configuração do Vagrantfile conforme mostrado abaixo:
vim Vagrantfile
vms = {
'server' => {'memory' => '2048', 'cpus' => 1, 'ip' => '10'},
'node01' => {'memory' => '1024', 'cpus' => 1, 'ip' => '20'},
'node02' => {'memory' => '1024', 'cpus' => 1, 'ip' => '30'}
}
Vagrant.configure('2') do |config|
config.vm.box = 'debian/buster64'
config.vm.box_check_update = false
vms.each do |name, conf|
config.vm.define "#{name}" do |k|
k.vm.hostname = "#{name}"
k.vm.network 'private_network', ip: "172.27.11.#{conf['ip']}"
k.vm.provider 'virtualbox' do |vb|
vb.memory = conf['memory']
vb.cpus = conf['cpus']
end
k.vm.provider 'libvirt' do |lv|
lv.memory = conf['memory']
lv.cpus = conf['cpus']
lv.cputopology :sockets => 1, :cores => conf['cpus'], :threads => '1'
end
end
end
config.vm.provision 'shell', path: 'provision/provision.sh'
end
Neste exemplo acima, seriam criadas 3 máquinas com Debian 10, onde o server teria 2GB de memória e as máquinas node01 e node02 teriam 1 GB.
Caso eu queira remover a máquina que foi criada, como eu faço? Basta executar o comando abaixo dentro da pasta onde encontra-se o Vagrantfile onde será solicitada sua confirmação.
vagrant destroy server
server: Are you sure you want to destroy the 'server' VM? [y/N]
E como eu desligo a máquina virtual?
vagrant halt server
Para saber todos os comandos do vagrant acesse:
Outra coisa importante a se falar é sobre as boxes disponíveis do vagrant, você viram que utilizamos o Debian 10, porém, suponhamos que você prefira Ubuntu por exemplo, bastaria eu alterar a variável do Vagrantfile "config.vm.box = 'debian/buster64'" para " config.vm.box = 'ubuntu/trusty64'". Mas como eu disso? Existem diversas boxes prontas que podem ser encontradas no site do fabricante:
Espero que essa dica seja útil a vocês.
[]'s leoberbert
Nenhum comentário foi encontrado.