Upload
hart-hoover
View
367
Download
0
Embed Size (px)
DESCRIPTION
An introduction to Vagrant
Citation preview
CLOUD SAVVY
Brown BaG:VAGRANT
Hart Hoover@hhoover
Thursday, September 26, 13
CLOUD SAVVY
History of vagrant
Thursday, September 26, 13
CLOUD SAVVY 3
Thursday, September 26, 13
CLOUD SAVVY 4
Mitchell Hashimotocreated Vagrant in 2009
John Bender
Thursday, September 26, 13
CLOUD SAVVY 5
Engine Yard sponsored Vagrant through their OSS Community Grant Program in 2010
Thursday, September 26, 13
CLOUD SAVVY 6
INTEREST IN Vagrant
Thursday, September 26, 13
CLOUD SAVVY 7
Thursday, September 26, 13
CLOUD SAVVY
WHY vagrant?
Thursday, September 26, 13
CLOUD SAVVY 9
Thursday, September 26, 13
CLOUD SAVVY 10
Why Vagrant?
• Repeatable• Customizable• “It works on my machine.”
Developers
Thursday, September 26, 13
CLOUD SAVVY 11
Why Vagrant?
• Disposable Machines• Test your provisioning• Local → Production
Operations
Thursday, September 26, 13
CLOUD SAVVY 12
Why Vagrant?
=
Thursday, September 26, 13
CLOUD SAVVY
GettingStarted
Thursday, September 26, 13
CLOUD SAVVY 14
https://www.virtualbox.org/wiki/Downloads
Thursday, September 26, 13
CLOUD SAVVY 15
http://downloads.vagrantup.com/
Thursday, September 26, 13
CLOUD SAVVY 16
$ vagrant box add \precise64 \http://files.vagrantup.com/precise64.box
GET STARTED
$ mkdir ~/project
$ cd ~/project
Thursday, September 26, 13
CLOUD SAVVY 17
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 18
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 19
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 20
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 21
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 22
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 23
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 24
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 25
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 26
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 27
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 28
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 29
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 30
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 31
vagrant
boxdestroyhaltinitpackageplugin
provisionreloadresumesshssh-‐config
statussuspendup
Thursday, September 26, 13
CLOUD SAVVY 32
$ vagrant init precise64$ vagrant up
Thursday, September 26, 13
CLOUD SAVVY 33
Thursday, September 26, 13
CLOUD SAVVY 34
$ vagrant ssh
Thursday, September 26, 13
CLOUD SAVVY 35
Thursday, September 26, 13
CLOUD SAVVY 36
$ vagrant destroy
Thursday, September 26, 13
CLOUD SAVVY 37
Thursday, September 26, 13
CLOUD SAVVY 38
What JustHappened?
Thursday, September 26, 13
CLOUD SAVVY 39
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box'end
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 40
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box'end
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 41
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box'end
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 42
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box'end
THE VAGRANTFILE
BORING
Thursday, September 26, 13
CLOUD SAVVY 43
Thursday, September 26, 13
CLOUD SAVVY
ExTending Vagrant
Thursday, September 26, 13
CLOUD SAVVY
HOW TO INSTALLA PLUGIN
45
$ vagrant plugin install $PLUGIN_NAME
Thursday, September 26, 13
CLOUD SAVVY
What Plugins are Out There?
46
Thursday, September 26, 13
CLOUD SAVVY
What Plugins are Out There?
46
AND MORE
Thursday, September 26, 13
CLOUD SAVVY
What Plugins are Out There?
47
https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins
Thursday, September 26, 13
CLOUD SAVVY
DEPLOYINGTO RACKSPACE
Thursday, September 26, 13
CLOUD SAVVY 49
INSTALL THE PLUGIN
$ vagrant plugin install vagrant-‐rackspace
Thursday, September 26, 13
CLOUD SAVVY 50
$ vagrant box add \rax \http://tinyurl.com/raxdummy
GET THE BOX
Thursday, September 26, 13
CLOUD SAVVY 51
http://tinyurl.com/vagrantfiles
COPY & PASTE!
Thursday, September 26, 13
CLOUD SAVVY 52
Vagrant.configure("2") do |config| config.vm.box = "rax" config.ssh.private_key_path = "~/.ssh/id_rsa_my_private_key" config.vm.provider :rackspace do |rs| rs.username = "YOUR USERNAME" rs.api_key = "YOUR API KEY" rs.flavor = /512MB/ rs.image = /Ubuntu 12.04/ rs.public_key_path = "my_public_key.pub" endend
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 53
Vagrant.configure("2") do |config| config.vm.box = "rax" config.ssh.private_key_path = "~/.ssh/id_rsa_my_private_key" config.vm.provider :rackspace do |rs| rs.username = "YOUR USERNAME" rs.api_key = "YOUR API KEY" rs.flavor = /512MB/ rs.image = /Ubuntu 12.04/ rs.public_key_path = "my_public_key.pub" endend
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 54
Vagrant.configure("2") do |config| config.vm.box = "rax" config.ssh.private_key_path = "~/.ssh/id_rsa_my_private_key" config.vm.provider :rackspace do |rs| rs.username = "YOUR USERNAME" rs.api_key = "YOUR API KEY" rs.flavor = /512MB/ rs.image = /Ubuntu 12.04/ rs.public_key_path = "my_public_key.pub" endend
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 55
Vagrant.configure("2") do |config| config.vm.box = "rax" config.ssh.private_key_path = "~/.ssh/id_rsa_my_private_key" config.vm.provider :rackspace do |rs| rs.username = "YOUR USERNAME" rs.api_key = "YOUR API KEY" rs.flavor = /512MB/ rs.image = /Ubuntu 12.04/ rs.public_key_path = "my_public_key.pub" endend
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 56
Vagrant.configure("2") do |config| config.vm.box = "rax" config.ssh.private_key_path = "~/.ssh/id_rsa_my_private_key" config.vm.provider :rackspace do |rs| rs.username = "YOUR USERNAME" rs.api_key = "YOUR API KEY" rs.flavor = /512MB/ rs.image = /Ubuntu 12.04/ rs.public_key_path = "my_public_key.pub" endend
THE VAGRANTFILE
Thursday, September 26, 13
CLOUD SAVVY 57
START IT UP
$ vagrant up -‐-‐provider=rackspace
Thursday, September 26, 13
CLOUD SAVVY 58
Thursday, September 26, 13
CLOUD SAVVY 59
TURN IT OFF
$ vagrant ssh$ vagrant destroy
Thursday, September 26, 13
CLOUD SAVVY
VAGRANT AND CHEFUsing Config Management
with Vagrant
Thursday, September 26, 13
CLOUD SAVVY
CHEF VAGRANT PLUGINS
61
Thursday, September 26, 13
CLOUD SAVVY
CHEF VAGRANT PLUGINS
61
• vagrant-omnibus: Installs a specific version of the Chef Omnibus
Thursday, September 26, 13
CLOUD SAVVY
CHEF VAGRANT PLUGINS
61
• vagrant-omnibus: Installs a specific version of the Chef Omnibus
• vagrant-berkshelf: Tells Vagrant to look for a Berksfile
Thursday, September 26, 13
CLOUD SAVVY 62
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box' config.vm.provision "chef_solo" do |chef| chef.cookbooks_path = "chef-‐repo/cookbooks"chef.roles_path = "chef-‐repo/roles"
chef.add_role "mysql_server" chef.add_role "web_server"end
end
VAGRANT AND CHEF
Thursday, September 26, 13
CLOUD SAVVY 63
VAGRANT AND CHEF
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box' config.vm.provision "chef_solo" do |chef|
chef.cookbooks_path = "chef-‐repo/cookbooks" chef.roles_path = "chef-‐repo/roles" chef.add_role "mysql_server" chef.add_role "web_server" endend
Thursday, September 26, 13
CLOUD SAVVY 64
VAGRANT AND CHEF
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box' config.vm.provision "chef_solo" do |chef|
chef.cookbooks_path = "chef-‐repo/cookbooks" chef.roles_path = "chef-‐repo/roles" chef.add_role "mysql_server" chef.add_role "web_server" endend
Thursday, September 26, 13
CLOUD SAVVY 65
VAGRANT AND CHEF
Vagrant.configure("2") do |config| config.vm.box = 'precise64' config.vm.box_url = 'http://files.vagrantup.com/precise64.box' config.vm.provision "chef_solo" do |chef|
chef.cookbooks_path = "chef-‐repo/cookbooks" chef.roles_path = "chef-‐repo/roles" chef.add_role "mysql_server" chef.add_role "web_server" endend
Thursday, September 26, 13
CLOUD SAVVY 66
Thursday, September 26, 13
CLOUD SAVVY 67
http://www.vagrantbox.es/
CUSTOM BOXES
Thursday, September 26, 13
CLOUD SAVVY 68
Multiple MachinesVagrant.configure("2") do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "web" do |web| web.vm.network :private_network, ip: "192.168.57.10" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe("apache2") end end
config.vm.define "database" do |database| database.vm.network :private_network, ip: "192.168.57.11" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe("mysql") end endend
Thursday, September 26, 13
CLOUD SAVVY 69
Multiple MachinesVagrant.configure("2") do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "web" do |web| web.vm.network :private_network, ip: "192.168.57.10" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe("apache2") end end
config.vm.define "database" do |database| database.vm.network :private_network, ip: "192.168.57.11" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe("mysql") end endend
Thursday, September 26, 13
CLOUD SAVVY 70
Multiple MachinesVagrant.configure("2") do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "web" do |web| web.vm.network :private_network, ip: "192.168.57.10" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe("apache2") end end
config.vm.define "database" do |database| database.vm.network :private_network, ip: "192.168.57.11" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe("mysql") end endend
Thursday, September 26, 13
CLOUD SAVVY 71
SYNC FOLDERS
Vagrant.configure("2") do |config|config.vm.box = 'precise64'config.vm.box_url = 'http://files.vagrantup.com/precise64.box'config.vm.synced_folder “/home/user/project/”, “/var/www/html”end
Thursday, September 26, 13
CLOUD SAVVY 72
SYNC FOLDERS
Vagrant.configure("2") do |config|config.vm.box = 'precise64'config.vm.box_url = 'http://files.vagrantup.com/precise64.box'config.vm.synced_folder “/home/user/project/”, “/var/www/html”end
Thursday, September 26, 13
CLOUD SAVVY
THANKYOU!
Thursday, September 26, 13