2. Quem?!
• Fernando “Fernandão” Cézar
• Quase Analista de Sistemas pela UFMS
• Trabalha com TI a 10 anos
• Sócio-Desenvolvedor da Gendoc
• Responsável pela parte web dos produtos da
Gendoc
• Cansei de perder tempo configurando ambiente.
3. Agenda
• Visão Geral do Problema
• Vagrant
• O que é?
• Porque utilizar?
• “Hello World” Vagrant
• VagrantFile
• Boxes
• Provisioners
• Dicas Rápidas
• Dúvidas?
4. Num mundo ideal seria assim:
$git clone https://git.gendoc.com.br/Projeto
$RUN
O QuickTime™ e um
GIF descompressor
são necessários para ver esta imagem.
Os problemas!
Codar!
5. $git clone https://git.gendoc.com.br/Projeto
...Lê a documentação (Quando existe)
$mkdir, cp, install, vim...
...pergunta para o chefe
$./projeto/.pasta_oculta/bin/magia_negra --fix_rebimboca --fix_esner
--qualquer_outro_parametro_nao_documentado=CONSTANTE_MAGICA_
42
...P#t$QueOPariuFilhoDaP*tDoC$r#lh*QueNaoFunciona
...1 semana depois
$RUN
O QuickTime™ e um
GIF descompressor
são necessários para ver esta imagem.
Os problemas!
Como Realmente acontece:
E, finalmente, Codar!
6. E não funciona!
Seu ambiente de trabalho é diferente do Servidor!
‣S.O. Diferente...
‣Versão Diferente do Python/PHP/Rails...
‣Versões diferentes dos Pacotes...
Mas na minha maquina Funciona?!
Os problemas!
O QuickTime™ e um
GIF descompressor
são necessários para ver esta imagem.
Publica a funcionalidade em produção:
7. Vagrant significa:
•Indivíduo sem Residencia
fixa ou trabalho regular
que vaga de lugar em
lugar e Vive de esmolas.
•Mendigo
•Programador?!
Vagrant
8. •Por Linha de comando (Não tenha medo do Terminal)
•Roda diferentes sistemas operacionais
•Define maquinas virtuais por código (Ruby)
•Criado por Mitch Hashimoto and John Bender(Primeiro commit Jan/2010)
•Integra com VirtualBox nativamente e com VMWare Fusion e AWS
através de Plugins
•Aceita Plugins
E o que é o Vagrant?
Vagrant é uma ferramenta de
gerenciamento de Máquinas Virtuais
9. •Não gasta tempo do desenvolvedor configurando
ambiente de desenvolvimento, a box com o projeto já
vem pronta!
•Maximiza a paridade entre o ambiente de
Desenvolvimento e de Produção
•Acaba com o “Mas na minha máquina funciona”
Porque Vagrant?
10. O QuickTime™ e um
GIF descompressor
são necessários para ver esta imagem.
11. •Descreve a VM através de códigos
•Pode existir um VagrantFile por Projeto e nele podem
existir mutiplas VM’s
•Pode ser versionado
VagrantFile
12. •VM’s encapsuladas junto com um VagrantFile e um
Json com informações do Provider (VirtualBox, Vmware,
AWS, etc.)
•http://www.vagrantbox.es/
Boxes
13. •Centralização das Configurações, Instalações de
bibliotecas e pacotes, Controle das versões dessas
bibliotecas e pacotes instalados.
•Pode ser a garantia de que o ambiente local de todos
os desenvolvedores estão iguais entre eles e com o
servidor de produção
•Pode ser feita através do Puppet, do Chef, do Ansible,
ou até mesmo através de scripts personalizados e
versionados junto com o VagrantFile
Provisioners
14. •O Vagrant não é mais uma Gem do RubyGems
•Instale o Vagrant a partir do download do Site (http://vagrantup.com)
•Você precisa do Fornecedor das vms instalado (VirtualBox, VMWare,
AWS, etc.)
•Se você já está com a versão 1.0.x instalada, a migração para o 1.1+ tem
um truque, é necessário inserir o Metadata.json nas vm’s existentes. Aqui
está a solução: http://www.wizonesol
utions.com/2013/04/18/fixing-the-box-could-not-be-found-in-the-new-vagrant-1-1/
•Atualizar o VirtualBox Guest Adittions por ser complicado, para isso existe
um plugin vagrant-vbguest, mas ainda não é compativel com o Vagrant
1.1+.
•Alterar o tamanho da memória ram da VM: config.vm.customize
["modifyvm", :id, "--memory", 1024]
Dicas Rápidas