About the Speaker • Original y 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 Comic Relief on their scalable fundraising platform. • Fol ow me on twitter @jeremyquinton
EcoSystem around the Lamp Stack has changed drastical y Linux/Windows/Mac OSX Apache MySQL PHP PHP has over 150 extensions Cassandra Varnish Memcache Redis Nginx CouchDB ZeroMQ MongoDB RabbitMQ Gearman This is not a exhaustive list
Spot the difference is similar to Dev/Prod Parity Concept “Keep development, staging, and production as similar as possible” - http://12factor.net/
Summary of Past and Present problems Setting up the modern dev environment, which has many moving, parts isn't straightforward Uniqueness Switching between projects with different dependancies is difficult Local dev environments differ significantly from production
What is the Vagrant Idea/Concept? “A tool to transparently manage al the complex parts of modern development within a virtual environment without affecting the everyday workflow of the developer too much.” - http:/.vagrantup.com Provider - Vagrant Provisioner virtualisation
How Basic Vagrant Workflow vagrant works Once Configured one command to bring up your development environment. $ vagrant up To access the virtual machine via ssh $ vagrant ssh When you finished work for the day $ vagrant halt When you done with the dev environment $ vagrant destroy [vn-name] Provision the virtual environment $ vagrant provision
Vagrant command line options Open source project written in Ruby, a command line tool. Supported on most major operating systems.
How vagrant works Vagrant instance is managed with Vagrantfile which is Ruby syntax. 28 configuration options.
Visualisation of a vagrant workflow Windows Developer VCS Mac Osx Developer VagrantFile Linux Developer Chef Solo Scripts 1. vagrant add box box_name package.box 2. vagrant up 3. vagrant provision Deployment Staging Production tool
Multi VM Environments
Multi VM Environments Accurately modeling a separate web and database server within the same development environment. Modeling a cluster of machines, and how they behave together. Testing a load balancer configuration, or the effects of “unplugging” a machine.
New Vagrant Providers Vagrant 1.1 - Released end of Feb $ vagrant up --provider=aws
Col aboration is everything
Vagrant 1.1 plugin system is completely re-written