Case Study: GitHub achieves a zero‑downtime Puppet 4 upgrade and reduced deployment risk with Puppet

A Puppet Case Study

Preview of the GitHub Case Study

Upgrading to Puppet 4 at GitHub

GitHub, which runs millions of repositories for over 21 million users, needed to upgrade its large, long-lived Puppet codebase from Puppet 3.x to Puppet 4 and migrate from legacy Puppet masters to Puppet Server without risking internal or external outages. The codebase had hundreds of thousands of lines across 100+ roles and contained many deprecated patterns, making a blind enablement of the future parser or a slow, host-by-host test deployment too risky and time‑consuming.

To solve this, GitHub developed and open‑sourced octocatalog‑diff, a CI-driven catalog‑difference tester that compiles catalogs using existing host facts for different branches, parsers, or Puppet versions and reports differences without touching production systems. This approach let developers find and fix deprecated constructs quickly, validate equivalence between old and new servers, run full-role checks in under four minutes, and complete the Puppet 4 and Puppet Server migration with no downtime and much lower deployment risk.


Open case study document...

GitHub

Kevin Paulisse

Site Reliability Engineer


Puppet

51 Case Studies