SlideShare a Scribd company logo
Puppet at GitHub
@wfarr
GitHub
Operations
Known Aliases:
King of Kebabs
The Chairman
Mr. Caremad !
The State of Puppet at GitHub
"
" The State of Puppet at GitHub
github/boxen
" The State of Puppet at GitHub
~1.5 years old
" The State of Puppet at GitHub
open-sourced ~7 months ago
" The State of Puppet at GitHub
~240 open-source puppet modules
" The State of Puppet at GitHub
puppet 3.latest
" The State of Puppet at GitHub
supports ruby 1.8.7, 1.9.3, 2.0.0
" The State of Puppet at GitHub
hiera
" The State of Puppet at GitHub
OS X
" The State of Puppet at GitHub
Linux support in-progress
" The State of Puppet at GitHub
#
tomorrow @ 2:20pm
" The State of Puppet at GitHub
github/puppet
" The State of Puppet at GitHub
$
" The State of Puppet at GitHub
~5 years old
" The State of Puppet at GitHub
0.24.x — 2.7.x
" The State of Puppet at GitHub
121 modules
" The State of Puppet at GitHub
~280k lines of code
" The State of Puppet at GitHub
every single employee has commit access
" The State of Puppet at GitHub
15.5k commits to master past 12 months
" The State of Puppet at GitHub
by 86 contributors
" The State of Puppet at GitHub
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% %
" The State of Puppet at GitHub
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% %
42.5%
" The State of Puppet at GitHub
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % %
% %
now with ops taken out
" 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
" The State of Puppet at GitHub
0
1000
2000
3000
4000
total commits by author past year
" The State of Puppet at GitHub
0
175
350
525
700
total commits by author past year, except ops
" The State of Puppet at GitHub
0
175
350
525
700
total commits by authors with >10 commits, past year, except ops
" The State of Puppet at GitHub
single puppetmaster
" The State of Puppet at GitHub
rubygems
" The State of Puppet at GitHub
ruby 1.8.7
" The State of Puppet at GitHub
unicorn
" The State of Puppet at GitHub
puppet 2.7.latest
" The State of Puppet at GitHub
~600 nodes
" The State of Puppet at GitHub
run hourly via crond
" The State of Puppet at GitHub
puppetdb
" The State of Puppet at GitHub
nagiosdb
" The State of Puppet at GitHub
"yo puppetdb, gimme all your
nagios::object::* resources so I can
update this nagios config"
" The State of Puppet at GitHub
filtergendb
" The State of Puppet at GitHub
"yo puppetdb, gimme all the
filtergen::rule resources I would realize
so I can update this filtergen config"
" The State of Puppet at GitHub
⚡ puppetdb ⚡
" The State of Puppet at GitHub
as it turns out, an api call is faster
than running puppet on a host
" The State of Puppet at GitHub
gpanel
" 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"
" The State of Puppet at GitHub
aka we reinvented our own, smaller
version of Foreman
" The State of Puppet at GitHub
inventory
" The State of Puppet at GitHub
" The State of Puppet at GitHub
" The State of Puppet at GitHub
app configuration
" The State of Puppet at GitHub
" The State of Puppet at GitHub
versioning of configuration values
" The State of Puppet at GitHub
Create nil => 1
Update 1 => 2
Delete 2 => nil
" The State of Puppet at GitHub
let's make credential rolling less awful
" The State of Puppet at GitHub
provisioning
" The State of Puppet at GitHub
provisioning is typically awful
" The State of Puppet at GitHub
we sprinkled in some ChatOps
" The State of Puppet at GitHub
" The State of Puppet at GitHub
a little bit later...
" The State of Puppet at GitHub
<MACHINE>
" The State of Puppet at GitHub
enc
" The State of Puppet at GitHub
we have the dumbest ENC out there
" The State of Puppet at GitHub
⋆
" 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
" The State of Puppet at GitHub
we never specify classes via the ENC
" The State of Puppet at GitHub
any variables we pass through
are prefixed with gpanel_
How GitHub writes Puppet
(
( How GitHub Writes Puppet
rodjek/puppet-lint
( How GitHub Writes Puppet
( How GitHub Writes Puppet
if you aren't using puppet-lint
to audit your puppet codebase,
you are doing it wrong
( How GitHub Writes Puppet
puppet-lint enforces the
Puppet Labs style guide
( How GitHub Writes Puppet
puppet-lint can even fix a ton
of linter errors for you
( How GitHub Writes Puppet
put it in a pre-commit hook
( How GitHub Writes 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 Writes Puppet
and then buy rodjek a beer
( How GitHub Writes Puppet
rodjek/rspec-puppet
( How GitHub Writes Puppet
( 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
( How GitHub Writes Puppet
use whatever framework/library
( How GitHub Writes Puppet
rspec-puppet just happens to be
a pretty good one
( How GitHub Writes Puppet
put it in a pre-commit hook
( 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.
( How GitHub Writes Puppet
and then buy rodjek another beer
( How GitHub Writes Puppet
node definitions
( How GitHub Writes Puppet
we don't use an ENC to describe
node classes
( How GitHub Writes Puppet
node /^github-redisd+/ {
class { 'github::role::polling_redis':
enabled => $::gpanel_enabled,
environment => $::gpanel_environment,
private_ipv4 => $::ipaddress,
}
}
( How GitHub Writes Puppet
abstractions all the way down
( How GitHub Writes Puppet
treat your site classes as cascades
down to your dist classes
( How GitHub Writes Puppet
class redis::server(
# params
) {
class { 'redis::config': ... }
-> class { 'redis::package': ... }
~> class { 'redis::service': ... }
}
( How GitHub Writes Puppet
class github::redis(
# params
) inherits github::defaults {
$memory = $environment ? {
'stg' => '2G',
default => $half_memory_gb
}
class { 'redis::server': ... }
}
( How GitHub Writes Puppet
class github::role::polling_redis(
# params
) {
class { 'github::redis':
# overrides based on specific node
}
}
( How GitHub Writes Puppet
augeas
( How GitHub Writes Puppet
you know what's not awesome?
( 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
( 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]
}
( How GitHub Writes Puppet
it can seem complex and scary
( How GitHub Writes Puppet
it is an amazing tool
How GitHub ships Puppet
)
) How GitHub Ships Puppet
continuous integration
) How GitHub Ships Puppet
commit gets pushed
) How GitHub Ships Puppet
jenkins runs the test suite
) How GitHub Ships Puppet
status gets posted back to GitHub.com
) How GitHub Ships Puppet
tmm1/test-queue
) How GitHub Ships Puppet
) How GitHub Ships Puppet
remembers how to better parallelize tests
) How GitHub Ships Puppet
continuous deployment
) How GitHub Ships Puppet
tests passed for commit, Hubot auto-deploys
) How GitHub Ships Puppet
branch deploy everything
) How GitHub Ships Puppet
a lot of shops have a few environments
) How GitHub Ships Puppet
testing
staging
production
) How GitHub Ships Puppet
currently we have 181 environments
) How GitHub Ships Puppet
that's not the same as 181 nodes
not running production
) How GitHub Ships Puppet
we only have 5 of those
) How GitHub Ships Puppet
Hubot automatically merges the
master branch before allowing any
branch to deploy
) How GitHub Ships Puppet
ChatOps
) How GitHub Ships Puppet
202 employees
100% access to Puppet
100% trust
) 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
) How GitHub Ships Puppet
every puppet run happens in chat
) How GitHub Ships Puppet
all puppet output goes to chat
) How GitHub Ships Puppet
everyone can see everything
) How GitHub Ships Puppet
everyone can do anything
) How GitHub Ships Puppet
hands-on learning, by accident
) How GitHub Ships Puppet
eliminate disruptive questions
The Future of Puppet at GitHub
*
* The Future of Puppet at GitHub
puppet 3.x
* The Future of Puppet at GitHub
upgrading a large, old codebase
from 2.7 to 3 is really painful
* The Future of Puppet at GitHub
we've been talking about it for a year
* The Future of Puppet at GitHub
we're still trying to push forward, but...
* The Future of Puppet at GitHub
helping maintain security fixes for 2.7
* The Future of Puppet at GitHub
goal is to be on 3.2 by end of year
* The Future of Puppet at GitHub
ruby 2.0
* The Future of Puppet at GitHub
moar faster rubby
* The Future of Puppet at GitHub
we get this for free when we move to 3
* The Future of Puppet at GitHub
mcollective
* The Future of Puppet at GitHub
aka the story of github/shell and the
wonders of ssh in a for-loop
* The Future of Puppet at GitHub
there are a lot of cool things about
mcollective
* The Future of Puppet at GitHub
I think it will be a part of our stack in
the future
* The Future of Puppet at GitHub
but you can still go pretty damn far
with bash and ssh
* The Future of Puppet at GitHub
even more puppetdb tooling
* The Future of Puppet at GitHub
waiting for multiple runs to converge
exported resources is painful
* The Future of Puppet at GitHub
use the puppetdb API to skip all that
* The Future of Puppet at GitHub
even more gpanel integration
* The Future of Puppet at GitHub
"databags"
* The Future of Puppet at GitHub
"node search"
* The Future of Puppet at GitHub
steal good ideas from other tools
closing thoughts
"all software is terrible"
— anyone who's worked with software long enough
"no software is better than no software"
— rtomayko
the plumbing doesn't matter when all you
care about is the porcelain
write some damned good porcelain
THIS IS RODJEK
HE'S NORMALLY
NOT THIS BLURRY
HE IS ALSO NOT MY BROTHER,
BUT YOU REALLY SHOULD BUY
HIM A BEER
YOU SHOULD BUY THIS
MAN A LOT OF BEER
THANKS
https://speakerdeck.com/wfarr/
puppet-at-github-puppetconf-2013
!

More Related Content

What's hot

Git & GitHub WorkShop
Git & GitHub WorkShopGit & GitHub WorkShop
Git & GitHub WorkShop
SheilaJimenezMorejon
 
Working with Git
Working with GitWorking with Git
Working with Git
Pete Nicholls
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
Bo-Yi Wu
 
Rest, sockets em golang
Rest, sockets em golangRest, sockets em golang
Rest, sockets em golang
jefferson Otoni Lima
 
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
GoogleDeveloperStude4
 
Build microservice with gRPC in golang
Build microservice with gRPC in golangBuild microservice with gRPC in golang
Build microservice with gRPC in golang
Ting-Li Chou
 
Git - a powerful version control tool
Git - a powerful version control toolGit - a powerful version control tool
Git - a powerful version control tool
Kuo-Le Mei
 
Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...
SlideTeam
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
SeongJae Park
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
Sven Peters
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
KAI CHU CHUNG
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
Chris Johnson
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
Sébastien Saunier
 
Git Real
Git RealGit Real
Git Real
Gong Haibing
 
Git 101 tutorial presentation
Git 101 tutorial presentationGit 101 tutorial presentation
Git 101 tutorial presentation
Terry Wang
 
用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構
Bo-Yi Wu
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
Javier Lafora Rey
 
Git the Docs: Learning Git in a safe space
Git the Docs: Learning Git in a safe spaceGit the Docs: Learning Git in a safe space
Git the Docs: Learning Git in a safe space
Becky Todd
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyCrafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in Ruby
Nikhil Mungel
 

What's hot (20)

Git & GitHub WorkShop
Git & GitHub WorkShopGit & GitHub WorkShop
Git & GitHub WorkShop
 
Working with Git
Working with GitWorking with Git
Working with Git
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
 
Rest, sockets em golang
Rest, sockets em golangRest, sockets em golang
Rest, sockets em golang
 
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
 
Build microservice with gRPC in golang
Build microservice with gRPC in golangBuild microservice with gRPC in golang
Build microservice with gRPC in golang
 
Git - a powerful version control tool
Git - a powerful version control toolGit - a powerful version control tool
Git - a powerful version control tool
 
Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...
 
Git inter-snapshot public
Git  inter-snapshot publicGit  inter-snapshot public
Git inter-snapshot public
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
 
Git Real
Git RealGit Real
Git Real
 
Git 101 tutorial presentation
Git 101 tutorial presentationGit 101 tutorial presentation
Git 101 tutorial presentation
 
用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構用 Go 語言打造多台機器 Scale 架構
用 Go 語言打造多台機器 Scale 架構
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
 
Git the Docs: Learning Git in a safe space
Git the Docs: Learning Git in a safe spaceGit the Docs: Learning Git in a safe space
Git the Docs: Learning Git in a safe space
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyCrafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in Ruby
 

Viewers also liked

Gitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de BranchesGitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de Branches
Javier Alvarez
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Boss
tmacwilliam
 
Community live #1 - Gitflow Workflow
Community live #1 - Gitflow WorkflowCommunity live #1 - Gitflow Workflow
Community live #1 - Gitflow Workflow
Liora Milbaum
 
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Puppet
 
Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)
Dennis Doomen
 
SemVer, the whole story
SemVer, the whole storySemVer, the whole story
SemVer, the whole story
JakeGinnivan
 
Pubmi gitflow
Pubmi gitflowPubmi gitflow
Pubmi gitflow
Simone Gentili
 
Semantic Versioning Lightning Talk
Semantic Versioning Lightning TalkSemantic Versioning Lightning Talk
Semantic Versioning Lightning Talk
Aaron Blythe
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
Bartosz Kosarzycki
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
HubSpot
 
MAPEH (ARTS) Grade 8-NARRA, Wayang Kulit
MAPEH (ARTS) Grade 8-NARRA, Wayang KulitMAPEH (ARTS) Grade 8-NARRA, Wayang Kulit
MAPEH (ARTS) Grade 8-NARRA, Wayang Kulit
Angelica Rose Manzano
 
Grade 8 Music and Arts Module
Grade 8 Music and Arts ModuleGrade 8 Music and Arts Module
Grade 8 Music and Arts Module
Andrew Cabugason
 

Viewers also liked (12)

Gitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de BranchesGitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de Branches
 
Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Boss
 
Community live #1 - Gitflow Workflow
Community live #1 - Gitflow WorkflowCommunity live #1 - Gitflow Workflow
Community live #1 - Gitflow Workflow
 
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
 
Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)
 
SemVer, the whole story
SemVer, the whole storySemVer, the whole story
SemVer, the whole story
 
Pubmi gitflow
Pubmi gitflowPubmi gitflow
Pubmi gitflow
 
Semantic Versioning Lightning Talk
Semantic Versioning Lightning TalkSemantic Versioning Lightning Talk
Semantic Versioning Lightning Talk
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
MAPEH (ARTS) Grade 8-NARRA, Wayang Kulit
MAPEH (ARTS) Grade 8-NARRA, Wayang KulitMAPEH (ARTS) Grade 8-NARRA, Wayang Kulit
MAPEH (ARTS) Grade 8-NARRA, Wayang Kulit
 
Grade 8 Music and Arts Module
Grade 8 Music and Arts ModuleGrade 8 Music and Arts Module
Grade 8 Music and Arts Module
 

Similar to Puppet at GitHub - PuppetConf 2013

Puppet at GitHub
Puppet at GitHubPuppet at GitHub
Puppet at GitHub
Puppet
 
2017年12月 linux kernel
2017年12月 linux kernel2017年12月 linux kernel
2017年12月 linux kernel
Satomi Tsujita
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Rick Umali
 
Puppet at GitHub / ChatOps
Puppet at GitHub / ChatOpsPuppet at GitHub / ChatOps
Puppet at GitHub / ChatOps
Puppet
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
Nick Quaranto
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for Artists
David Newbury
 
Tdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema RubyTdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema Ruby
Fabio Akita
 
Modern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettextModern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettext
Alexander Mostovenko
 
Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010
Matt Gauger
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version control
Becky Todd
 
Github basics
Github basicsGithub basics
Github basics
Radoslav Georgiev
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
Mikko Koivunalho
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
Ken Collins
 
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of LaptopsBoxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
Puppet
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it AgainGit Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Lemi Orhan Ergin
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
Victor Wong
 
Hello git
Hello git Hello git
Hello git
Josh Dvir
 
Jedi Mind Tricks in Git
Jedi Mind Tricks in GitJedi Mind Tricks in Git
Jedi Mind Tricks in Git
Johan Abildskov
 
Jedi Mind Tricks for Git
Jedi Mind Tricks for GitJedi Mind Tricks for Git
Jedi Mind Tricks for Git
Jan Krag
 
Git session day 2
Git session day 2Git session day 2
Git session day 2
Mosaab Ehab
 

Similar to Puppet at GitHub - PuppetConf 2013 (20)

Puppet at GitHub
Puppet at GitHubPuppet at GitHub
Puppet at GitHub
 
2017年12月 linux kernel
2017年12月 linux kernel2017年12月 linux kernel
2017年12月 linux kernel
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Puppet at GitHub / ChatOps
Puppet at GitHub / ChatOpsPuppet at GitHub / ChatOps
Puppet at GitHub / ChatOps
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for Artists
 
Tdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema RubyTdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema Ruby
 
Modern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettextModern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettext
 
Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version control
 
Github basics
Github basicsGithub basics
Github basics
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
 
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of LaptopsBoxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it AgainGit Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it Again
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
 
Hello git
Hello git Hello git
Hello git
 
Jedi Mind Tricks in Git
Jedi Mind Tricks in GitJedi Mind Tricks in Git
Jedi Mind Tricks in Git
 
Jedi Mind Tricks for Git
Jedi Mind Tricks for GitJedi Mind Tricks for Git
Jedi Mind Tricks for Git
 
Git session day 2
Git session day 2Git session day 2
Git session day 2
 

More from Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
Puppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
Puppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
Puppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
Puppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
Puppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
Puppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
Puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
Puppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
Puppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
Puppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
Puppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
Puppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
Puppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
Puppet
 

More from Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Recently uploaded

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 

Recently uploaded (20)

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 

Puppet at GitHub - PuppetConf 2013

  • 2. @wfarr GitHub Operations Known Aliases: King of Kebabs The Chairman Mr. Caremad !
  • 3. The State of Puppet at GitHub "
  • 4. " The State of Puppet at GitHub github/boxen
  • 5. " The State of Puppet at GitHub ~1.5 years old
  • 6. " The State of Puppet at GitHub open-sourced ~7 months ago
  • 7. " The State of Puppet at GitHub ~240 open-source puppet modules
  • 8. " The State of Puppet at GitHub puppet 3.latest
  • 9. " The State of Puppet at GitHub supports ruby 1.8.7, 1.9.3, 2.0.0
  • 10. " The State of Puppet at GitHub hiera
  • 11. " The State of Puppet at GitHub OS X
  • 12. " The State of Puppet at GitHub Linux support in-progress
  • 13. " The State of Puppet at GitHub # tomorrow @ 2:20pm
  • 14. " The State of Puppet at GitHub github/puppet
  • 15. " The State of Puppet at GitHub $
  • 16. " The State of Puppet at GitHub ~5 years old
  • 17. " The State of Puppet at GitHub 0.24.x — 2.7.x
  • 18. " The State of Puppet at GitHub 121 modules
  • 19. " The State of Puppet at GitHub ~280k lines of code
  • 20. " The State of Puppet at GitHub every single employee has commit access
  • 21. " The State of Puppet at GitHub 15.5k commits to master past 12 months
  • 22. " The State of Puppet at GitHub by 86 contributors
  • 23. " The State of Puppet at GitHub % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
  • 24. " The State of Puppet at GitHub % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 42.5%
  • 25. " The State of Puppet at GitHub % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % now with ops taken out
  • 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
  • 31. " The State of Puppet at GitHub rubygems
  • 32. " The State of Puppet at GitHub ruby 1.8.7
  • 33. " The State of Puppet at GitHub unicorn
  • 34. " The State of Puppet at GitHub puppet 2.7.latest
  • 35. " The State of Puppet at GitHub ~600 nodes
  • 36. " The State of Puppet at GitHub run hourly via crond
  • 37. " The State of Puppet at GitHub puppetdb
  • 38. " The State of Puppet at GitHub nagiosdb
  • 39. " The State of Puppet at GitHub "yo puppetdb, gimme all your nagios::object::* resources so I can update this nagios config"
  • 40. " The State of Puppet at GitHub filtergendb
  • 41. " The State of Puppet at GitHub "yo puppetdb, gimme all the filtergen::rule resources I would realize so I can update this filtergen config"
  • 42. " The State of Puppet at GitHub ⚡ puppetdb ⚡
  • 43. " The State of Puppet at GitHub as it turns out, an api call is faster than running puppet on a host
  • 44. " The State of Puppet at GitHub gpanel
  • 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
  • 47. " The State of Puppet at GitHub inventory
  • 48. " The State of Puppet at GitHub
  • 49. " The State of Puppet at GitHub
  • 50. " The State of Puppet at GitHub app configuration
  • 51. " The State of Puppet at GitHub
  • 52. " The State of Puppet at GitHub versioning of configuration values
  • 53. " The State of Puppet at GitHub Create nil => 1 Update 1 => 2 Delete 2 => nil
  • 54. " The State of Puppet at GitHub let's make credential rolling less awful
  • 55. " The State of Puppet at GitHub provisioning
  • 56. " The State of Puppet at GitHub provisioning is typically awful
  • 57. " The State of Puppet at GitHub we sprinkled in some ChatOps
  • 58. " The State of Puppet at GitHub
  • 59. " The State of Puppet at GitHub a little bit later...
  • 60. " The State of Puppet at GitHub <MACHINE>
  • 61. " The State of Puppet at GitHub enc
  • 62. " The State of Puppet at GitHub we have the dumbest ENC out there
  • 63. " The State of Puppet at GitHub ⋆
  • 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_
  • 67. How GitHub writes Puppet (
  • 68. ( How GitHub Writes Puppet rodjek/puppet-lint
  • 69. ( How GitHub Writes Puppet
  • 70. ( How GitHub Writes Puppet if you aren't using puppet-lint to audit your puppet codebase, you are doing it wrong
  • 71. ( How GitHub Writes Puppet puppet-lint enforces the Puppet Labs style guide
  • 72. ( How GitHub Writes Puppet puppet-lint can even fix a ton of linter errors for you
  • 73. ( How GitHub Writes Puppet put it in a pre-commit hook
  • 74. ( How GitHub Writes 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.
  • 75. ( How GitHub Writes Puppet and then buy rodjek a beer
  • 76. ( How GitHub Writes Puppet rodjek/rspec-puppet
  • 77. ( How GitHub Writes Puppet
  • 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
  • 84. ( How GitHub Writes Puppet node definitions
  • 85. ( How GitHub Writes Puppet we don't use an ENC to describe node classes
  • 86. ( How GitHub Writes Puppet node /^github-redisd+/ { class { 'github::role::polling_redis': enabled => $::gpanel_enabled, environment => $::gpanel_environment, private_ipv4 => $::ipaddress, } }
  • 87. ( How GitHub Writes Puppet abstractions all the way down
  • 88. ( How GitHub Writes Puppet treat your site classes as cascades down to your dist classes
  • 89. ( How GitHub Writes Puppet class redis::server( # params ) { class { 'redis::config': ... } -> class { 'redis::package': ... } ~> class { 'redis::service': ... } }
  • 90. ( How GitHub Writes Puppet class github::redis( # params ) inherits github::defaults { $memory = $environment ? { 'stg' => '2G', default => $half_memory_gb } class { 'redis::server': ... } }
  • 91. ( How GitHub Writes Puppet class github::role::polling_redis( # params ) { class { 'github::redis': # overrides based on specific node } }
  • 92. ( How GitHub Writes Puppet augeas
  • 93. ( How GitHub Writes Puppet you know what's not awesome?
  • 94. ( 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
  • 95. ( 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] }
  • 96. ( How GitHub Writes Puppet it can seem complex and scary
  • 97. ( How GitHub Writes Puppet it is an amazing tool
  • 98. How GitHub ships Puppet )
  • 99. ) How GitHub Ships Puppet continuous integration
  • 100. ) How GitHub Ships Puppet commit gets pushed
  • 101. ) How GitHub Ships Puppet jenkins runs the test suite
  • 102. ) How GitHub Ships Puppet status gets posted back to GitHub.com
  • 103. ) How GitHub Ships Puppet tmm1/test-queue
  • 104. ) How GitHub Ships Puppet
  • 105. ) How GitHub Ships Puppet remembers how to better parallelize tests
  • 106. ) How GitHub Ships Puppet continuous deployment
  • 107. ) How GitHub Ships Puppet tests passed for commit, Hubot auto-deploys
  • 108. ) How GitHub Ships Puppet branch deploy everything
  • 109. ) How GitHub Ships Puppet a lot of shops have a few environments
  • 110. ) How GitHub Ships Puppet testing staging production
  • 111. ) How GitHub Ships Puppet currently we have 181 environments
  • 112. ) How GitHub Ships Puppet that's not the same as 181 nodes not running production
  • 113. ) How GitHub Ships Puppet we only have 5 of those
  • 114. ) How GitHub Ships Puppet Hubot automatically merges the master branch before allowing any branch to deploy
  • 115. ) How GitHub Ships Puppet ChatOps
  • 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
  • 124. The Future of Puppet at GitHub *
  • 125. * The Future of Puppet at GitHub puppet 3.x
  • 126. * The Future of Puppet at GitHub upgrading a large, old codebase from 2.7 to 3 is really painful
  • 127. * The Future of Puppet at GitHub we've been talking about it for a year
  • 128. * The Future of Puppet at GitHub we're still trying to push forward, but...
  • 129. * The Future of Puppet at GitHub helping maintain security fixes for 2.7
  • 130. * The Future of Puppet at GitHub goal is to be on 3.2 by end of year
  • 131. * The Future of Puppet at GitHub ruby 2.0
  • 132. * The Future of Puppet at GitHub moar faster rubby
  • 133. * The Future of Puppet at GitHub we get this for free when we move to 3
  • 134. * The Future of Puppet at GitHub mcollective
  • 135. * The Future of Puppet at GitHub aka the story of github/shell and the wonders of ssh in a for-loop
  • 136. * The Future of Puppet at GitHub there are a lot of cool things about mcollective
  • 137. * The Future of Puppet at GitHub I think it will be a part of our stack in the future
  • 138. * The Future of Puppet at GitHub but you can still go pretty damn far with bash and ssh
  • 139. * The Future of Puppet at GitHub even more puppetdb tooling
  • 140. * The Future of Puppet at GitHub waiting for multiple runs to converge exported resources is painful
  • 141. * The Future of Puppet at GitHub use the puppetdb API to skip all that
  • 142. * The Future of Puppet at GitHub even more gpanel integration
  • 143. * The Future of Puppet at GitHub "databags"
  • 144. * The Future of Puppet at GitHub "node search"
  • 145. * The Future of Puppet at GitHub steal good ideas from other tools
  • 147. "all software is terrible" — anyone who's worked with software long enough
  • 148. "no software is better than no software" — rtomayko
  • 149. the plumbing doesn't matter when all you care about is the porcelain
  • 150. write some damned good porcelain
  • 151.
  • 154. HE IS ALSO NOT MY BROTHER, BUT YOU REALLY SHOULD BUY HIM A BEER
  • 155. YOU SHOULD BUY THIS MAN A LOT OF BEER