config managament for development environments

45
gareth rushgrove | morethanseven.net Configuration Management for Development Environments FOSDEM 6th February 2011 http://www.flickr.com/photos/doistrakh/3448860299

Upload: gareth-rushgrove

Post on 16-Jan-2015

5.936 views

Category:

Technology


1 download

DESCRIPTION

Discussion, advise and code for using techniques like configuration management and virtualisation for managing local development environments.Talk given at FOSDEM 2011 in the Configuration and Systems Management room.

TRANSCRIPT

Page 1: Config managament for development environments

gareth rushgrove | morethanseven.net

Configuration Managementfor Development Environments

FOSDEM 6th February 2011

http://www.flickr.com/photos/doistrakh/3448860299

Page 2: Config managament for development environments

Gareth Rushgrove

gareth rushgrove | morethanseven.net

morethanseven.net

Page 3: Config managament for development environments

Work at FreeAgent

gareth rushgrove | morethanseven.net

freeagentcentral.com

Page 4: Config managament for development environments

devopsweekly.com

gareth rushgrove | morethanseven.net

Page 5: Config managament for development environments

http://www.flickr.com/photos/arttravel_nz/4178520218gareth rushgrove | morethanseven.net

Problems

Page 6: Config managament for development environments

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/samagnew/3179259502/

1. Not all developers want to be sysadmins

Page 7: Config managament for development environments

http://www.flickr.com/photos/gregwake/4927118859gareth rushgrove | morethanseven.net

2. New employees

Page 8: Config managament for development environments

3. Works on my machine

gareth rushgrove | morethanseven.net

Page 9: Config managament for development environments

4. Running a full stack locally

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/donaldmacleod/5216044050

Page 10: Config managament for development environments

http://www.flickr.com/photos/thesuttonfamily/2663990050

5. Service based architectures

gareth rushgrove | morethanseven.net

Page 11: Config managament for development environments

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/exalthim/3597210568

Solutions

Page 12: Config managament for development environments

http://www.flickr.com/photos/robdray/4805444111

1. Virtualisation

gareth rushgrove | morethanseven.net

Page 13: Config managament for development environments

VirtualBox

gareth rushgrove | morethanseven.net

Page 14: Config managament for development environments

VMware

gareth rushgrove | morethanseven.net

Page 15: Config managament for development environments

Virtualisation needs powerful hardware

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/martinoc/477335951

Page 16: Config managament for development environments

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/monkeyc/3496523476

What about editing code?

Page 17: Config managament for development environments

Shared Folders or NFS

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/konajra/5202442920

Page 18: Config managament for development environments

Doubledown

Page 19: Config managament for development environments

Vim

gareth rushgrove | morethanseven.net

Page 20: Config managament for development environments

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/monkeyc/3496521334

To the Cloud

Page 21: Config managament for development environments

Amazon EC2

gareth rushgrove | morethanseven.net

Page 22: Config managament for development environments

Rackspace Cloud

gareth rushgrove | morethanseven.net

Page 23: Config managament for development environments

Private Clouds

gareth rushgrove | morethanseven.net

Page 24: Config managament for development environments

Devstructure

gareth rushgrove | morethanseven.net

devstructure.com

Page 25: Config managament for development environments

2. Local configuration management

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/popcorncx/3516880947

Page 26: Config managament for development environments

Chef solo

gareth rushgrove | morethanseven.net

Page 27: Config managament for development environments

Puppet standalone

gareth rushgrove | morethanseven.net

Page 28: Config managament for development environments

Vagrant

gareth rushgrove | morethanseven.net

vagrantup.com

Page 29: Config managament for development environments

What is Vagrant?

gareth rushgrove | morethanseven.net

- Automated virtual machine creation using Oracle’s VirtualBox

- Automated provisioning of virtual environments using Chef or Puppet

- Full SSH access to created environments

- Assign a static IP to your VM, accessible from your machine

- Forward ports to the host machine

- Shared folders allows you to continue using your own editor

- Package environments into distributable boxes

- Completely tear down environment when you’re done

- Easily rebuild a complete environment with a single command

Page 30: Config managament for development environments

$ gem install vagrant$ vagrant box add lucid32 http://.../lucid32.box$ vagrant init$ vagrant up

Vagrant up

gareth rushgrove | morethanseven.net

Page 31: Config managament for development environments

Vagrant::Config.run do |config| config.vm.box = "lucid32"end

Vagrantfile

gareth rushgrove | morethanseven.net

Page 32: Config managament for development environments

Vagrant::Config.run do |config| config.vm.forward_port("web", 80, 8080) config.vm.forward_port("ftp", 21, 4567) config.vm.forward_port("ssh", 22, 2222, :auto => true)end

Port forwarding

gareth rushgrove | morethanseven.net

Page 33: Config managament for development environments

Vagrant::Config.run do |config| config.vm.share_folder("folder", "/guest", "../host")end

Shared folders

gareth rushgrove | morethanseven.net

Page 34: Config managament for development environments

Vagrant::Config.run do |config| config.vm.define :web do |web_config| web_config.vm.box = "web" web_config.vm.forward_port("http", 80, 8080) end

config.vm.define :db do |db_config| db_config.vm.box = "db" db_config.vm.forward_port("db", 3306, 3306) endend

Multiple VMs

gareth rushgrove | morethanseven.net

Page 35: Config managament for development environments

Vagrant provisioning with Puppet

gareth rushgrove | morethanseven.net

Vagrant::Config.run do |config| config.vm.provision :puppet do |puppet| puppet.manifests_path = "puppetmanifests" puppet.manifest_file = "newbox.pp" endend

Page 36: Config managament for development environments

Vagrant provisioning with Chef

gareth rushgrove | morethanseven.net

Vagrant::Config.run do |config| config.vm.provision :chef_solo do |chef| chef.roles_path = "roles" chef.add_role("vm") endend

Page 37: Config managament for development environments

Vagrant::Config.run do |config| config.vm.provision :chef_solo do |chef| chef.recipe_url = "http://github.com/cookbooks.tar.gz" chef.add_recipe "garethr" chef.cookbooks_path = [:vm, "cookbooks"] chef.json.merge!({ :garethr => { :ohmyzsh => "https://github.com/.../oh-my-zsh.git", :dotvim => "https://github.com/garethr/dotvim.git" }}) endend

gareth rushgrove | morethanseven.net

Remote Tar File

Page 38: Config managament for development environments

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/s3a/4710416678

Base boxes

Page 39: Config managament for development environments

VeeWee

gareth rushgrove | morethanseven.net

Page 40: Config managament for development environments

gareth rushgrove | morethanseven.net ttp://www.flickr.com/photos/moonboots/40371626

Conclusions

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/exalthim/1783760822

Page 41: Config managament for development environments

http://www.flickr.com/photos/s__i/1016532054

1. Executable documentation

gareth rushgrove | morethanseven.net

Page 42: Config managament for development environments

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/matthewgriff/3981894124

2. Early testing of recipes or manifests

Page 43: Config managament for development environments

3. Shared language between dev and ops

gareth rushgrove | morethanseven.net http://www.flickr.com/photos/matthias17/756090070

Page 44: Config managament for development environments

FOSDEM11

Extra month free for FreeAgent

gareth rushgrove | morethanseven.net

Page 45: Config managament for development environments

Questions?

gareth rushgrove | morethanseven.net http://flickr.com/photos/psd/102332391/