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
Configuration Management Camp 2015
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
someara
February 03, 2015
Technology
580
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Configuration Management Camp 2015
Ghent Belgium
someara
February 03, 2015
More Decks by someara
See All by someara
Docker Docker Docker Chef
someara
0
530
Hand Crafted Artisinal Chef Resources
someara
0
620
Cookbook Reusability
someara
0
820
TDI with ChefDK 0.0.1
someara
2
890
Configuration Management 101 @ Scale12x
someara
2
930
Configuration Management 101
someara
3
810
Introduction to Chef - Scale 10x
someara
2
470
Introduction to Chef - NYLUG Jan 2012
someara
2
320
Introduction to Chef - LISA11
someara
10
6.2k
Other Decks in Technology
See All in Technology
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
200
やさしいA2A入門
minorun365
PRO
12
1.7k
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
140
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
100
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
810
20260619 私の日常業務での生成 AI 活用
masaruogura
1
130
脆弱性対応、どこで線を引くか
rymiyamoto
1
370
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
380
MCP Appsを作ってみよう
iwamot
PRO
4
540
爆速でマルチプロダクトを立ち上げる時 事業・CTO目線で大事にしたい事
miyatakoji
0
100
Snowflakeと仲良くなる第一歩
coco_se
4
430
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
320
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Being A Developer After 40
akosma
91
590k
How to build a perfect <img>
jonoalderson
1
5.6k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Amusing Abliteration
ianozsvald
1
200
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Transcript
Chef Reusability! Config Management Camp! Ghent, Belgium! February 2015
Sean OMeara!
[email protected]
! @someara
whoami
Part 1
Things that are true
New Chef users expect community cookbooks to just work
Especially the Chef maintained cookbooks
This is not the current state of things
This leads to sadness
We must repair it
People copy patterns
The status quo cannot be allowed to continue
Common pain points https://www.flickr.com/photos/kwl/4595324641
Platform and version support
Weak scoping
No standard interface
Compilation phase work
Needing chef-rewind
Attributes and precedence
Pattern proliferation
The path out of the darkness https://www.flickr.com/photos/71267357@N06/15864687537
Change how cookbooks are written
systems beliefs! behaviors
Standardize interfaces
Eliminate the pain points
Focus on resources
Make it super easy! to write resources
Ship resources for ALL THE THINGS
Copy better patterns
Make it fucking delightful
None
Part 2
Simple design patterns https://www.flickr.com/photos/pollock/4172865252
None
None
You just separated data from code
You also just built an interface
Complex design patterns https://www.flickr.com/photos/alanosaur/6417040565
None
None
This is where things get weird
amazon debian-6 debian-7 ubuntu-10.04 ubuntu-12.04 ubuntu-14.04 centos-5 centos-6 centos-7 freebsd-9
freebsd-10
Debconf! Docker! LaunchD! Runit! SMF! Simple! SystemD! Sysvinit! Upstart! Windows
Services
There is a large amount of variation between software versions
There is an insane amount variation across platforms
These differences need to be handled somewhere
Early techniques did everything in the recipe
data resource pattern
Later techniques focused on isolation
Resource pattern isolation
None
private recipes by convention
Resource data isolation
None
None
We now have decision logic in our interface
Default values often need to be computed
Doing this in the interface leads to sorrow
None
We need a better way
Consumption Patterns https://www.flickr.com/photos/ektogamat/2578779839
None
None
None
None
Why resources are best https://www.flickr.com/photos/cross_stitch_ninja/4932950637
node attributes roles environments databags are nice to haves
They drive data about resources
Resources are fundamental
Resources are strongly scoped
Resources have a standardized interface
Resources have types, names, and parameters
Type
Name
Parameters
Resources have identities
None
Resource can see each other
Promise to talk
Promise to listen
Resource behave the same across platforms
None
None
None
Resource can have multiple providers
None
Writing simple resources
yum
</switches github>
Writing complex resources
mysql httpd
</switches github>
fin