About the Speaker• Originally from Cape Town South Africa been living and working in London for 6 years.• Developing with PHP on the lamp stack since 2002.• Currently work at a well known charity on their scalable fundraising platform.• Follow me on twitter @jeremyquinton
Using Vagrant, Virtual Box and Chef in yourDevelopment Environment
The future of Development@mitchellh creator and maintainer of vagrant
WHY?“Vagrant lowers development environmentsetup time, maximize dev/prod parity, andmakes the „works on my machine‟ excuse arelic of the past.”-http://vagrantup.com http://www.12factor.net
Components of a virtualised development environment• Virtualbox - virtualisation layer.• Vagrant• Provisioning tool like chef or puppet.
Virtual Box• Virutalisation product freely available as Open Source Software under (GPL) version 2.• Supports all major platforms. https://www.virtualbox.org/manual/ch01.html#hostossupport• Community effort backed by a big company.• Grab a copy for your platform at https://www.virtualbox.org/wiki/Downloads
Vagrant• “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.” - vagrantup.com• Opensource project and written in Ruby, a command line tool. Supported on most major operating systems.• Hashicorp - http://www.hashicorp.com/blog/announcing- hashicorp.html• Grab a copy here - http://downloads.vagrantup.com/tags/v1.0.5 for a package or install with ruby gems.
Chef• Chef is a open source provisioning tool which was built for automating the cloud. https://github.com/opscode/chef http://wiki.opscode.com/display/chef/Home• There are hundreds of recipes which are already written so you can simply re-use them. https://github.com/opscode/cookbooks• Can be installed via ruby gems. gem install chef• Different configurations chef solo will be used in the examples.
Windows Developer VCS Mac Osx Developer VagrantFile Linux DeveloperChef Solo Scripts 1. vagrant add box box_name package.box 2. vagrant up 3. vagrant provisionDeployment Staging Production tool
How vagrant works• Vagrant instance is managed with Vagrantfile which is ruby syntax.• 28 configuration options. You don‟t need to use them all I‟ll demo 7 today. Full list on vagrantup.com.
Basic VagrantFile• Vagrant box file can be obtained from 3 places
Three methods to create a box file Method Pros Cons Download a box file from - Simplest - You don‟t know whats on http://www.vagrant.es - Up and running quickly the base box - Time consuming. - Gives understanding of the - Miss a step or do a step Using the instructions off specifics of a vagrant box wrong and you have a vagrantup.com setup vagrant box which has odd behaviour Using the opensource project VeeWee off github - Simpler,Powerfulhttps://github.com/jedi4ever/vee - Templates for most server operating systemswee
• Download Virtualbox 4.1.22 http://download.virtualbox.org/virtualbox/4.1.22/• Download vagrant package or install via ruby gems http://downloads.vagrantup.com/tags/v1.0.5• Add 18.104.22.168 vagrantdemo.com to /etc/hosts• Get the project git clone http://www.github.com/jeremyquinton/vagrant_demo cd vagrant_demo• vagrant up --no-provision• vagrant provision• Browse to vagrantdemo.com