Slide 1

Slide 1 text

Usando Va rant como ambiente de desenvolvimento Ruby

Slide 2

Slide 2 text

Usando Va rant como ambiente de desenvolvimento Ruby

Slide 3

Slide 3 text

Nando Vieira http://simplesideias.com.br @fnando

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

✱ ✱ ✱

Slide 8

Slide 8 text

O que você faz quando começa a trabalhar em um novo projeto?

Slide 9

Slide 9 text

O que você faz quando começa a trabalhar em projetos esporádicos?

Slide 10

Slide 10 text

O que você faz quando está em uma plataforma Windows e precisa usar ferramentas que só funcionam em ambientes *nix?

Slide 11

Slide 11 text

O que você faz quando dá cursos de desenvolvimento web?

Slide 12

Slide 12 text

Todos esses cenários possuem uma coisa em comum.

Slide 13

Slide 13 text

Confi uração de ambiente.

Slide 14

Slide 14 text

Em um mundo perfeito, você poderia apenas pe ar uma cópia do seu projeto e executá-la.

Slide 15

Slide 15 text

No mundo real, a história é muito diferente.

Slide 16

Slide 16 text

A verdade é que temos muitos problemas recorrentes.

Slide 17

Slide 17 text

Novos funcionários demoram para confi urar suas máquinas.

Slide 18

Slide 18 text

A diferença entre os ambientes de desenvolvimento e produção trazem problemas inesperados.

Slide 19

Slide 19 text

It works for me™

Slide 20

Slide 20 text

Testar ferramentas podem destruir a sua máquina de desenvolvimento.

Slide 21

Slide 21 text

Replicação de ambientes que simulam produção é complicado.

Slide 22

Slide 22 text

Grande parte desses problemas pode ser resolvida com virtualização e containers.

Slide 23

Slide 23 text

http://virtualbox.or

Slide 24

Slide 24 text

http://vmware.com

Slide 25

Slide 25 text

http://parallels.com

Slide 26

Slide 26 text

http://lxc.sourcefor e.net

Slide 27

Slide 27 text

http://docker.io

Slide 28

Slide 28 text

Nós temos muitas alternativas de virtualização e containers.

Slide 29

Slide 29 text

Mas como usar o seu poder no ambiente de desenvolvimento, de uma maneira simples?

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Mitchell Hashimoto

Slide 32

Slide 32 text

O Va rant é uma ferramenta command-line que abstrai diversas ambientes de virtualização.

Slide 33

Slide 33 text

VirtualBox DigitalOcean

Slide 34

Slide 34 text

O Va rant é uma ferramenta multi-plataforma.

Slide 35

Slide 35 text

Windows Linux Mac

Slide 36

Slide 36 text

É usado por empresas do mundo todo.

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Possui provisionamento automatizado.

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Confi urar o Va rant é muito simples.

Slide 41

Slide 41 text

Instale o VirtualBox (ou VMware, se você tiver a licença). http://virtualbox.or

Slide 42

Slide 42 text

Instale o Va rant. http://va rantup.com

Slide 43

Slide 43 text

Instale o plu in va rant-vb uest.

Slide 44

Slide 44 text

$ vagrant plugin install vagrant-vbguest

Slide 45

Slide 45 text

Adicione um box Va rant.

Slide 46

Slide 46 text

Oficiais http://files.vagrantup.com/lucid32.box http://files.vagrantup.com/lucid64.box http://files.vagrantup.com/precise32.box http://files.vagrantup.com/precise64.box Comunidade http://vagrantbox.es/ http://hellobits.com/vagrant/hellobits.box Exporte seu próprio box $ vagrant package --output your.box

Slide 47

Slide 47 text

$ vagrant box add precise64 \ http://files.vagrantup.com/precise64.box

Slide 48

Slide 48 text

Inicie um workspace.

Slide 49

Slide 49 text

$ vagrant init precise64

Slide 50

Slide 50 text

Inicie as máquinas virtuais.

Slide 51

Slide 51 text

$ vagrant up

Slide 52

Slide 52 text

Conecte através de SSH.

Slide 53

Slide 53 text

$ vagrant ssh

Slide 54

Slide 54 text

Pronto!

Slide 55

Slide 55 text

Mas como isso afeta o seu trabalho?

Slide 56

Slide 56 text

Projetos se tornam complexos com o tempo.

Slide 57

Slide 57 text

Application Server, Back round Job, Web Server, Proxy, Memcached, Redis, Mon odb, Post resql, MySql…

Slide 58

Slide 58 text

Ambientes podem ser complexos, mas não devem ser desordenados.

Slide 59

Slide 59 text

Com Va rant você pode testar as confi urações e provisionamento.

Slide 60

Slide 60 text

Vagrant.configure("2") do |config| config.vm.box = "precise64" config.vm.provision :puppet do |puppet| puppet.manifests_path = "manifests" puppet.manifest_file = "init.pp" end end

Slide 61

Slide 61 text

Você pode simular ambientes complexos com múltiplos servidores.

Slide 62

Slide 62 text

small.io HTTP Database Assets Workers

Slide 63

Slide 63 text

bi .io HTTP Database Node.js Downloads Assets

Slide 64

Slide 64 text

Com Va rant você pode levantar multi-vms em uma mesma rede.

Slide 65

Slide 65 text

Vagrant.configure("2") do |config| config.vm.define :filesystem do |fs| fs.vm.box = "precise64" fs.vm.network :hostonly, "192.168.2.100" end config.vm.define :gitserver do |git| git.vm.box = "precise64" git.vm.network :hostonly, "192.168.2.101" end end

Slide 66

Slide 66 text

Em modo de desenvolvimento, seus arquivos são compartilhados.

Slide 67

Slide 67 text

Você usa seu editor preferido, e todas as modificações são automaticamente refletidas.

Slide 68

Slide 68 text

Vagrant.configure("2") do |config| config.vm.synced_folder ".", "/Projects", id: "vagrant-root" end

Slide 69

Slide 69 text

Acesse todos os serviços como você faria normalmente.

Slide 70

Slide 70 text

Com Va rant você pode redirecionar portas do host para o uest.

Slide 71

Slide 71 text

Vagrant.configure("2") do |config| config.vm.box = "precise64" forward_port = -> guest_port, host_port = guest_port { config.vm.network :forwarded_port, guest: guest_port, host: host_port } forward_port[3000] # rails forward_port[9292] # rack forward_port[4567] # sinatra forward_port[3306] # mysql forward_port[5432] # postgresql forward_port[6379] # redis forward_port[80, 8080] # nginx/apache end

Slide 72

Slide 72 text

Com o Va rant, cada projeto possui confi urações e dependências específicas, totalmente isoladas.

Slide 73

Slide 73 text

Terminal, Editor e Nave ador Projeto 1 Projeto 2 Projeto 3 Projeto 4 + +

Slide 74

Slide 74 text

Seu ambiente de desenvolvimento é mais parecido com o ambiente de produção.

Slide 75

Slide 75 text

Mac OS X *NIX Windows Desenvolvimento Produção Estatísticas Ambiente de desenvolvimento versus ambiente de produção* *Estatísticas inventadas, mas com um fundo de verdade. Mac OS X *NIX Windows

Slide 76

Slide 76 text

http://12factor.net

Slide 77

Slide 77 text

Ambientes semelhantes tem menos probabilidade de terem falhas.

Slide 78

Slide 78 text

✱ ✱ ✱

Slide 79

Slide 79 text

Cada projeto tem suas dependências isoladas.

Slide 80

Slide 80 text

Os devs compartilham o mesmo ambiente de desenvolvimento.

Slide 81

Slide 81 text

Ambientes de desenvolvimento e produção confi urados do mesmo jeito.

Slide 82

Slide 82 text

Início imediato de novos funcionários.

Slide 83

Slide 83 text

✱ ✱ ✱

Slide 84

Slide 84 text

Obri ado!