Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Avoiding surprises with Chef and Vagrant


Published on

Published in: Technology
  • Be the first to comment

Avoiding surprises with Chef and Vagrant

  1. 1. Avoiding surprises with Chef and Vagrant Andy Gale
  2. 2. Your development and production environment are not the same!• Different OS?• Different version of PHP?• Diverged package versions?• Different default configuration files?• Different PHP libraries and extensions?
  3. 3. Well, it worked on my machine!
  4. 4. Developing in a Virtual MachineReasons why we should:• Consistent OS and PHP versions between production and local development• New starters can get going with development straight away• Existing developers can redistribute development platform in case of hardware failure
  5. 5. Developing in a Virtual MachineReasons why we don’t:• Because it’s a massive pain in the arse• Scared of the command line• There’s a massive overhead keeping the VM up to date• Can never get the networking between you and your VM working
  6. 6. VagrantVirtualised development made easy
  7. 7. Vagrant Getting started• Install Oracle’s VirtualBox• Install Vagrant (packages for Windows, Mac, Linux)• Then...$ vagrant box add precise32$ vagrant init precise32$ vagrant up
  8. 8. Vagrant Configuration• Simple to configure using the Vagrantfile which can be kept in version control do |config| # Forward guest port 80 to # host port 4567 config.vm.forward_port 80, 4567 end• Apply with “vagrant reload”
  9. 9. • A tool for automating the provisioning and management of your servers• Open source• Lots of examples and code to get you started• Integrates brilliantly with Vagrant
  10. 10. Getting started• Talk from Jose Diaz-Gonzalez at CakeFest 2011• Or his comprehensive blog posts
  11. 11. My first recipepackage "ntp" do  action :install Install packageend Create config filetemplate "/etc/ntp.conf" do from template  source "ntp.conf.erb" Restart service  owner "root" when config file  group "root" changes  mode 0644  notifies :restart, resources(:service => "ntp")endservice "ntp" do  action :start Define service andend start NTP
  12. 12. Getting started• “Cookbooks” are collections of templates, files and basic Ruby code that describe how to setup something.• There’s community (i.e. Open Source, Free) cookbooks for probably everything you’ll need• You just need to define a few extra things
  13. 13. Chef and Vagrant sitting in a tree + Let’s use Vagrant to create a virtual machine to test our Chef configuration
  14. 14. Let’s go• Install Oracle’s VirtualBox• Install Vagrant (packages for Windows, Mac, Linux)• Assuming you have git$ git clone$ cd cakefest-vagrant-chef$ ./$ vagrant up
  15. 15. But that’s not it• Vagrant also supports provisioning with Puppet or just a custom script if that’s what your company uses• Use your favourite editor, your files appear in /vagrant automatically• Because you can recreate your development environment with “vagrant up” whenever you like, you can save disk space with “vagrant destroy”
  16. 16. But that is it.• Questions?• @andygale on Twitter• on the Web