Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vagrant
Search
Guido Marucci Blas
November 13, 2013
Programming
3
250
Vagrant
Un introducción a Vagrant y alguno tips para un mejor uso
Guido Marucci Blas
November 13, 2013
Tweet
Share
More Decks by Guido Marucci Blas
See All by Guido Marucci Blas
Código que genera código
guidomb
0
68
Como aplicar la arquitectura de Elm en Swift
guidomb
0
120
A portal from Elm to Swift
guidomb
1
470
Behavior Driven Development
guidomb
0
150
The Ruby Programming Language
guidomb
1
260
MVC, MVVM & MVP ... números romanos o que?
guidomb
4
1.9k
Other Decks in Programming
See All in Programming
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
1.6k
AI Coding Agent Enablement in TypeScript
yukukotani
17
7.4k
バリデーションライブラリ徹底比較
nayuta999999
1
480
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
280
Step up the performance game with Spring Boot and Project Leyden
mhalbritter
0
110
💎 My RubyKaigi Effect in 2025: Top Ruby Companies 🌐
yasulab
PRO
1
130
機械学習って何? 5分で解説頑張ってみる
kuroneko2828
0
130
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
2
320
カクヨムAndroidアプリのリブート
numeroanddev
0
100
Agent Rules as Domain Parser
yodakeisuke
1
380
External SecretsのさくらProvider初期実装を担当しています
logica0419
0
250
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
310
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
137
7k
Designing for Performance
lara
608
69k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Code Reviewing Like a Champion
maltzj
523
40k
Navigating Team Friction
lara
186
15k
Side Projects
sachag
454
42k
Statistics for Hackers
jakevdp
799
220k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Done Done
chrislema
184
16k
Transcript
Wednesday, November 13, 13
Guido Marucci Blas CTO & Co-Founder at Wolox guidomb guidomb@wolox.com.ar
Wednesday, November 13, 13
Permite virtualizar ambientes Es open source Soporta Virtualbox y VMware
Configurable con un DSL en Ruby Multiplataforma Wednesday, November 13, 13
¿Por qué usar Vagrant? Wednesday, November 13, 13
Probar server setups Ambientes de desarrollo replicables Probar cluster de
forma local Wednesday, November 13, 13
Probar server setups Ambientes de desarrollo replicables Probar cluster de
forma local Wednesday, November 13, 13
Projecto A Projecto B Rails 3.2 Ruby 1.9.3 Postgres 8.4
Imagemagick Poppler Rails 4.1 Ruby 2.0.0 Postgres 9.6 Wednesday, November 13, 13
- RRHH: Juan, hoy empieza el nuevo dev para el
proyecto X. ¿Cuáles van a ser sus tareas para la próxima semana? - Juan (PM): Configurar el ambiente Wednesday, November 13, 13
Nos ayuda a bajar la barrera de entrada en un
proyecto Wednesday, November 13, 13
Instalar VirtualBox Instalar Vagrant Configurar Vagrantfile $> vagrant up $>
vagrant ssh $vagrant> Setup Wednesday, November 13, 13
DEMO Wednesday, November 13, 13
Tips Wednesday, November 13, 13
Definir nombre de box por proyecto # -*- mode: ruby
-*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "vagrant-demo" config.vm.box_url = "http://files.vagrantup.com/precise64.box" # Network config.vm.synced_folder ".", "/vagrant", :nfs => true, id: "vagrant-root" config.vm.network :forwarded_port, guest: 3000, host: 8000 config.vm.network :private_network, ip: "192.168.50.4" end Wednesday, November 13, 13
Usar NFS para sync de archivos # -*- mode: ruby
-*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "vagrant-demo" config.vm.box_url = "http://files.vagrantup.com/precise64.box" # Network config.vm.synced_folder ".", "/vagrant", :nfs => true, id: "vagrant-root" config.vm.network :forwarded_port, guest: 3000, host: 8000 config.vm.network :private_network, ip: "192.168.50.4" end Wednesday, November 13, 13
Configurar memoria RAM de la VM # -*- mode: ruby
-*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "vagrant-demo" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.customize = ["modifyvm", :id, "memory", 1024] # Network config.vm.synced_folder ".", "/vagrant", :nfs => true, id: "vagrant-root" config.vm.network :forwarded_port, guest: 3000, host: 8000 config.vm.network :private_network, ip: "192.168.50.4" end Wednesday, November 13, 13
Exportar la VM configurada $> vagrant up ... SETUP ...
$> vagrant halt $> vagrant package $> mv package.box vagrant-demo.box $> echo "*.box" >> .gitignore $> vagrant box add vagrant-demo ./vagrant-demo.box Wednesday, November 13, 13
DEMO Wednesday, November 13, 13
Berkshelf Chef + + Wednesday, November 13, 13
$> vagrant plugin install vagrant-berkshelf # -*- mode: ruby -*-
# vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "vagrant-demo-chef" config.vm.box_url = "http://files.vagrantup.com/precise64.box" # Network config.vm.synced_folder ".", "/vagrant", :nfs => true, id: "vagrant-root" config.vm.network :forwarded_port, guest: 3000, host: 8000 config.vm.network :private_network, ip: "192.168.50.4" # Provisioning config.berkshelf.enabled = true config.vm.provision :chef_solo do |chef| chef.add_recipe "apt" chef.add_recipe "build-essential" chef.add_recipe "git" end end Wednesday, November 13, 13
site :opscode cookbook 'apt' cookbook 'build-essential' cookbook 'git' Definir el
Berksfile $>vim Berksfile http://berkshelf.com Wednesday, November 13, 13
$> vagrant plugin install vagrant-omnibus # -*- mode: ruby -*-
# vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "vagrant-demo-chef" config.vm.box_url = "http://files.vagrantup.com/precise64.box" # Network config.vm.synced_folder ".", "/vagrant", :nfs => true, id: "vagrant-root" config.vm.network :forwarded_port, guest: 3000, host: 8000 config.vm.network :private_network, ip: "192.168.50.4" # Provisioning config.omnibus.chef_version = :latest config.berkshelf.enabled = true config.vm.provision :chef_solo do |chef| chef.add_recipe "apt" chef.add_recipe "build-essential" chef.add_recipe "git" end end Wednesday, November 13, 13
Usar versiones fijas en las cookbooks No actualizar Vagrant a
menos que los plugins soporten la nueva versión ProTip Wednesday, November 13, 13
DEMO Wednesday, November 13, 13
Amazon EC2 + cocina de AMIs = Wednesday, November 13,
13
$> vagrant plugin install vagrant-aws config.vm.define :aws do |aws_config| credentials
= YAML.load_file("./.amazon.yml") aws_config.vm.box = "dummy" aws_config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" aws_config.omnibus.chef_version = "10.24.0" aws_config.vm.provider :aws do |aws, override| aws.access_key_id = credentials['access_key_id'] aws.secret_access_key = credentials['secret_access_key'] aws.keypair_name = "APPLICATION_NAME" aws.region = "sa-east-1" aws.region_config "sa-east-1", :ami => "ami-a3da00be" aws.security_groups = ["APPLICATION_NAME"] aws.instance_type = "m1.medium" override.ssh.username = "ubuntu" override.ssh.private_key_path = "~/.ssh/APPLICATION_NAME.pem" end aws_config.vm.provision :chef_solo do |chef| chef.add_recipe 'apt' chef.add_recipe 'application::packages' chef.add_recipe 'nginx::source' chef.add_recipe 'mysql::client' end end $> vagrant up --provider=aws Wednesday, November 13, 13
vagrant halt ¿Preguntas? Wednesday, November 13, 13