The document discusses the state and future of Puppet at GitHub. It describes how GitHub has been using Puppet for over 5 years to manage over 600 nodes, open sourcing many Puppet modules. It also outlines best practices for writing, testing, and deploying Puppet code used at GitHub, including tools like Puppet Lint, RSpec Puppet, and continuous integration/deployment. The future of Puppet at GitHub includes upgrading to Puppet 3.x and Ruby 2.0, integrating more with PuppetDB and their GPanel configuration tool, and potentially using MCollective.
26. " The State of Puppet at GitHub
0
100
200
300
400
2012-08-25
2012-10-20
2012-12-15
2013-02-09
2013-04-06
2013-06-01
2013-07-27
commits on master per week, last 12 months
27. " The State of Puppet at GitHub
0
1000
2000
3000
4000
total commits by author past year
28. " The State of Puppet at GitHub
0
175
350
525
700
total commits by author past year, except ops
29. " The State of Puppet at GitHub
0
175
350
525
700
total commits by authors with >10 commits, past year, except ops
30. " The State of Puppet at GitHub
single puppetmaster
45. " The State of Puppet at GitHub
"Imagine Puppet Dashboard meets
Razor and went on a weekend trip to the
beach with the Heroku API and drank
epic amounts of blue drink"
46. " The State of Puppet at GitHub
aka we reinvented our own, smaller
version of Foreman
64. " The State of Puppet at GitHub
# /usr/local/sbin/fetch_gpanel_enc
fe1.rs.github.com
---
parameters:
gpanel_cabinet: D20-13
gpanel_enabled: true
gpanel_monitored: false
65. " The State of Puppet at GitHub
we never specify classes via the ENC
66. " The State of Puppet at GitHub
any variables we pass through
are prefixed with gpanel_
78. ( How GitHub Writes Puppet
if you aren't writing tests for
your puppet code before
running it on a server,
you are doing it wrong
79. ( How GitHub Writes Puppet
use whatever framework/library
80. ( How GitHub Writes Puppet
rspec-puppet just happens to be
a pretty good one
81. ( How GitHub Writes Puppet
put it in a pre-commit hook
82. ( How GitHub Writes Puppet
$ git commit -am "tests dont pass but whatever lol"
1) Expected redis::server would include class
"more_than_a_single_c_thread"
1 failures encountered, aborting commit.
83. ( How GitHub Writes Puppet
and then buy rodjek another beer
116. ) How GitHub Ships Puppet
202 employees
100% access to Puppet
100% trust
117. ) How GitHub Ships Puppet
the list of roles you'd never think would touch production puppet
webkit developer
core git developers
core ruby developers
svn developers
search developer
frontend designers
windows developers
mac developers
support
enterprise sales
118. ) How GitHub Ships Puppet
every puppet run happens in chat
119. ) How GitHub Ships Puppet
all puppet output goes to chat
120. ) How GitHub Ships Puppet
everyone can see everything
121. ) How GitHub Ships Puppet
everyone can do anything
122. ) How GitHub Ships Puppet
hands-on learning, by accident
123. ) How GitHub Ships Puppet
eliminate disruptive questions