Conhecendo o Vagrant
-
Upload
leandro-nunes -
Category
Technology
-
view
261 -
download
1
description
Transcript of Conhecendo o Vagrant
CONHECENDO
VAGRANT
@leandrosnunes
Leandro Nunes http://leandronunes.com
O QUE É NECESSÁRIO PARA INICIAR UM PROJETO?
TODOS FAZEM INSTALAÇÕES LOCAIS
FERRAMENTA PARA CONSTRUIR E DISTRIBUIR AMBIENTES DE FORMA SIMPLES
VAGRANT
Mitchell Hashimoto @mitchellh
• Inicio em 2010 • Desenvolvido em Ruby • Release 1.6.5 • HashiCorp 2012
O QUE É PRECISO PARA UTILIZAR O VAGRANT?
MULTI-PLATAFORMA
http://www.vagrantup.com/downloads
PROVIDER Gerenciador de Máquinas Virtuais
PROVIDER
OU OU
DEFAULT OU
OU
Fonte: http://www.vcritical.com/
GUEST
HOST
$ vagrant init
VagrantFile
VAGRANTFILE_API_VERSION = "2” Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "base”end
BOX
REPRESENTA UM SISTEMA OPERACIONAL INSTALADO PARA UM PROVIDER ESPECÍFICO.
BOX BASE vagrantbox.es
vagrantcloud.com
VAGRANT CLOUD
$ vagrant init hashicorp/precise64
VAGRANTFILE_API_VERSION = "2” Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64”end
VagrantFile
$ vagrant up
VM RODANDO NO VIRTUALBOX
$ vagrant ssh
$ vagrant halt
$ vagrant init $ vagrant up $ vagrant ssh$ vagrant halt
$ 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
$ vagrant destroy
$ vagrant up
COMO TESTAR NOVAS FERRAMENTAS?
VAGRANT PARA TESTES DE SCRIPT DE CONFIGURAÇÃO
$ vagrant package
MEU IDE PREFERIDO SÓ FUNCIONA NO WINDOWS!
AS MODIFICAÇÕES SÃO REFLETIDAS EM TEMPO REAL ENTRE AS MAQUINAS HOST E GUEST
SYNCED FOLDERS
VagrantFile
config.vm.synced_folder ".", "/vagrant", type: "nfs"
COMO ACESSAR A APLICAÇÃO?
UMA REDE NAT É CRIADA POR DEFAULT. A REDE PRIVADA PERMITE ACESSO DE OUTROS DISPOSITIVOS NA MESMA REDE.
NETWORK
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
Acessando o Rails
AMBIENTE DE DESENVOLVIMENTO IGUAL PARA TODO TIME
TAREFAS MANUAIS NÃO PERMITEM QUALIDADE
ANSIBLE CHEF PUPPET SHELL
PROVISIONER
VagrantFile
config.vm.provision :puppet do |puppet| puppet.module_path = ["modules", "custon_modules"] puppet.manifest_file = "development.pp” puppet.options = "--verbose --debug”end
$ vagrant provision
$ vagrant reload --provision
INCENTIVO PARA PRÁTICAS DO MOVIMENTO DEVOPS
A APLICAÇÃO PODE RODAR EM AMBIENTE SIMILAR AO DE PRODUÇÃO
ACABA COM A FRASE
“FUNCIONA NA MINHA MÁQUINA”
GERÊNCIA DE CONFIGURAÇÃO
PARTICIPAR DE PROJETOS COM PECULIARIDADES DIFERENTES
SIMPLICIDADE PARA CONTRIBUIR PARA PROJETOS OPEN SOURCE
Postgresql
Nginx Puma
Assets
Postgresql Nginx Puma
Assets
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
FUNCIONALIDADES EXTRAS, COMO SUPORTE A OUTROS PROVIDERS
PLUGIN
$ vagrant install plugin vagrant-vbguest
$ vagrant install vagrant-librarian-puppet
VAGRANT OPEN SOURCE
Github: https://github.com/mitchellh/vagrant IRC: #vagrant Google Groups: vagrant-up
VAGRANT DOCS
http://docs.vagrantup.com/v2/
?