Slide 1

Slide 1 text

Vagrant Team development made easy

Slide 2

Slide 2 text

Me Technical Leader @Centralway Before? Intraneia ● Open-Source, Ubuntu Deloitte ● IT Audits, Security & Privacy

Slide 3

Slide 3 text

How do we develop..

Slide 4

Slide 4 text

MySQL Apache2 Python PEAR RVM npm nginx PostgreSQL PHP Ruby RoR MongoDB .... ??? Local development environment

Slide 5

Slide 5 text

Local development environment No Isolation Not Shareable Not Repeatable

Slide 6

Slide 6 text

Alternative? Virtual Machines

Slide 7

Slide 7 text

Vagrant Free and open source Started on January 21, 2010 by Mitchell Hashimoto and John Bender. The first release, 0.1.0 released on March 7, 2010. Linux, Mac OS X, and Windows

Slide 8

Slide 8 text

Vision The vision of the project is to create a tool to transparently manage all the complex parts of modern development within a virtual environment without affecting the everyday workflow of the developer too much.

Slide 9

Slide 9 text

Vagrant ~12000 lines of Ruby ~3500 : test code ~5500 : "plugins" ~3300 : core Thats a lot of code!!!

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Script must... Import a virtual machine setup host only networking setup shared folders boots the machine provision the machine support Mac, Linux, and Windows guest additions NFS

Slide 12

Slide 12 text

and how do we use it?

Slide 13

Slide 13 text

the basic way #Fetch the Box $ vagrant box add base http://files.vagrantup.com/precise32.box #Init Vagrant on your current folder $ vagrant init #Start it!! $ vagrant up

Slide 14

Slide 14 text

with various projects...

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Vagrantfile Vagrant::Config.run do |config| config.vm.box = "debian" config.vm.box_url = "http://path/to/vagrantbox.box" config.vm.network :hostonly, "10.10.10.10", :adapter=>4 config.vm.customize ["modifyvm", :id, "--memory", "512"] end

Slide 17

Slide 17 text

Vagrantfile Vagrant::Config.run do |config| config.vm.box = "debian" config.vm.box_url = "http://path/to/vagrantbox.box" config.vm.network :hostonly, "10.10.10.10", :adapter=>4 config.vm.customize ["modifyvm", :id, "--memory", "512"] config.vm.provision :puppet do |puppet| puppet.manifests_path = "vagrant/puppet/manifests" puppet.manifest_file = "base.pp" end config.vm.provision :shell, :inline => "/bin/bash /vagrant/myscript.sh" end

Slide 18

Slide 18 text

Vagrantfile Vagrant::Config.run do |config| config.vm.box = "debian" config.vm.box_url = "http://path/to/vagrantbox.box" config.vm.network :hostonly, "10.10.10.10", :adapter=>4 config.vm.customize ["modifyvm", :id, "--memory", "512"] config.vm.provision :puppet do |puppet| puppet.manifests_path = "vagrant/puppet/manifests" puppet.manifest_file = "base.pp" end config.vm.provision :shell, :inline => "/bin/bash /vagrant/myscript.sh" end

Slide 19

Slide 19 text

Demo time....

Slide 20

Slide 20 text

important vagrant commands vagrant up vagrant provision vagrant suspend vagrant halt vagrant destroy

Slide 21

Slide 21 text

tips shared folders vs NFS golden box vs clean box similar environments -> helps deployments Multi-VM Environments http://vagrantup.com/v1/docs/multivm.html

Slide 22

Slide 22 text

tips veewee ● github.com/jedi4ever/veewee puppet / chef

Slide 23

Slide 23 text

Thank You vagrantup.com vagrantbox.es github.com/igama/wp-vagrant-demo