Vagrant - ambiente de desenvolvimento virtualizado

Preview:

DESCRIPTION

Talk apresentada no Tchêlinux - Pelotas (2014) Falando de ambientes de desenvolvimento virtual, apontando as facilitades/vantagens do uso do mesmo, e usando vagrant como ferramenta criar esses ambientes

Citation preview

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

Recommended