Chef workflow at
                            Daniel Schauenberg
                          dschauenberg@etsy.com
                                 @mrtazz




Tuesday, January 29, 13
Etsy Infrastructure
                    • ~1000 nodes
                    • ~30 dev/ops engineers making changes
                          regularly
                    • Open Source Chef server + GitHub
                          Enterprise
                    • Default environment setup (production,
                          development, testing)


Tuesday, January 29, 13
jonlives/knife-spork



Tuesday, January 29, 13
Tuesday, January 29, 13
% shef
  chef > recipe
  chef:recipe > echo off
  chef:recipe > include_recipe "apache"
  chef:recipe > run_chef


Tuesday, January 29, 13
% review -r jcowie --cc ops




Tuesday, January 29, 13
% knife spork check apache
                % knife spork bump apache
                % git commit
                % git push
                % knife spork upload apache

                          Staging Deploy
Tuesday, January 29, 13
jonlives/knife-flip


                          % knife node flip node.etsy.com testing
                          % knife role flip testRole testing




Tuesday, January 29, 13
% knife spork promote apache
  % git commit
  % git push
  % knife spork promote apache --remote


                          Production Deploy

Tuesday, January 29, 13
19:18:06 irccat | CHEF: Daniel Schauenberg
        promoted apache@0.0.2 to development
        https://github.etsycorp.com/gist/12345

        19:18:06 irccat | CHEF: Daniel Schauenberg
        promoted apache@0.0.2 to production
        https://github.etsycorp.com/gist/12346



Tuesday, January 29, 13
etsy/chef-handlers
   19:20:00 irccat | Chef run failed on test.etsy.com
   19:20:00 irccat | https://github.etsycorp.com/gist/
   12347

                          jgoulah/knife-lastrun
   % knife node lastrun test.etsy.com


Tuesday, January 29, 13
Tuesday, January 29, 13
Summary

                    • GitHub Enterprise, Dev VMs, shef as
                          development environment
                    • Chef Server and knife-spork as
                          Deployment System
                    • Monitoring, Notifications, Graphs

Tuesday, January 29, 13
• http://codeascraft.etsy.com/
                    • http://www.slideshare.net/jonlives/michelin-
                          starred-cooking-with-chef
                    • http://www.slideshare.net/mcdonnps/
                          lessons-from-etsy-avoiding-kitchen-
                          nightmares-chefconf-2012
                    • https://github.com/jonlives/knife-spork
                    • https://github.com/jonlives/knife-flip
                    • https://github.com/jgoulah/knife-lastrun
Tuesday, January 29, 13
Chef workflow at
                            Daniel Schauenberg
                          dschauenberg@etsy.com
                                 @mrtazz




Tuesday, January 29, 13

Etsy chef-workflow

  • 1.
    Chef workflow at Daniel Schauenberg dschauenberg@etsy.com @mrtazz Tuesday, January 29, 13
  • 2.
    Etsy Infrastructure • ~1000 nodes • ~30 dev/ops engineers making changes regularly • Open Source Chef server + GitHub Enterprise • Default environment setup (production, development, testing) Tuesday, January 29, 13
  • 3.
  • 4.
  • 5.
    % shef chef > recipe chef:recipe > echo off chef:recipe > include_recipe "apache" chef:recipe > run_chef Tuesday, January 29, 13
  • 6.
    % review -rjcowie --cc ops Tuesday, January 29, 13
  • 7.
    % knife sporkcheck apache % knife spork bump apache % git commit % git push % knife spork upload apache Staging Deploy Tuesday, January 29, 13
  • 8.
    jonlives/knife-flip % knife node flip node.etsy.com testing % knife role flip testRole testing Tuesday, January 29, 13
  • 9.
    % knife sporkpromote apache % git commit % git push % knife spork promote apache --remote Production Deploy Tuesday, January 29, 13
  • 10.
    19:18:06 irccat |CHEF: Daniel Schauenberg promoted apache@0.0.2 to development https://github.etsycorp.com/gist/12345 19:18:06 irccat | CHEF: Daniel Schauenberg promoted apache@0.0.2 to production https://github.etsycorp.com/gist/12346 Tuesday, January 29, 13
  • 11.
    etsy/chef-handlers 19:20:00 irccat | Chef run failed on test.etsy.com 19:20:00 irccat | https://github.etsycorp.com/gist/ 12347 jgoulah/knife-lastrun % knife node lastrun test.etsy.com Tuesday, January 29, 13
  • 12.
  • 13.
    Summary • GitHub Enterprise, Dev VMs, shef as development environment • Chef Server and knife-spork as Deployment System • Monitoring, Notifications, Graphs Tuesday, January 29, 13
  • 14.
    • http://codeascraft.etsy.com/ • http://www.slideshare.net/jonlives/michelin- starred-cooking-with-chef • http://www.slideshare.net/mcdonnps/ lessons-from-etsy-avoiding-kitchen- nightmares-chefconf-2012 • https://github.com/jonlives/knife-spork • https://github.com/jonlives/knife-flip • https://github.com/jgoulah/knife-lastrun Tuesday, January 29, 13
  • 15.
    Chef workflow at Daniel Schauenberg dschauenberg@etsy.com @mrtazz Tuesday, January 29, 13