Conhecendo o Vagrant

60
CONHECENDO VAGRANT

description

A qualidade de sua aplicação está relacionada também com o ambiente onde ela está implantada. Devemos tratar nossas configurações da mesma forma de nosso código fonte. Vagrant é uma ferramenta para construir e distribuir ambientes de desenvolvimento de forma simples. Fazendo uso de ferramentas de provisionamento, é possível versionar seu ambiente, simular o ambiente de produções e permitir que todo o time trabalhe com o ambiente de desenvolvimento identico.

Transcript of Conhecendo o Vagrant

Page 1: Conhecendo o Vagrant

CONHECENDO

VAGRANT

Page 2: Conhecendo o Vagrant

@leandrosnunes

Leandro Nunes http://leandronunes.com

Page 3: Conhecendo o Vagrant

O QUE É NECESSÁRIO PARA INICIAR UM PROJETO?

Page 4: Conhecendo o Vagrant

TODOS FAZEM INSTALAÇÕES LOCAIS

Page 5: Conhecendo o Vagrant

FERRAMENTA PARA CONSTRUIR E DISTRIBUIR AMBIENTES DE FORMA SIMPLES

VAGRANT

Page 6: Conhecendo o Vagrant

Mitchell Hashimoto @mitchellh

•  Inicio em 2010 •  Desenvolvido em Ruby •  Release 1.6.5 •  HashiCorp 2012

Page 7: Conhecendo o Vagrant

O QUE É PRECISO PARA UTILIZAR O VAGRANT?

Page 8: Conhecendo o Vagrant

MULTI-PLATAFORMA

http://www.vagrantup.com/downloads

Page 9: Conhecendo o Vagrant

PROVIDER Gerenciador de Máquinas Virtuais

Page 10: Conhecendo o Vagrant

PROVIDER

OU OU

DEFAULT OU

OU

Page 11: Conhecendo o Vagrant

Fonte: http://www.vcritical.com/

GUEST

HOST

Page 12: Conhecendo o Vagrant

$ vagrant init

Page 13: Conhecendo o Vagrant

VagrantFile

VAGRANTFILE_API_VERSION = "2” Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config.vm.box = "base”end  

Page 14: Conhecendo o Vagrant

BOX

REPRESENTA UM SISTEMA OPERACIONAL INSTALADO PARA UM PROVIDER ESPECÍFICO.

Page 15: Conhecendo o Vagrant

BOX BASE vagrantbox.es

vagrantcloud.com

Page 16: Conhecendo o Vagrant

VAGRANT CLOUD

Page 17: Conhecendo o Vagrant

$ vagrant init hashicorp/precise64

Page 18: Conhecendo o Vagrant

VAGRANTFILE_API_VERSION = "2” Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64”end  

VagrantFile

Page 19: Conhecendo o Vagrant

$ vagrant up

Page 20: Conhecendo o Vagrant
Page 21: Conhecendo o Vagrant

VM RODANDO NO VIRTUALBOX

Page 22: Conhecendo o Vagrant

$ vagrant ssh

Page 23: Conhecendo o Vagrant
Page 24: Conhecendo o Vagrant

$ vagrant halt

Page 25: Conhecendo o Vagrant

$ vagrant init $ vagrant up $ vagrant ssh$ vagrant halt

Page 26: Conhecendo o Vagrant

$ vagrant up

$ vagrant ssh

$ sudo apt-get install postgresql

$ sudo apt-get install nginx

$ sudo apt-get install php

$ sudo apt-get uninstall php

$ sudo apt-get install ruby

Page 27: Conhecendo o Vagrant

$ vagrant destroy

Page 28: Conhecendo o Vagrant

$ vagrant up

Page 29: Conhecendo o Vagrant
Page 30: Conhecendo o Vagrant

COMO TESTAR NOVAS FERRAMENTAS?

Page 31: Conhecendo o Vagrant

VAGRANT PARA TESTES DE SCRIPT DE CONFIGURAÇÃO

Page 32: Conhecendo o Vagrant

$ vagrant package

Page 33: Conhecendo o Vagrant

MEU IDE PREFERIDO SÓ FUNCIONA NO WINDOWS!

Page 34: Conhecendo o Vagrant

AS MODIFICAÇÕES SÃO REFLETIDAS EM TEMPO REAL ENTRE AS MAQUINAS HOST E GUEST

SYNCED FOLDERS

Page 35: Conhecendo o Vagrant

VagrantFile

config.vm.synced_folder ".", "/vagrant", type: "nfs"  

Page 36: Conhecendo o Vagrant

COMO ACESSAR A APLICAÇÃO?

Page 37: Conhecendo o Vagrant

UMA REDE NAT É CRIADA POR DEFAULT. A REDE PRIVADA PERMITE ACESSO DE OUTROS DISPOSITIVOS NA MESMA REDE.

NETWORK

Page 38: Conhecendo o Vagrant

VagrantFile

config.vm.network :private_network, ip: "192.168.40.10”config.vm.network :forwarded_port, guest: 3000, host: 3000config.vm.network :forwarded_port, guest: 8982, host: 8982config.vm.network :forwarded_port, guest: 3306, host: 3306  

Page 39: Conhecendo o Vagrant

Acessando o Rails

Page 40: Conhecendo o Vagrant

AMBIENTE DE DESENVOLVIMENTO IGUAL PARA TODO TIME

Page 41: Conhecendo o Vagrant

TAREFAS MANUAIS NÃO PERMITEM QUALIDADE

Page 42: Conhecendo o Vagrant

ANSIBLE CHEF PUPPET SHELL

PROVISIONER

Page 43: Conhecendo o Vagrant

VagrantFile

config.vm.provision :puppet do |puppet| puppet.module_path = ["modules", "custon_modules"] puppet.manifest_file = "development.pp” puppet.options = "--verbose --debug”end  

Page 44: Conhecendo o Vagrant

$ vagrant provision

Page 45: Conhecendo o Vagrant

$ vagrant reload --provision

Page 46: Conhecendo o Vagrant

INCENTIVO PARA PRÁTICAS DO MOVIMENTO DEVOPS

Page 47: Conhecendo o Vagrant

A APLICAÇÃO PODE RODAR EM AMBIENTE SIMILAR AO DE PRODUÇÃO

Page 48: Conhecendo o Vagrant

ACABA COM A FRASE

“FUNCIONA NA MINHA MÁQUINA”

Page 49: Conhecendo o Vagrant

GERÊNCIA DE CONFIGURAÇÃO

Page 50: Conhecendo o Vagrant

PARTICIPAR DE PROJETOS COM PECULIARIDADES DIFERENTES

Page 51: Conhecendo o Vagrant

SIMPLICIDADE PARA CONTRIBUIR PARA PROJETOS OPEN SOURCE

Page 52: Conhecendo o Vagrant

Postgresql

Nginx Puma

Assets

Page 53: Conhecendo o Vagrant

Postgresql Nginx Puma

Assets

Page 54: Conhecendo o Vagrant

1 config.vm.define :application do |ad| 2 config.vm.network :private_network, ip: "192.168.40.10" 3 config.vm.network :forwarded_port, guest: 3000, host: 3000 4 5 ad.vm.provision :puppet do |puppet| 6 puppet.module_path = ["modules", "custom_modules"] 7 puppet.manifest_file = "development.pp" 8 puppet.options = "--verbose --debug" 9 end10 end11 12 config.vm.define :database do |ap|13 ap.vm.network :private_network, ip: "192.168.40.20"14 ap.vm.network :forwarded_port, guest: 3306, host: 330615 16 ap.vm.provision :puppet do |puppet|17 puppet.module_path = ["modules", "custom_modules"]18 puppet.manifest_file = "production.pp"19 puppet.options = "--verbose --debug"20 end21 end  

Page 55: Conhecendo o Vagrant

FUNCIONALIDADES EXTRAS, COMO SUPORTE A OUTROS PROVIDERS

PLUGIN

Page 56: Conhecendo o Vagrant

$ vagrant install plugin vagrant-vbguest

$ vagrant install vagrant-librarian-puppet

Page 57: Conhecendo o Vagrant
Page 58: Conhecendo o Vagrant

VAGRANT OPEN SOURCE

Github: https://github.com/mitchellh/vagrant IRC: #vagrant Google Groups: vagrant-up

Page 59: Conhecendo o Vagrant

VAGRANT DOCS

http://docs.vagrantup.com/v2/

Page 60: Conhecendo o Vagrant

?