Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Puppet at GitHub (PuppetCamp Raleigh 2013)
Search
Will Farrington
May 16, 2013
Technology
500
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Puppet at GitHub (PuppetCamp Raleigh 2013)
Will Farrington
May 16, 2013
More Decks by Will Farrington
See All by Will Farrington
test-queue makes your tests run fast
wfarr
0
490
Incident Response Done Right: From First Page to Postmortem
wfarr
0
600
Boxen: PuppetConf 2013
wfarr
6
920
Puppet at GitHub: PuppetConf 2013
wfarr
21
2.3k
Boxen: PuppetCamp SF 2013
wfarr
5
1.1k
Boxen: MWRC
wfarr
5
290
Boxen: PuppetCamp ATL
wfarr
0
340
BOXEN
wfarr
43
5.6k
Boxen-puppetconf
wfarr
13
2.2k
Other Decks in Technology
See All in Technology
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
140
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
150
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
230
AI時代の強いチームの作り方
yuukiyo
26
16k
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
300
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.3k
モダンフロントエンド 開発研修
recruitengineers
PRO
4
570
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
第3回しろおびセキュリティスポンサーセッション
log0417
0
160
ブラウザ研修 2026
recruitengineers
PRO
5
810
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
170
20分でわかるセキュアAPI
nwiizo
2
210
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
270
Navigating Weather and Climate Data
rabernat
0
460
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
460
Docker and Python
trallard
47
4.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
210
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
500
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
470
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
A designer walks into a library…
pauljervisheath
211
24k
Transcript
and other adventures in ChatOps Puppet at GitHub
@wfarr GitHub Operations Known Aliases: King of Kebabs The Computer
Guy Mr. RealTalk Probably a delinquent
The State of Puppet at GitHub
The State of Puppet at GitHub boxen/puppet-*
The State of Puppet at GitHub ~1 YEAR OLD
The State of Puppet at GitHub OPEN SOURCED 3
MONTHS AGO
The State of Puppet at GitHub ~180 PUBLIC MODULES
The State of Puppet at GitHub 2 EXTERNAL MAINTAINERS
@fromonesrc @JHaals
The State of Puppet at GitHub THE STACK
The State of Puppet at GitHub PUPPET 3.2
The State of Puppet at GitHub MASTER-LESS
The State of Puppet at GitHub RUBY 1.8.7
The State of Puppet at GitHub RUN MANUALLY
The State of Puppet at GitHub github/puppet
The State of Puppet at GitHub ~5 YEARS OLD
2010 2011 2012 2013
CODE COMMITS The State of Puppet at GitHub
CODE ADDITIONS The State of Puppet at GitHub
CODE DELETIONS The State of Puppet at GitHub
CONTRIBUTIONS (PAST YEAR) ~2k commits ~150 commits The State
of Puppet at GitHub
CONTRIBUTIONS (PAST YEAR) ~23% of all commits The State
of Puppet at GitHub
The State of Puppet at GitHub AN AVERAGE WEEK About
50 Pull Requests and 25 Issues comprising 300 commits across 24 authors
The State of Puppet at GitHub THE STACK
The State of Puppet at GitHub PUPPET 2.7.GITHUB
The State of Puppet at GitHub SINGLE PUPPETMASTER
The State of Puppet at GitHub RUBY 1.8.7
The State of Puppet at GitHub RUN VIA CRON JOB
The State of Puppet at GitHub PUPPETDB
The State of Puppet at GitHub CUSTOM NODE DEFINITIONS
How GitHub writes Puppet
How GitHub Writes Puppet PUPPETLABS/STDLIB
How GitHub Writes Puppet PARAMETER VALIDATION
How GitHub Writes Puppet class redis::server( $data_dir = '/var/lib/redis',
$manage_service = false, $package = 'redis-server' ) { validate_bool($manage_service) validate_absolute_path($data_dir) validate_re($package, '^redis2?-server$', "Redis::Server[${name}]: package must be either redis-server or redis2-server: $ {package}") }
How GitHub Writes Puppet DATA MUNGING
How GitHub Writes Puppet define ruby::version( $env = {}
) { $default_environment = { 'CC' => 'clang', 'CFLAGS' => '-O2' } $ruby_build_environment = merge($default_environment, $env) exec { "install ruby version ${name}": environment => join_keys_to_values($ruby_build_environment, '=') } }
How GitHub Writes Puppet RESOURCE HANDLING
How GitHub Writes Puppet class redis::server( $data_dir = '/var/lib/redis'
) { if ! defined_with_params(User[redis], { ensure => 'present' }) { user { 'redis': ensure => 'present', group => 'redis' } } }
How GitHub Writes Puppet $latest_tcs_version = "${::ruby::root}/versions/1.9.3-p231-tcs-github-1.0.30" $tcs_alias =
"${::ruby::root}/versions/1.9.3-p231-tcs-github" $desired_params = { 'ensure' => 'link', 'target' => $latest_tcs_version, 'force' => true } File <| title == $tcs_version |> { ensure => link, target => $latest_tcs_version, force => true } ensure_resource('file', $tcs_alias, $desired_params)
How GitHub Writes Puppet GITHUB::ROLE::*
How GitHub Writes Puppet NODE CONFIGURATION
node /^github-redis\d+[a-z]?-rs1-prd.iad.github.net$/ { class { 'github::role::redis': env => 'production', private_ipv4
=> $::ipaddress, } } How GitHub Writes Puppet
How GitHub Writes Puppet ROLE CONFIGURATION
class github::role::redis($env, $private_ipv4) { validate_re($env, '^(vagrant|staging|production)$') validate_re($private_ipv4, '^\d+\.\d+\.\d+\.\d+$') $monitor =
$env ? { 'production' => true, default => false } class { 'github::core': monitor => $monitor, private_address => $private_ipv4 ; 'redis::server': bind_address => $private_ipv4, monitor => $monitor ; } } How GitHub Writes Puppet
ABSTRACTION How GitHub Writes Puppet
class github::core($monitor) { include github::common_packages include github::staff class { 'github::ssh':
monitor => $monitor ; 'github::ipv6': ensure => absent ; } } How GitHub Writes Puppet
class github::ipv6($ensure = present) { if $::lsbdistcodename != 'squeeze' {
file { '/etc/modprobe.d/ipv6': ensure => $ensure, mode => '0444', source => 'puppet:///modules/github//etc/modprobe.d/ipv6', } } else { $value = $ensure ? { present => 0, default => 1 } sysctl { 'net.ipv6.conf.all.disable_ipv6': value => $value, } } } How GitHub Writes Puppet
AUGEAS How GitHub Writes Puppet
class redis::server($bind_address, $data_dir, $monitor, $port) { redis::config { 'dir': value
=> $data_dir, require => File[$data_dir]; 'bind': value => $bind_address; 'port': value => $port; 'daemonize': value => 'yes'; } } How GitHub Writes Puppet
define redis::config($value, $ensure = present) { validate_re($ensure, '^(present|absent)$') $changes =
$ensure ? { present => "set ${name} ${value}", default => "rm ${name}" } augeas { "Set Redis config '${name}' to '${value}'": changes => $changes, context => '/files/etc/redis/redis.conf', lens => 'Redis.lns', incl => '/etc/redis/redis.conf', require => File['/etc/redis/redis.conf'] } } How GitHub Writes Puppet
How GitHub Writes Puppet CODE SHARE
LIBRARIAN-PUPPET How GitHub Writes Puppet
HENSON How GitHub Writes Puppet
How GitHub deploys Puppet
KEEP IT CLEAN How GitHub Deploys Puppet
rodjek/puppet-lint How GitHub Deploys Puppet
KEEP IT GREEN How GitHub Deploys Puppet
rodjek/rspec-puppet How GitHub Deploys Puppet
tmm1/test-queue How GitHub Deploys Puppet
KEEP IT LEAN How GitHub Deploys Puppet
$ git commit -am "can't lint this" modules/github/manifests/role/redis.pp: syntax ok
modules/github/manifests/role/redis.pp - WARNING: => is not properly aligned on line 118 1 errors found, aborting commit. How GitHub Deploys Puppet
How GitHub Deploys Puppet
How GitHub Deploys Puppet
CHATOPS How GitHub Deploys Puppet
/puppet env worker #=> worker1.rs.github.com: production worker2.rs.github.com: production worker3.rs.github.com: production
worker4.rs.github.com: production worker5.rs.github.com: production worker6.rs.github.com: production How GitHub Deploys Puppet
/puppet run worker2 #=> Running puppet on worker2.rs.github.com/production How
GitHub Deploys Puppet
/puppet noop feature_branch worker2 #=> Running puppet on worker2.rs.github.com/feature_branch --noop
How GitHub Deploys Puppet
/puppet force feature_branch worker2 #=> Running puppet on worker2.rs.github.com/feature_branch
How GitHub Deploys Puppet
/puppet disable worker2 #=> Disabling puppet on worker2.rs.github.com How
GitHub Deploys Puppet
/puppet enable worker2 #=> Disabling puppet on worker2.rs.github.com How
GitHub Deploys Puppet
/puppet last_run worker2 How GitHub Deploys Puppet
/puppet certs #=> "wills-macbook-pro.local" (A4:5B:AC:B9:E1:85:8B:2B:0E:8B:62:F9:03:32:C9:03) How GitHub Deploys Puppet
The Future of Puppet at GitHub
boxen/puppet-* The Future of Puppet at GitHub
SHELL "REMEMBER TO RUN" SUPPORT The Future of Puppet at
GitHub
You haven't run Boxen in over a week. =( We
really recommend running Boxen regularly. It's way better that way! Do you want to run boxen now? (y/N) y # boxen Updating Boxen. ... The Future of Puppet at GitHub
OPT-OUT The Future of Puppet at GitHub
touch $HOME/.boxen-never-prompt-for-updates The Future of Puppet at GitHub
PUPPETMASTER SUPPORT The Future of Puppet at GitHub
OPT-IN ONLY The Future of Puppet at GitHub
HIERA SUPPORT The Future of Puppet at GitHub
"uncomfortunities" The Future of Puppet at GitHub
UBUNTU SUPPORT The Future of Puppet at GitHub
UBUNTU PRECISE The Future of Puppet at GitHub
github/puppet The Future of Puppet at GitHub
The Future of Puppet at GitHub RUBY 1.9.3
The Future of Puppet at GitHub PUPPET 3.X
The Future of Puppet at GitHub GPANEL: ENC
The Future of Puppet at GitHub lol censored
The Future of Puppet at GitHub MCOLLECTIVE
The Future of Puppet at GitHub REPLACING PARTS OF GITHUB/SHELL
The Future of Puppet at GitHub STRUCTURED DATA > SED/AWK
The Future of Puppet at GitHub HIERA
THANKS speakerdeck.com/wfarr/ puppet-at-github- puppetcamp-raleigh-2013