Continuous Deployment of Operational Configs
Upcoming SlideShare
Loading in...5
×
 

Continuous Deployment of Operational Configs

on

  • 3,346 views

How to implement continuous deployment of operational configurations using Chef and Git. ...

How to implement continuous deployment of operational configurations using Chef and Git.

Given as a lightning talk at the "Continuous Deployment ArchCamp, 03/30/2011.
http://www.meetup.com/ArchCamp/events/16419122/

Statistics

Views

Total Views
3,346
Views on SlideShare
3,103
Embed Views
243

Actions

Likes
0
Downloads
22
Comments
0

2 Embeds 243

http://blog.mikebabineau.com 138
http://eng.ea2d.com 105

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Continuous Deployment of Operational Configs Continuous Deployment of Operational Configs Presentation Transcript

  • Continuous Deployment for Ops (who use Chef and git) @mikebabineau EA2D
  • Infrastructure as Code“Enable the reconstruction of the business from nothing but asource code repository, an application data backup, and baremetal resources” - Jesse Robbins
  • Chef primerClient-server config management toolCookbooks - modules with recipes for doing stuffRoles - which recipes? what settings?Data Bags - JSON object storageKnife - CLI tool
  • Bad:$ knife role edit myrole
  • Better:$ knife role from file roles/myrole.json
  • How?$ tree -a chef-repochef-repo├── .chef├── .git├── cookbooks│ └── myapp├── databags└── roles └── myrole.json
  • Best:$ git push origin master
  • How?for cookbook in $(git_diff("cookbooks")); do knife cookbook upload $cookbookdonefor role in $(git_diff("roles")); do knife role from file $roledonefor bag in $(git_diff("databags")); do for item in $(git_diff("items", $bag)); do knife data bag from file $bag $item donedone
  • How do you test?$ git push origin dev
  • $ cat .chef/knife.rb...# (original by jtimberman@opscode.com)require gritbranch = Grit::Repo.new("#{current_dir}/..").head.namecase branchwhen "master" orgname = "ea2d"else orgname = "ea2d-dev"endvalidation_key "#{current_dir}/#{orgname}-validator.pem"chef_server_url "https://api.opscode.com/organizations/#{orgname}"validation_client_name "#{orgname}-validator"...https://gist.github.com/829733
  • Questions?mikeb@ea2d.comWere hiring:AWS, Java, Chef, Python,JS, GAE, NoSQL, DevOps, etc.http://ea2d.com/jobs/