O que é vagrant e pra que ele serve ?
O vagrant é uma ferramenta desenvolvida pela empresa hashicorp para criação de maquinas virtuais, na qual simplifica e automatiza a geração e configuração, te dando a opção de utilizar diferentes virtualizadores como: Virtual box, VMware, qemu e etc.
Para que o vagrant provisione a maquina virtual, toda a configuração é realizada através de um arquivo de codigo chamado "Vagrantfile", é por meio dele onde será realizado a construção da VM('virtual machine').
Para construção de uma maquina é necessario definir uma "imagem" que seria o sistema operacinal de sua VM('virtual machine'), para isso você pode consultar as boxes disponiveis no link.
Caso queira saber mais sobre o vagrant acesse a documentação official do vagrant:
Criando uma maquina virtual ?
Para esse projeto irei utilizar o virtual box como virtualizador padrão, e o objetivo é criar uma maquina virtual com o sistema operacional ubuntu 16.04 LTS com o serviço do MYSQL instalado.
A principal vantagem do vagrant é de que para criar uma VM não é necessario passar por todo aquele setup de instalação que vemos normalmente quando vamos instalar uma VM nova no virtual box ou qualquer outro virtualizador.
Em vez disso o vagrant utiliza um codigo que é bem simples de entender, para iniciarmos abra seu terminal(cmd, powershell, bash, shell) na maquina onde o vagrant esta instalado, com seu terminal aberto digite o comando:
vagrant init ubuntu/xenial64
Após digitar o comando acima, o vagrant vai criar um arquivo chamado Vagrantfile no diretorio, e é nele onde é definido as configurações da vm.
Se abrirmos o Vagrantfile no visual studio code, verá que há diversas opções comentadas(#) no arquivo.
Nesse caso você pode deletar todo o conteudo do arquivo e digitar o codigo abaixo.
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" config.vm.network "public_network" config.vm.hostname = "mysql-server" config.vm.provider "virtualbox" do |vb| vb.gui = true vb.cpus = 1 vb.memory = "1024" end config.vm.provision "shell", inline: <<-SHELL apt update && apt upgrade -y apt install mysql -y SHELL end
Se caso você não entendeu o codigo acima eu vou explicar oque cada comando acima quer dizer, caso você queira ver o codigo utilizado, ele esta disponivel no meu github, apenas Clique aqui para obter o codigo.
Vagrant.configure("2") do |config|: Aponta que a versão "2" será utilizada e seta a função "|config|" na qual vai receber os valores de configuração da VM.
config.vm.box = "ubuntu/xenial64": Onde apontamos a box na qual vamos utilizar.
config.vm.network "public_network": Configura a placa de rede para pegar um IP da rede.
config.vm.hostname = "mysql-server": Seta o hostname da maquina
config.vm.provider "virtualbox" do |vb|: Onde configuramos o virtualizador a ser usado, e onde é setado a função "|vb|" para as configurações do virtual box.
vb.gui = true: Configuração para quando a VM iniciar ele abrir o virtual box.
vb.cpus = 1: configuração da quantidade de CPU´s.
vb.memory = "1024": Configuração da quantidade de memoria ram.
end: Onde encerramos a função "|vb|".
config.vm.provision "shell", inline: <<-SHELL: Configuração para utilização do shell.
apt update && apt upgrade -y : Atualiza os pacotes e aplica as atualizações na maquina.
apt install mysql -y: Instala o mysql na maquina.
SHELL: Onde finaliza os scripts de instalação.
end: Onde finalizamos a função "|config|"
Para iniciar a maquina virtual, basta digitar o comando:
vagrant up
Após digitar o comando, o vagrant vai verificar se a imagem tem na maquina, caso não tenha ele vai iniciar o download, pode ocorrer durante o procedimento de perguntar sobre em qual interface você deseja colocar em modo "bridge", nesse caso eu escolhi a opção "1".
Após isso o virtual box, vai abrir uma tela onde vai exibir a maquina criada, na maioria das vezes o ususario e senha são sempre os mesmos
Usuario: vagrant
Senha: vagrant
Áo logarmos na maquina, podemos verificar que hostname da maquina foi setado conforme apontamos acima e vemos que o mysql foi instalado com sucesso na maquina virtual.
Conclusão.
O vagrant é uma excelente ferramenta para criar maquina virtuais, porem em muitos casos ele esta entrando em desuso devido ao fato de hoje existir a possibilidade da utilização de containers, na qual são mais leves e ocupam menos espaço.
Caso queira saber mais sobre o docker acesse esse link aqui:
Docker.
Codigo utilizado no artigo:
Codigo.