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
260
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vagrant
Un introducción a Vagrant y alguno tips para un mejor uso
Guido Marucci Blas
November 13, 2013
More Decks by Guido Marucci Blas
See All by Guido Marucci Blas
Código que genera código
guidomb
0
89
Como aplicar la arquitectura de Elm en Swift
guidomb
0
140
A portal from Elm to Swift
guidomb
1
500
Behavior Driven Development
guidomb
0
160
The Ruby Programming Language
guidomb
1
280
MVC, MVVM & MVP ... números romanos o que?
guidomb
4
2.2k
Other Decks in Programming
See All in Programming
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
220
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
180
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
160
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
460
Go 1.27 における memory allocation の高速化
andpad
0
120
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
380
テーブルをDELETEした
yuzneri
0
140
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
プロポーザルを書いてもらう
pvcresin
0
300
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.4k
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
590
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
420
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.7k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
950
Building Applications with DynamoDB
mza
96
7.2k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
310
Documentation Writing (for coders)
carmenintech
77
5.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
Transcript
Wednesday, November 13, 13
Guido Marucci Blas CTO & Co-Founder at Wolox guidomb
[email protected]
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