Slide 1

Slide 1 text

@claco 1 Cookbook Versioning When Berkshelf Isn’t Enough ∞ Christopher H. Laco DevOps Engineer Rackspace

Slide 2

Slide 2 text

@claco 2

Slide 3

Slide 3 text

@claco 3

Slide 4

Slide 4 text

@claco 4

Slide 5

Slide 5 text

@claco 5

Slide 6

Slide 6 text

@claco 6 Libraries / Frameworks / Products / Distros Continuous Improvement / Deployment / Delivery Release Early / Release Often Risk Management Stable Long Term Releases Producer vs. Consumer Frictions

Slide 7

Slide 7 text

@claco 7 Master - High (Features, Improvements, Fixes) Stable/Havana - Medium (Improvements, Fixes) Stable/Grizzly - Low (Fixes Only) Risk Acceptance

Slide 8

Slide 8 text

@claco 8 25 Cookbooks* 3 Releases in 2014 14 Releases in 2013 2 Stable Branches - Folsom / Grizzly / Havana [RPC] Cookbook Release Statistics

Slide 9

Slide 9 text

@claco 9 20 Cookbook Dependencies Apache, RabbitMQ, MySQL, Apt, Yum, … 39 Releases in 2014 135 Releases in 2013 Single Stable Branch Dependency Release Statistics

Slide 10

Slide 10 text

@claco 10 apache2 apt aws build db erlang iptables logrotate memcached mysql ntp openssh openssl rabbitmq rsyslog runit selinux yum 1/1/13 2/11/13 3/24/13 5/5/13 6/15/13 7/27/13 9/6/13 10/18/13 11/28/13 1/9/14 2/19/14 4/2/14 rcbops

Slide 11

Slide 11 text

@claco 11 apache2 apt aws build db erlang iptables logrotate memcached mysql ntp openssh openssl rabbitmq rsyslog runit selinux yum 1/1/13 2/11/13 3/24/13 5/5/13 6/15/13 7/27/13 9/6/13 10/18/13 11/28/13 1/9/14 2/19/14 4/2/14 rcbops Havana Grizzly Folsom

Slide 12

Slide 12 text

@claco 12 Service Reload / Restart Changes Notify Immediately / Delayed Changes Pending COOK Fixes Major Version Changes (YUM Split) Intermediate Changes *25 Cookbooks vs. 1 Cookbook Risk Generators

Slide 13

Slide 13 text

@claco 13 apache2 apt aws build db erlang iptables logrotate memcached mysql ntp openssh openssl rabbitmq rsyslog runit selinux yum 1/1/13 2/11/13 3/24/13 5/5/13 6/15/13 7/27/13 9/6/13 10/18/13 11/28/13 1/9/14 2/19/14 4/2/14 rcbops Havana X Berkshelf Version Cook Fix Incompatibility 4.2.0 4.2.1 4.2.2

Slide 14

Slide 14 text

@claco 14 Good for reproducing dependencies Not for managing them granularly (Jenkins) Death by a thousand forks (Libraries) Life with a few forks (Packages / Backports) Reduce Risk Generators Berkshelf [and Bundler]

Slide 15

Slide 15 text

@claco 15 Fork Cookbook / Add Upstream Remote Create Integration Branch From Release Cherry Pick (Local & Upstream PRs) Point Berkshelf to Integration Branch Sleep At Night Berkshelforkinating

Slide 16

Slide 16 text

@claco 16 hub clone gmiranda23/ntp; cd ntp && hub fork hub branch integration v1.5.0 && hub checkout integration hub cherry-pick 9411f [integration d95e6eb] [COOK-4339] Disable MONLIST cookbook "ntp", git: "claco/ntp", branch: "d95e6eb" Berkshelforkinating

Slide 17

Slide 17 text

@claco 17 Fork Cookbook / Add Upstream Remote Create Integration Branch From Release Cherry Pick (Local & Upstream PRs) Point Submodules to Integration SHA Sleep At Night Submodulation

Slide 18

Slide 18 text

@claco 18 hub clone gmiranda23/ntp; cd ntp && hub fork hub branch integration v1.5.0 && hub checkout integration hub cherry-pick 9411f [integration d95e6eb] [COOK-4339] Disable MONLIST hub submodule add -b d95e6eb claco/ntp ntp Submodulation

Slide 19

Slide 19 text

@claco 19 Fork Cookbook / Add Upstream Remotes Create New Release Branch From Release Cherry Pick (Local & Upstream PRs) Scripted Point Berkshelf to New Version Sleep At Night Dockernating*

Slide 20

Slide 20 text

@claco 20 Dockernating* (Buildfile) cookbook "gmiranda23/ntp", version: "v1.5.0" changeset "9411f" # patch "COOK-4339.patch" ! ! $ berks build $ berks package

Slide 21

Slide 21 text

@claco 21 Thank You ∞ Christopher H. Laco DevOps Engineer Rackspace