Puppet
51 Case Studies
A Puppet Case Study
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.
Kevin Paulisse
Site Reliability Engineer