vagrant
ambiente de desenvolvimento virtualizado
@krolow
ambientes de projetos são complicados
#1
lidar com versões de software é complicado
#2
“Esse projeto só roda na versão X do node.js”
seu OS de desenvolvimento é diferente do OS de produção
#3
“Na minha máquina estava funcionando…”
compartilhar seu ambiente com outros
#4
“Hey, é só seguir esse passo a passo que fiz! Criei até um INSTALL.md!”
Manutenção
Tempo gasto para fazer/manter
INSTALL.md para cada OS
Go horse install
● impossível de repetir/compartilhar● não confiável● não está isolado● processo demanda muito tempo● gera muitas dúvidas
problemas
gerenciar, configurar múltiplas aplicações…
consultores… agências web...
chega de fatos
#5
Virtualizaçãocomo
solução
Possibilita prévia instalação de software
Instalar OS igual ao de produção
Ambiente isolado
Compartilhar ambiente
Não enxe a sua máquina de “tranqueiras”
Novos/Velhos developers podem usar a VM e não perder tempo
e temos um campeão
nana, nina, não
Tamanho do arquivo
Como manter atualizado?software é mutável, dependências também são
Automatizar a criação
Uma ferramenta CLI fácil e portátil de configurar e reproduzir ambientes
“Trocando em miúdos”
nomenclaturas básicas● Boxes● Providers● Provisions
vagrant características● Simples command line (CLI)● Baixa box e cria virtual machine● Provem interface para configurar
propriedades da maquina virtual(network, sync files, propriedades)
● Assim como para configurar e instalar softwares na VM
● com uma DSL ruby para configuração
Comandos básicos
criar e utilizar...
vagrant init cria um arquivo de configuração Vagrantfile com uma simples DSL
boxes...
Possibilita alterações nas propriedades da VM
providers...
Possibilita alteração constante nos softwares/configs utilizadas
provisions...
Não altera ambiente do desenvolvedor
mesmo browser! mesmo editor!
Opensource e multiplataforma
Pronto para ser posto num repositório GIT e compartilhado
Problemas resolvidos!● ambiente isolado● mantível/atulizável● reaproveitável/reutilizável● compartilhável (arquivo simples)● automatizável (via CLI)
Vagrant workflow
1. Criar e configurar repositório com Vagrant
2. Developers clonam repositório e vagrant up
3. Developers continuam utilizando suas tools
networking, file sync
4. Possibilita manter versões de software/depêndencias e configurações atualizadas
provision
Ainda por cima sai com uma automatização e teste da configuração do OS para produção
Um olhar mais profundo
networking
networking● NAT (compartilhar portas)● HOST-only (compartilhamento privado)● Bridge (compartilhamento público)
Como resultado podemos continuar utilizando o mesmo browser
files sync
files sync● NFS (Network file system)● RSync● SMB● VirutalBox● Outros via plugin
Como resultado podemos continuar utilizando o mesmo editor
provisions
É o cara que vai instalar software e fazer as configurações para você
provisions● file (replicar files não mantem atualizado)● shell● Ansiable● Cfengine● Chef (solo e client)● Puppet (apply e agent)● Docker● Salt
Importante aprender um ou mais para usar em conjunto com o Vagrant
uma olhadinha no puppet...
aprendendo puppet...
https://puppetlabs.com/learn
providers
Gerenciador da maquina virtual...
por padrão VirutalBox
outros podem serem instalados por plugins...
providers● VirtualBox● VMWare● Docker● Hyper-v● lxc● aws● Digital Ocean...
vagrant up por provider
múltiplas máquinas
ambientes mais complexos demandam mais de uma máquina e vagrant provém suporte ao mesmo!
E o network faz com que as duas se falem!
plugins
Novos comandos, provisions, providers, handlers...
vagrant cloud locãohttps://vagrantcloud.com/
Adicionar box, achar boxes, compartilhar, e mais uns “parangolé” doido...
● facilidade na criação● simples de configurar● possibilita atualização constante via
provisions● ganhas um ambiente isolado● provisions pronto para produção● facilita criação de ambientes de continuos
integration
eras isso...
Obrigadohttp://krolow.com.br