Você desenvolvedor, provavelmente ja passou por aquela situação “Mas na minha máquina funciona!”, quando foi fazer um deploy de um software. Certamente é algo que todos gostariamos de evitar. E com isso venho apresentar o Vagrant para vocês!
“Vagrant é uma ferramenta para criar e gerenciar ambientes de máquinas virtuais em um único fluxo de trabalho“, Retirado e traduzido da documentação oficial do Vagrant.
O Vagrant nada mais é que um gerenciador de VMs(Virtual Machines), onde você pode criar uma VM para cada projeto, configurando a mesma com o ambiente mais próximo o possível ao de produção.
Vou mostrar os passos de instalação e criação de uma VM inicial.
Requerimentos:
– VirtualBox 5.0.x ou superior
– Chave SSH (Ainda criarei um post explicando como criar e usar a sua chave SSH, mas por enquanto podem seguir este link para criar uma chave SSH nova)
– Vim ou algum outro editor de textos para servidor.
Primeiramente voce acessa a pagina de downloads da documentação oficial do vagrant e escolhe de acordo com seu SO.
Após instalar, abra seu Terminal e digite:
vagrant box add ubuntu/xenial64
Estaremos instalando a imagem do ubuntu 16.04 no vagrant. Existem várias outras boxes de outros sitemas que podem ser encontradas aqui
Após instalar a box do Ubuntu 16.04, crie uma pasta onde ficara seu projeto. Deixarei o meu em: ~/vagrant/meu-projeto-teste
cd ~
para acessar a pasta home do usuário
mkdir -p vagrant/meu-projeto-teste
cd vagrant/meu-projeto-teste
Após ser criado, vamos começar uma instancia de uma VM Vagrant.
vagrant init
Com isso ele vai criar um arquivo chamado Vagrantfile
Vamos abrir ele e explorar suas opções:
vim Vagrantfile
Irei explicar o que cada parte deste aquivo faz:
config.vm.box = "<box>"
– Aqui você irá escolher qual box sua VM irá rodar, como instalamos a box do Ubuntu 16.04, mudaremos esse valor para ubuntu/xenial64
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
– Esta linha faz a conexāo por rede da sua máquina virtual para sua máquina real (em localhost
127.0.0.1
), entao se voce quiser subir algum site na porta 80, ou uma aplicação em NodeJS na porta 3000, você deve descomentar essa linha e fazer as alterações necessárias. Vale lembrar que voce pode ter mais de uma porta aberta, basta duplicar esta linha e modificar de acordo com suas necessidades.
# config.vm.synced_folder "../data", "/vagrant_data"
– Aqui voce pode configurar uma pasta que estará em sincrônia com sua máquina real, basicamente uma pasta compartilhada, sem segredos aqui.
# config.vm.provider "virtualbox" do |vb|
# vb.gui = true
– Mostrar Interface Gráfica do VirtualBox enquanto inicia a VM# vb.memory = "1024"
– Quanto de memoria RAM será disponibilizado para sua VM# end
Nessas linhas você pode fazer configurações relacionadas a VM, importante lembrar de sempre dar um nome para suas VMs para nao haver conflitos.
vb.name = "Meu Projeto Teste"
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
Entre essas linhas, você pode dar uma série de comandos bash para serem executados enquanto a VM é criada, esse é o passo em que você instala tudo que voce irá precisar para desenvolver e criar um ambiente mais parecido com o de produção.
Depois de tudo ser alterado, salvamos o arquivo e então executamos no terminal
vagrant up
ou vagrant up --provision
caso voce tenha arquivos separados para fazer o provision
Para encontrar mais informações sobre provision, clique aqui
Após executar o comando acima, o próximo passo é acessar a VM que você criou, então digite:
vagrant ssh
E pronto, você está dentro do seu Ambiente de Dev.
Avisos importantes:
– Após se desconectarem do vagrant, não se esqueçam de desligar a VM que estava trabalhando com o comando vagrant halt
para não ficar consumindo memória e bateria do seu notebook desnecessáriamente.
– Se você criar várias VMs, com acesso a mesma porta (ex: 80), lembre-se que voce poderá somente ter uma VM acessando está porta por vez, o que torna mais importante o tópico citado acima de sempre desligar sua VM
– Para destruir uma VM criada, basta entrar em sua pasta e digitar vagrant destroy
– Se você não lembra se deixou alguma VM ligada, basta digitar vagrant global-status
de qualquer diretório que ele mostrará os status
Todos os passos aqui reproduzidos foram testados no Ubuntu 16.04 e Mac OS High Sierra
Obrigado pela atenção e qualquer duvida estou a disposição.