SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
VAGRANT 
Agilizando seu ambiente de desenvolvimento 
Minicurso
Leandro Nunes 
http://leandronunes.com 
@leandrosnunes
Pré-requisito 
$ for name in {vagrant,git,vim,vboxmanage} ; do which $name ; done
O QUE É 
NECESSÁRIO 
PARA INICIAR UM 
PROJETO?
TODOS FAZEM 
INSTALAÇÕES 
LOCAIS
VAGRANT 
FERRAMENTA PARA 
CONSTRUIR E DISTRIBUIR 
AMBIENTES DE FORMA 
SIMPLES
Mitchell Hashimoto 
@mitchellh 
• Inicio em 2010 
• Desenvolvido em Ruby 
• Release 1.6.5 
• HashiCorp 2012
O QUE É PRECISO 
PARA UTILIZAR O 
VAGRANT?
UMA MÁQUINA HOST 
Maquina para instalar o vagrant – Máquina de Desenvolvimento 
VAGRANT 
www.vagrantup.com 
PROVIDER 
Gerenciador de Máquinas Virtuais
PROVIDER 
OU OU 
DEFAULT OU 
OU
Download em: 
www.vagrantup.com 
www.virtualbox.org
GUEST 
Fonte: http://www.vcritical.com/ 
HOST
$ vBoxManage
$ mkdir mini-curso-vagrant 
$ cd mini-curso-vagrant
$ vagrant init 
vagrant init [box-name] [box-url]
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 init leandrosnunes/precise64
VagrantFile 
VAGRANTFILE_API_VERSION = "2” 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
config.vm.box = ”leandrosnunes/precise64” 
end
$ vagrant box add ADDRESS 
$ vagrant box list
$ vagrant up
VM RODANDO NO 
VIRTUALBOX
$ vagrant ssh
$ vagrant halt
$ vagrant init 
$ vagrant box 
$ vagrant up 
$ vagrant ssh 
$ vagrant halt
EFETUAR TESTES DE 
NOVAS FERRAMENTAS
$ vagrant up 
$ vagrant ssh 
$ sudo apt-get update 
$ sudo apt-get –y install postgresql 
$ sudo apt-get –y install nginx 
$ sudo apt-get –y install php 
$ sudo apt-get –y uninstall php 
$ sudo apt-get –y install ruby
$ vagrant up 
$ vagrant ssh 
$ sudo apt-get update 
$ which nginx 
$ sudo apt-get –y install nginx 
$ which nginx
$ vagrant status
$ vagrant destroy
$ vagrant up
MEU IDE 
PREFERIDO SÓ 
FUNCIONA NO 
WINDOWS!
SYNCED FOLDERS 
AS MODIFICAÇÕES 
SÃO REFLETIDAS EM 
TEMPO REAL ENTRE 
AS MAQUINAS HOST E 
GUEST
$ echo "Mini Curso de Vagrant" > hello_world.txt 
$ cat hello_world.txt 
$ vagrant ssh 
$ cd /vagrant 
$ ls 
$ cat hello_world.txt
COMO ACESSAR A 
APLICAÇÃO?
NETWORK 
UMA REDE NAT É 
CRIADA POR DEFAULT. 
A REDE PRIVADA 
PERMITE ACESSO DE 
OUTROS DISPOSITIVOS 
NA MESMA REDE.
$ vagrant destroy 
$ cd ../ 
$ rm –r mini-curso-vagrant 
$ git clone git@github.com:LeandroSNunes/mini-curso- 
vagrant.git 
$ cd mini-curso-vagrant 
$ git fetch origin step1 
$ git checkout step1 
$ git commit –am “update”
VagrantFile 
config.vm.network :private_network, ip: "192.168.33.30” 
config.vm.network :forwarded_port, guest: 3000, host: 3000 
config.vm.network :forwarded_port, guest: 3306, host: 3306 
config.vm.post_up_message = ”Mini curso de vagrantn IP: 192.168.33.30"
$ vagrant up 
$ vagrant ssh 
$ sudo apt-get update 
$ sudo apt-get –y install nginx 
$ sudo service nginx start
Acessando o nginx
$ vagrant package
AMBIENTE DE 
DESENVOLVIMENTO 
IGUAL PARA TODO 
TIME
Postgresql 
Nginx 
Puma 
Assets
Nginx Postgresql Puma 
Assets
1 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
2 config.vm.box = "leandrosnunes/precise64" 
3 
4 config.vm.define :development do |dev| 
5 dev.vm.network "private_network", ip: "192.168.33.30" 
6 dev.vm.network :forwarded_port, guest: 3306, host: 3306 # mysql 
7 
8 dev.vm.post_up_message = "Dev mini curso de vagrantn IP: 192.168.33.30" 
9 end 
10 
11 config.vm.define :production do |pro| 
12 pro.vm.network "private_network", ip: "192.168.33.31" 
13 
14 pro.vm.post_up_message = "Prod mini curso de vagrantn IP: 192.168.33.31" 
15 end 
16 end
$ vagrant up 
$ vagrant up development 
$ vagrant up production 
$ vagrant ssh 
$ vagrant ssh development 
$ vagrant ssh production
$ vagrant destroy 
$ vagrant destroy development 
$ vagrant destroy production 
$ vagrant halt 
$ vagrant halt development 
$ vagrant halt production
A APLICAÇÃO PODE 
RODAR EM AMBIENTE 
SIMILAR AO DE 
PRODUÇÃO
ACABA COM A FRASE 
“FUNCIONA NA 
MINHA MÁQUINA”
1 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
2 config.vm.box = "leandrosnunes/precise64" 
3 
4 config.vm.define :development do |dev| 
5 dev.vm.network "private_network", ip: "192.168.33.30" 
6 dev.vm.network :forwarded_port, guest: 3306, host: 3306 # mysql 
7 
8 dev.vm.provider "virtualbox" do |vb| 
9 vb.customize ["modifyvm", :id, "--memory", "1024"] 
10 vb.customize ["modifyvm", :id, "--cpus", "1"] 
11 end 
12 
13 dev.vm.post_up_message = "Dev mini curso de vagrantn IP: 192.168.33.30" 
14 end 
15 
16 config.vm.define :production do |pro| 
17 pro.vm.network "private_network", ip: "192.168.33.31" 
18 
19 pro.vm.provider "virtualbox" do |vb| 
20 vb.customize ["modifyvm", :id, "--memory", "1024"] 
21 vb.customize ["modifyvm", :id, "--cpus", "2"] 
22 end 
23 
24 pro.vm.post_up_message = "Prod mini curso de vagrantn IP: 192.168.33.31" 
25 end 
26 end
TAREFAS 
MANUAIS NÃO 
PERMITEM 
QUALIDADE
PROVISIONER 
ANSIBLE CHEF PUPPET SHELL
development 
1 dev.vm.provision :puppet do |puppet| 
2 puppet.module_path = "modules" 
3 puppet.manifest_file = "development.pp" 
4 puppet.options = "--verbose --debug" 
5 end 
production 
1 pro.vm.provision :puppet do |puppet| 
2 puppet.module_path = "modules" 
3 puppet.manifest_file = "production.pp" 
4 end
$ vagrant up development 
$ vagrant up production
$ vagrant provision
$ vagrant reload --provision
GERÊNCIA DE 
CONFIGURAÇÃO
INCENTIVO PARA 
PRÁTICAS DO 
MOVIMENTO DEVOPS
PARTICIPAR DE 
PROJETOS COM 
PECULIARIDADES 
DIFERENTES
SIMPLICIDADE PARA 
CONTRIBUIR PARA 
PROJETOS OPEN 
SOURCE
PLUGIN 
FUNCIONALIDADES 
EXTRAS, COMO 
SUPORTE A OUTROS 
PROVIDERS
$ vagrant install plugin vagrant-vbguest 
$ vagrant install vagrant-librarian-puppet
VagrantFile 
config.vm.synced_folder ".", "/vagrant", type: "nfs"
VAGRANT OPEN SOURCE 
Github: https://github.com/mitchellh/vagrant 
IRC: #vagrant 
Google Groups: vagrant-up
VAGRANT DOCS 
http://docs.vagrantup.com/v2/
?

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Docker 原理與實作
Docker 原理與實作Docker 原理與實作
Docker 原理與實作
 
Continuous Delivery di una WebApp - by example
Continuous Delivery di una WebApp - by exampleContinuous Delivery di una WebApp - by example
Continuous Delivery di una WebApp - by example
 
Docker at Flux7
Docker at Flux7Docker at Flux7
Docker at Flux7
 
Vagrant for real
Vagrant for realVagrant for real
Vagrant for real
 
Docker
DockerDocker
Docker
 
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
 
Docker composeで開発環境をメンバに配布せよ
Docker composeで開発環境をメンバに配布せよDocker composeで開発環境をメンバに配布せよ
Docker composeで開発環境をメンバに配布せよ
 
node.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Servernode.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Server
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
 
Docker, c'est bonheur !
Docker, c'est bonheur !Docker, c'est bonheur !
Docker, c'est bonheur !
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
문서화에 날개를 달아주는 Flybook CLI
문서화에 날개를 달아주는 Flybook CLI문서화에 날개를 달아주는 Flybook CLI
문서화에 날개를 달아주는 Flybook CLI
 
Configuring Django projects for multiple environments
Configuring Django projects for multiple environmentsConfiguring Django projects for multiple environments
Configuring Django projects for multiple environments
 
How to manage Microsoft Azure with open source
How to manage Microsoft Azure with open sourceHow to manage Microsoft Azure with open source
How to manage Microsoft Azure with open source
 
Building (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with PackerBuilding (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with Packer
 
Docker puppetcamp london 2013
Docker puppetcamp london 2013Docker puppetcamp london 2013
Docker puppetcamp london 2013
 
Vagrant 101 Workshop
Vagrant 101 WorkshopVagrant 101 Workshop
Vagrant 101 Workshop
 
Node.js Cloud deployment
Node.js Cloud deploymentNode.js Cloud deployment
Node.js Cloud deployment
 
Install openstack
Install openstackInstall openstack
Install openstack
 
Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014
 

Destaque

Destaque (7)

Vagrant, como usar para desenvolvimento PHP
Vagrant, como usar para desenvolvimento PHPVagrant, como usar para desenvolvimento PHP
Vagrant, como usar para desenvolvimento PHP
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Vagrant for Virtualized Development
Vagrant for Virtualized DevelopmentVagrant for Virtualized Development
Vagrant for Virtualized Development
 
Microservices Practitioner Summit Jan '15 - Scaling Uber from 1 to 100s of Se...
Microservices Practitioner Summit Jan '15 - Scaling Uber from 1 to 100s of Se...Microservices Practitioner Summit Jan '15 - Scaling Uber from 1 to 100s of Se...
Microservices Practitioner Summit Jan '15 - Scaling Uber from 1 to 100s of Se...
 
Application Networks: Microservices and APIs at Netflix
Application Networks: Microservices and APIs at NetflixApplication Networks: Microservices and APIs at Netflix
Application Networks: Microservices and APIs at Netflix
 
Microservices at Spotify
Microservices at SpotifyMicroservices at Spotify
Microservices at Spotify
 
Intro to vagrant
Intro to vagrantIntro to vagrant
Intro to vagrant
 

Semelhante a Minicurso de Vagrant

Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101
jelrikvh
 

Semelhante a Minicurso de Vagrant (20)

FreeBSD: Dev to Prod
FreeBSD: Dev to ProdFreeBSD: Dev to Prod
FreeBSD: Dev to Prod
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
 
Vagrant introduction for Developers
Vagrant introduction for DevelopersVagrant introduction for Developers
Vagrant introduction for Developers
 
Vagrant-Overview
Vagrant-OverviewVagrant-Overview
Vagrant-Overview
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
 
Software Defined Datacenter
Software Defined DatacenterSoftware Defined Datacenter
Software Defined Datacenter
 
Conhecendo o Vagrant
Conhecendo o VagrantConhecendo o Vagrant
Conhecendo o Vagrant
 
Vagrant - Team Development made easy
Vagrant - Team Development made easyVagrant - Team Development made easy
Vagrant - Team Development made easy
 
Tech Talk - Vagrant
Tech Talk - VagrantTech Talk - Vagrant
Tech Talk - Vagrant
 
Vagrant for real
Vagrant for realVagrant for real
Vagrant for real
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)
 
Wordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccionWordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccion
 
Improving WordPress Performance with Xdebug and PHP Profiling
Improving WordPress Performance with Xdebug and PHP ProfilingImproving WordPress Performance with Xdebug and PHP Profiling
Improving WordPress Performance with Xdebug and PHP Profiling
 
Improving WordPress performance (xdebug and profiling)
Improving WordPress performance (xdebug and profiling)Improving WordPress performance (xdebug and profiling)
Improving WordPress performance (xdebug and profiling)
 
Modern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSD
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOps
 
Vagrant For DevOps
Vagrant For DevOpsVagrant For DevOps
Vagrant For DevOps
 
Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101Environments line-up! Vagrant & Puppet 101
Environments line-up! Vagrant & Puppet 101
 

Minicurso de Vagrant