+ All Categories
Home > Technology > Config managament for development environments

Config managament for development environments

Date post: 16-Jan-2015
Category:
Upload: gareth-rushgrove
View: 5,934 times
Download: 1 times
Share this document with a friend
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.
Popular Tags:
45
gareth rushgrove | morethanseven.net Configuration Management for Development Environments FOSDEM 6th February 2011 http://www.flickr.com/photos/doistrakh/3448860299
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/


Recommended