Puppet at GitHub - PuppetConf 2013
-
Upload
puppet-labs -
Category
Technology
-
view
2.842 -
download
2
description
Transcript of Puppet at GitHub - PuppetConf 2013
![Page 1: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/1.jpg)
Puppet at GitHub
![Page 2: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/2.jpg)
@wfa r rGitHub
Operations
Known Aliases:
King of Kebabs
The Chairman
Mr. Caremad !
![Page 3: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/3.jpg)
The State of Puppet at GitHub
"
![Page 4: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/4.jpg)
" The State of Puppet at GitHub
github/boxen
![Page 5: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/5.jpg)
" The State of Puppet at GitHub
~1.5 years old
![Page 6: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/6.jpg)
" The State of Puppet at GitHub
open-sourced ~7 months ago
![Page 7: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/7.jpg)
" The State of Puppet at GitHub
~240 open-source puppet modules
![Page 8: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/8.jpg)
" The State of Puppet at GitHub
puppet 3.latest
![Page 9: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/9.jpg)
" The State of Puppet at GitHub
supports ruby 1.8.7, 1.9.3, 2.0.0
![Page 10: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/10.jpg)
" The State of Puppet at GitHub
hiera
![Page 11: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/11.jpg)
" The State of Puppet at GitHub
OS X
![Page 12: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/12.jpg)
" The State of Puppet at GitHub
Linux support in-progress
![Page 13: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/13.jpg)
" The State of Puppet at GitHub
#tomorrow @ 2:20pm
![Page 14: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/14.jpg)
" The State of Puppet at GitHub
github/puppet
![Page 15: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/15.jpg)
" The State of Puppet at GitHub
$
![Page 16: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/16.jpg)
" The State of Puppet at GitHub
~5 years old
![Page 17: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/17.jpg)
" The State of Puppet at GitHub
0.24.x — 2.7.x
![Page 18: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/18.jpg)
" The State of Puppet at GitHub
121 modules
![Page 19: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/19.jpg)
" The State of Puppet at GitHub
~280k lines of code
![Page 20: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/20.jpg)
" The State of Puppet at GitHub
every single employee has commit access
![Page 21: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/21.jpg)
" The State of Puppet at GitHub
15.5k commits to master past 12 months
![Page 22: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/22.jpg)
" The State of Puppet at GitHub
by 86 contributors
![Page 23: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/23.jpg)
" The State of Puppet at GitHub
% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %
% %
![Page 24: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/24.jpg)
" The State of Puppet at GitHub
% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %
% %
42.5%
![Page 25: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/25.jpg)
" The State of Puppet at GitHub
% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %% % % % % % % % % % % % % % % % % % % %
% %
now with ops taken out
![Page 26: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/26.jpg)
" The State of Puppet at GitHub
0
100
200
300
40020
12-0
8-25
2012
-10-2
0
2012
-12-15
2013
-02-
09
2013
-04-
06
2013
-06-
01
2013
-07-
27
commits on master per week, last 12 months
![Page 27: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/27.jpg)
" The State of Puppet at GitHub
0
1000
2000
3000
4000total commits by author past year
![Page 28: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/28.jpg)
" The State of Puppet at GitHub
0
175
350
525
700total commits by author past year, except ops
![Page 29: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/29.jpg)
" The State of Puppet at GitHub
0
175
350
525
700total commits by authors with >10 commits, past year, except ops
![Page 30: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/30.jpg)
" The State of Puppet at GitHub
single puppetmaster
![Page 31: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/31.jpg)
" The State of Puppet at GitHub
rubygems
![Page 32: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/32.jpg)
" The State of Puppet at GitHub
ruby 1.8.7
![Page 33: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/33.jpg)
" The State of Puppet at GitHub
unicorn
![Page 34: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/34.jpg)
" The State of Puppet at GitHub
puppet 2.7.latest
![Page 35: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/35.jpg)
" The State of Puppet at GitHub
~600 nodes
![Page 36: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/36.jpg)
" The State of Puppet at GitHub
run hourly via crond
![Page 37: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/37.jpg)
" The State of Puppet at GitHub
puppetdb
![Page 38: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/38.jpg)
" The State of Puppet at GitHub
nagiosdb
![Page 39: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/39.jpg)
" The State of Puppet at GitHub
"yo puppetdb, gimme all your nagios::object::* resources so I can
update this nagios config"
![Page 40: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/40.jpg)
" The State of Puppet at GitHub
filtergendb
![Page 41: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/41.jpg)
" The State of Puppet at GitHub
"yo puppetdb, gimme all the filtergen::rule resources I would realize
so I can update this filtergen config"
![Page 42: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/42.jpg)
" The State of Puppet at GitHub
⚡ puppetdb ⚡
![Page 43: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/43.jpg)
" The State of Puppet at GitHub
as it turns out, an api call is faster than running puppet on a host
![Page 44: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/44.jpg)
" The State of Puppet at GitHub
gpanel
![Page 45: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/45.jpg)
" 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"
![Page 46: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/46.jpg)
" The State of Puppet at GitHub
aka we reinvented our own, smaller version of Foreman
![Page 47: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/47.jpg)
" The State of Puppet at GitHub
inventory
![Page 48: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/48.jpg)
" The State of Puppet at GitHub
![Page 49: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/49.jpg)
" The State of Puppet at GitHub
![Page 50: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/50.jpg)
" The State of Puppet at GitHub
app configuration
![Page 51: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/51.jpg)
" The State of Puppet at GitHub
![Page 52: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/52.jpg)
" The State of Puppet at GitHub
versioning of configuration values
![Page 53: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/53.jpg)
" The State of Puppet at GitHub
Create nil => 1Update 1 => 2Delete 2 => nil
![Page 54: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/54.jpg)
" The State of Puppet at GitHub
let's make credential rolling less awful
![Page 55: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/55.jpg)
" The State of Puppet at GitHub
provisioning
![Page 56: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/56.jpg)
" The State of Puppet at GitHub
provisioning is typically awful
![Page 57: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/57.jpg)
" The State of Puppet at GitHub
we sprinkled in some ChatOps
![Page 58: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/58.jpg)
" The State of Puppet at GitHub
![Page 59: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/59.jpg)
" The State of Puppet at GitHub
a little bit later...
![Page 60: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/60.jpg)
" The State of Puppet at GitHub
<MACHINE>
![Page 61: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/61.jpg)
" The State of Puppet at GitHub
enc
![Page 62: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/62.jpg)
" The State of Puppet at GitHub
we have the dumbest ENC out there
![Page 63: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/63.jpg)
" The State of Puppet at GitHub
⋆
![Page 64: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/64.jpg)
" 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
![Page 65: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/65.jpg)
" The State of Puppet at GitHub
we never specify classes via the ENC
![Page 66: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/66.jpg)
" The State of Puppet at GitHub
any variables we pass through are prefixed with gpanel_
![Page 67: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/67.jpg)
How GitHub writes Puppet
(
![Page 68: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/68.jpg)
( How GitHub Writes Puppet
rodjek/puppet-lint
![Page 69: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/69.jpg)
( How GitHub Writes Puppet
![Page 70: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/70.jpg)
( How GitHub Writes Puppet
if you aren't using puppet-lint to audit your puppet codebase,
you are doing it wrong
![Page 71: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/71.jpg)
( How GitHub Writes Puppet
puppet-lint enforces the Puppet Labs style guide
![Page 72: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/72.jpg)
( How GitHub Writes Puppet
puppet-lint can even fix a ton of linter errors for you
![Page 73: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/73.jpg)
( How GitHub Writes Puppet
put it in a pre-commit hook
![Page 74: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/74.jpg)
( How GitHub Writes Puppet
$ git commit -am "can't lint this"
modules/github/manifests/role/redis.pp: syntax okmodules/github/manifests/role/redis.pp - WARNING: => is not properly aligned on line 118
1 errors found, aborting commit.
![Page 75: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/75.jpg)
( How GitHub Writes Puppet
and then buy rodjek a beer
![Page 76: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/76.jpg)
( How GitHub Writes Puppet
rodjek/rspec-puppet
![Page 77: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/77.jpg)
( How GitHub Writes Puppet
![Page 78: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/78.jpg)
( 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
![Page 79: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/79.jpg)
( How GitHub Writes Puppet
use whatever framework/library
![Page 80: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/80.jpg)
( How GitHub Writes Puppet
rspec-puppet just happens to be a pretty good one
![Page 81: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/81.jpg)
( How GitHub Writes Puppet
put it in a pre-commit hook
![Page 82: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/82.jpg)
( 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.
![Page 83: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/83.jpg)
( How GitHub Writes Puppet
and then buy rodjek another beer
![Page 84: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/84.jpg)
( How GitHub Writes Puppet
node definitions
![Page 85: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/85.jpg)
( How GitHub Writes Puppet
we don't use an ENC to describe node classes
![Page 86: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/86.jpg)
( How GitHub Writes Puppet
node /^github-redis\d+/ { class { 'github::role::polling_redis': enabled => $::gpanel_enabled, environment => $::gpanel_environment, private_ipv4 => $::ipaddress, }}
![Page 87: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/87.jpg)
( How GitHub Writes Puppet
abstractions all the way down
![Page 88: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/88.jpg)
( How GitHub Writes Puppet
treat your site classes as cascades down to your dist classes
![Page 89: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/89.jpg)
( How GitHub Writes Puppet
class redis::server( # params) {
class { 'redis::config': ... } -> class { 'redis::package': ... } ~> class { 'redis::service': ... }
}
![Page 90: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/90.jpg)
( How GitHub Writes Puppet
class github::redis( # params) inherits github::defaults {
$memory = $environment ? { 'stg' => '2G', default => $half_memory_gb }
class { 'redis::server': ... }
}
![Page 91: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/91.jpg)
( How GitHub Writes Puppet
class github::role::polling_redis( # params) {
class { 'github::redis': # overrides based on specific node }
}
![Page 92: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/92.jpg)
( How GitHub Writes Puppet
augeas
![Page 93: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/93.jpg)
( How GitHub Writes Puppet
you know what's not awesome?
![Page 94: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/94.jpg)
( How GitHub Writes Puppet
an erb template that requires your class to take 52876423 parameters so you can configure every possible
value in my.cnf
![Page 95: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/95.jpg)
( How GitHub Writes Puppet
augeas { 'my.cnf/performance': context => '/files/etc/mysql/my.cnf/mysqld', changes => [ # automatic dump/restore 'set innodb_auto_lru_dump 18000',
# innodb "set innodb_buffer_pool_size ${innodb_buffer_pool_size}", 'set innodb_log_file_size 256M', 'set innodb_log_buffer_size 8M', 'set innodb_lazy_drop_table 1', ],require => Percona::Server[$::fqdn]
}
![Page 96: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/96.jpg)
( How GitHub Writes Puppet
it can seem complex and scary
![Page 97: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/97.jpg)
( How GitHub Writes Puppet
it is an amazing tool
![Page 98: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/98.jpg)
How GitHub ships Puppet
)
![Page 99: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/99.jpg)
) How GitHub Ships Puppet
continuous integration
![Page 100: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/100.jpg)
) How GitHub Ships Puppet
commit gets pushed
![Page 101: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/101.jpg)
) How GitHub Ships Puppet
jenkins runs the test suite
![Page 102: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/102.jpg)
) How GitHub Ships Puppet
status gets posted back to GitHub.com
![Page 103: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/103.jpg)
) How GitHub Ships Puppet
tmm1/test-queue
![Page 104: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/104.jpg)
) How GitHub Ships Puppet
![Page 105: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/105.jpg)
) How GitHub Ships Puppet
remembers how to better parallelize tests
![Page 106: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/106.jpg)
) How GitHub Ships Puppet
continuous deployment
![Page 107: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/107.jpg)
) How GitHub Ships Puppet
tests passed for commit, Hubot auto-deploys
![Page 108: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/108.jpg)
) How GitHub Ships Puppet
branch deploy everything
![Page 109: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/109.jpg)
) How GitHub Ships Puppet
a lot of shops have a few environments
![Page 110: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/110.jpg)
) How GitHub Ships Puppet
testing
staging
production
![Page 111: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/111.jpg)
) How GitHub Ships Puppet
currently we have 181 environments
![Page 112: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/112.jpg)
) How GitHub Ships Puppet
that's not the same as 181 nodesnot running production
![Page 113: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/113.jpg)
) How GitHub Ships Puppet
we only have 5 of those
![Page 114: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/114.jpg)
) How GitHub Ships Puppet
Hubot automatically merges the master branch before allowing any
branch to deploy
![Page 115: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/115.jpg)
) How GitHub Ships Puppet
ChatOps
![Page 116: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/116.jpg)
) How GitHub Ships Puppet
202 employees100% access to Puppet
100% trust
![Page 117: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/117.jpg)
) How GitHub Ships Puppet
the list of roles you'd never think would touch production puppet
webkit developercore git developers
core ruby developerssvn developers
search developerfrontend designers
windows developersmac developers
supportenterprise sales
![Page 118: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/118.jpg)
) How GitHub Ships Puppet
every puppet run happens in chat
![Page 119: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/119.jpg)
) How GitHub Ships Puppet
all puppet output goes to chat
![Page 120: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/120.jpg)
) How GitHub Ships Puppet
everyone can see everything
![Page 121: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/121.jpg)
) How GitHub Ships Puppet
everyone can do anything
![Page 122: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/122.jpg)
) How GitHub Ships Puppet
hands-on learning, by accident
![Page 123: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/123.jpg)
) How GitHub Ships Puppet
eliminate disruptive questions
![Page 124: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/124.jpg)
The Future of Puppet at GitHub
*
![Page 125: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/125.jpg)
* The Future of Puppet at GitHub
puppet 3.x
![Page 126: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/126.jpg)
* The Future of Puppet at GitHub
upgrading a large, old codebase from 2.7 to 3 is really painful
![Page 127: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/127.jpg)
* The Future of Puppet at GitHub
we've been talking about it for a year
![Page 128: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/128.jpg)
* The Future of Puppet at GitHub
we're still trying to push forward, but...
![Page 129: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/129.jpg)
* The Future of Puppet at GitHub
helping maintain security fixes for 2.7
![Page 130: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/130.jpg)
* The Future of Puppet at GitHub
goal is to be on 3.2 by end of year
![Page 131: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/131.jpg)
* The Future of Puppet at GitHub
ruby 2.0
![Page 132: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/132.jpg)
* The Future of Puppet at GitHub
moar faster rubby
![Page 133: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/133.jpg)
* The Future of Puppet at GitHub
we get this for free when we move to 3
![Page 134: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/134.jpg)
* The Future of Puppet at GitHub
mcollective
![Page 135: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/135.jpg)
* The Future of Puppet at GitHub
aka the story of github/shell and the wonders of ssh in a for-loop
![Page 136: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/136.jpg)
* The Future of Puppet at GitHub
there are a lot of cool things about mcollective
![Page 137: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/137.jpg)
* The Future of Puppet at GitHub
I think it will be a part of our stack in the future
![Page 138: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/138.jpg)
* The Future of Puppet at GitHub
but you can still go pretty damn far with bash and ssh
![Page 139: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/139.jpg)
* The Future of Puppet at GitHub
even more puppetdb tooling
![Page 140: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/140.jpg)
* The Future of Puppet at GitHub
waiting for multiple runs to converge exported resources is painful
![Page 141: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/141.jpg)
* The Future of Puppet at GitHub
use the puppetdb API to skip all that
![Page 142: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/142.jpg)
* The Future of Puppet at GitHub
even more gpanel integration
![Page 143: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/143.jpg)
* The Future of Puppet at GitHub
"databags"
![Page 144: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/144.jpg)
* The Future of Puppet at GitHub
"node search"
![Page 145: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/145.jpg)
* The Future of Puppet at GitHub
steal good ideas from other tools
![Page 146: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/146.jpg)
closing thoughts
![Page 147: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/147.jpg)
"all software is terrible"
— anyone who's worked with software long enough
![Page 148: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/148.jpg)
"no software is better than no software"— rtomayko
![Page 149: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/149.jpg)
the plumbing doesn't matter when all you care about is the porcelain
![Page 150: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/150.jpg)
write some damned good porcelain
![Page 151: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/151.jpg)
![Page 152: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/152.jpg)
THIS IS RODJEK
![Page 153: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/153.jpg)
HE'S NORMALLY NOT THIS BLURRY
![Page 154: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/154.jpg)
HE IS ALSO NOT MY BROTHER, BUT YOU REALLY SHOULD BUY
HIM A BEER
![Page 155: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/155.jpg)
YOU SHOULD BUY THIS MAN A LOT OF BEER
![Page 156: Puppet at GitHub - PuppetConf 2013](https://reader033.fdocuments.net/reader033/viewer/2022052618/554f3d47b4c905cd048b51ec/html5/thumbnails/156.jpg)
THANKS
https://speakerdeck.com/wfarr/
puppet-at-github-puppetconf-2013
!