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
Poise: Reusable Cookbook Patterns
Search
Noah Kantrowitz
April 16, 2014
Programming
1
730
Poise: Reusable Cookbook Patterns
Noah Kantrowitz
April 16, 2014
Tweet
Share
More Decks by Noah Kantrowitz
See All by Noah Kantrowitz
The Long Hello World
coderanger
0
17
The Long Hello World (with notes)
coderanger
0
56
What Python Can Learn From Other Languages
coderanger
0
79
What Python Can Learn From Other Languages (with notes)
coderanger
0
200
Swiss Army Django: Small Footprint ETL (with notes) - DjangoCon US
coderanger
0
310
Swiss Army Django: Small Footprint ETL - DjangoCon US
coderanger
0
79
How to look at space: PyCon AU
coderanger
0
130
Swiss Army Django: Small Footprint ETL
coderanger
0
110
Swiss Army Django: Small Footprint ETL (with notes)
coderanger
0
98
Other Decks in Programming
See All in Programming
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
190
AI時代の認知負荷との向き合い方
optfit
0
150
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Oxlintはいいぞ
yug1224
5
1.3k
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
190
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
20
7.1k
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
420
Fluid Templating in TYPO3 14
s2b
0
130
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
170
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.3k
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Docker and Python
trallard
47
3.7k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
270
A better future with KSS
kneath
240
18k
What's in a price? How to price your products and services
michaelherold
247
13k
New Earth Scene 8
popppiees
1
1.5k
Chasing Engaging Ingredients in Design
codingconduct
0
110
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
140
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
110
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Git: the NoSQL Database
bkeepers
PRO
432
66k
Transcript
Cookbook Patterns Poise Noah Kantrowitz
Me •PSF + PyCon •Balanced •Chef •Making things
•What? •Why? •How?
None
None
None
cook·book A description of a piece of infrastructure
Role Cookbook Recipe Resource
None
leak·y ab·strac·tion Incomplete hiding of internal details
None
•Fork (and patch) •Wrapper •Rewind
Inheritance
None
10x
Poise
•Helpers •DSL extensions •Patterns
None
•jenkins •jenkins_job •jenkins_credential •jenkins_plugin
•ci_job •ci_pipeline •name_ci_pipeline
Using Poise
class Chef class ... ... end end
Resource::Foo < Resource Provider::Foo < Provider
•Foo => foo •FooBar => foo_bar •FOO => f_o_o
class ... include Poise ... end
action(:one, :two) attribute(:name, kind_of: String)
attribute(:opts, option_collector: true ) opts do foo 'bar' end
attribute(:path, default: lazy { ... })
attribute(:config, template: true) attribute('', template: true)
foo ... do source 'cfg.erb' end foo ... do content
'x=1' end
file ... do content nr.content end
class Provider... def action_one ... end end
notifying_block do ... end
include_recipe ...
Putting It Together
class Res::Foo < Res include Poise action(:one) attribute(:pkg) attribute(:ver) end
def action_one notifying_block do install_pkg write_config end end
def install_pkg package nr.pkg do version nr.ver end end
def install_pkg r = super r.package_name( 'my-thing') r end
Next Steps
Subresources
Cookbook Tiers
•poise-proxy •poise-appenv •poise-service?
•attribute(node: ...) •group do ... end •after(:one)
None
Thank You