Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cookbook Versioning: When Berkshelf Isn't Enough

Cookbook Versioning: When Berkshelf Isn't Enough

Chris Laco

April 17, 2014
Tweet

More Decks by Chris Laco

Other Decks in Technology

Transcript

  1. @claco 6 Libraries / Frameworks / Products / Distros Continuous

    Improvement / Deployment / Delivery Release Early / Release Often Risk Management Stable Long Term Releases Producer vs. Consumer Frictions
  2. @claco 7 Master - High (Features, Improvements, Fixes) Stable/Havana -

    Medium (Improvements, Fixes) Stable/Grizzly - Low (Fixes Only) Risk Acceptance
  3. @claco 8 25 Cookbooks* 3 Releases in 2014 14 Releases

    in 2013 2 Stable Branches - Folsom / Grizzly / Havana [RPC] Cookbook Release Statistics
  4. @claco 9 20 Cookbook Dependencies Apache, RabbitMQ, MySQL, Apt, Yum,

    … 39 Releases in 2014 135 Releases in 2013 Single Stable Branch Dependency Release Statistics
  5. @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
  6. @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
  7. @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
  8. @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
  9. @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]
  10. @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
  11. @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
  12. @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
  13. @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
  14. @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*