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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Noah Kantrowitz
April 16, 2014
Programming
750
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Poise: Reusable Cookbook Patterns
Noah Kantrowitz
April 16, 2014
More Decks by Noah Kantrowitz
See All by Noah Kantrowitz
The Long Hello World
coderanger
0
35
The Long Hello World (with notes)
coderanger
0
110
What Python Can Learn From Other Languages
coderanger
0
95
What Python Can Learn From Other Languages (with notes)
coderanger
0
240
Swiss Army Django: Small Footprint ETL (with notes) - DjangoCon US
coderanger
0
380
Swiss Army Django: Small Footprint ETL - DjangoCon US
coderanger
0
96
How to look at space: PyCon AU
coderanger
0
150
Swiss Army Django: Small Footprint ETL
coderanger
0
130
Swiss Army Django: Small Footprint ETL (with notes)
coderanger
0
110
Other Decks in Programming
See All in Programming
AIエージェントで 変わるAndroid開発環境
takahirom
1
450
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
380
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
0
1.5k
継続モナドとリアクティブプログラミング
yukikurage
3
400
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
830
Performance Engineering for Everyone
elenatanasoiu
0
260
初めてのKubernetes 本番運用でハマった話
oku053
0
120
act1-costs.pdf
sumedhbala
0
170
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
1
120
symfony/aiとlaravel/boost
77web
0
120
Webフレームワークの ベンチマークについて
yusukebe
0
200
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Featured
See All Featured
Done Done
chrislema
186
16k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
30 Presentation Tips
portentint
PRO
1
340
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
310
A Tale of Four Properties
chriscoyier
163
24k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Amusing Abliteration
ianozsvald
1
220
The browser strikes back
jonoalderson
0
1.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
770
Mobile First: as difficult as doing things right
swwweet
225
10k
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