cookbook reusability @ chef community summit 2014
DESCRIPTION
Cookbook Reusability presented at Chef Community summit 2014TRANSCRIPT
![Page 1: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/1.jpg)
Cookbook Reusability!Chef Community Summit
2014
![Page 3: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/3.jpg)
whoami
![Page 4: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/4.jpg)
A Year in Review
![Page 5: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/5.jpg)
Diversification
![Page 6: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/6.jpg)
7zip!apache2!ark!application*!couchdb!Imagemagick!java
![Page 7: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/7.jpg)
logrotate!mercurial!munin!nagios!nginx!ntp!openvpn
![Page 8: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/8.jpg)
pacman!postgresql!python!reprepro!rabbitmq!runit!supervisor
![Page 9: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/9.jpg)
selinux!tmux!varnish !wordpress!
![Page 10: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/10.jpg)
Supermarket
https://www.flickr.com/photos/mobilestreetlife/10885044043
![Page 11: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/11.jpg)
• Escaped the tyranny of JIRA!
• Moved to Github Issues!
• Automated CLA checking!
• OSS Artifact Repository
![Page 12: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/12.jpg)
Rewrites
![Page 13: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/13.jpg)
2009
0.5.2Chef
Vagrant
ChefSpec
0.1.0
0.0.2
Minitest-Chef
Berkshelf
Test Kitchen
2010
0.9.0
2011
0.10.0
2012
10.12.0
1.0.0
0.2.0
1.0.0
0.7.0
1.0.0
2013 2014
1.0.0
2.0.0
1.0.0
2.0.0
1.4.0
11.0.0 12.0.0
1.6.5
3.0.0
3.0.0
1.2.2
ServerSpec
ChefDK
0.0.1 2.0.0
0.2.2TDI Capability
0.8.0
![Page 14: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/14.jpg)
yum!yum-*!jenkins!mysql!httpd
![Page 15: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/15.jpg)
The Evolution of a Chef Cookbook
![Page 16: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/16.jpg)
Stage 1 - Paradise
https://www.flickr.com/photos/nattu/1385100375/
![Page 17: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/17.jpg)
![Page 18: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/18.jpg)
test / repair
test / repair
test / repair
![Page 19: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/19.jpg)
Easy to read Easy to grok Easy to test}
![Page 20: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/20.jpg)
Stage 2 - if statements
![Page 21: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/21.jpg)
logic
compiled into resource collection
![Page 22: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/22.jpg)
Resource DSL}
Just Ruby}
![Page 23: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/23.jpg)
Resource DSL}
Just Ruby} }Chef
![Page 24: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/24.jpg)
Stage 3 - Crazytown
https://www.flickr.com/photos/kwl/4595324641
![Page 25: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/25.jpg)
![Page 26: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/26.jpg)
wat
![Page 27: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/27.jpg)
Why?
![Page 28: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/28.jpg)
Reusable is useful
![Page 29: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/29.jpg)
Cross-platform is useful
![Page 30: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/30.jpg)
We desire useful things
![Page 31: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/31.jpg)
Platform idioms are hard
![Page 32: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/32.jpg)
Keeping the Dream Alive
https://www.flickr.com/photos/kalexanderson/7014655351/
![Page 33: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/33.jpg)
Most people just write their own cookbooks from scratch
![Page 34: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/34.jpg)
I really really really want reusable cross-platform cookbooks
![Page 35: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/35.jpg)
Lessons Learned
![Page 36: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/36.jpg)
Attributes are routinely abused
https://www.flickr.com/photos/jabberwocky381/2828863789
![Page 37: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/37.jpg)
![Page 38: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/38.jpg)
Attributes are an interface
![Page 39: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/39.jpg)
Attributes are tunable knobs
![Page 40: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/40.jpg)
![Page 41: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/41.jpg)
You probably just want a variable
![Page 42: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/42.jpg)
![Page 43: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/43.jpg)
Or even a method
![Page 44: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/44.jpg)
![Page 45: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/45.jpg)
Using an attribute to track state during a Chef run causes tears and sorrow
![Page 46: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/46.jpg)
Prefer resource parameters
![Page 47: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/47.jpg)
![Page 48: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/48.jpg)
![Page 49: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/49.jpg)
Primitives are more useful than opinionated policy
![Page 50: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/50.jpg)
“They’re Just Resources”!!
LWRP is Googleable
![Page 51: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/51.jpg)
Zoom out a level!!
Think about services and runtimes, not files and processes
![Page 52: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/52.jpg)
Singleton resources are good but confusing. Possibly even dangerous.!!
Multiple instance support is better!!
Cross-platform resources are best
![Page 53: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/53.jpg)
![Page 54: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/54.jpg)
BDD / TDD yields high quality cookbooks
https://www.flickr.com/photos/glenirah/4376553184
![Page 55: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/55.jpg)
Test Kitchen!ServerSpec / Minitest / Bats!ChefSpec
![Page 56: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/56.jpg)
2009
0.5.2Chef
Vagrant
ChefSpec
0.1.0
0.0.2
Minitest-Chef
Berkshelf
Test Kitchen
2010
0.9.0
2011
0.10.0
2012
10.12.0
1.0.0
0.2.0
1.0.0
0.7.0
1.0.0
2013 2014
1.0.0
2.0.0
1.0.0
2.0.0
1.4.0
11.0.0 12.0.0
1.6.5
3.0.0
3.0.0
1.2.2
ServerSpec
ChefDK
0.0.1 2.0.0
0.2.2This Slide Again
0.8.0
![Page 57: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/57.jpg)
Full test coverage is tedious
![Page 58: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/58.jpg)
Full test coverage is totally worth it
![Page 59: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/59.jpg)
Let users bring their own configurations
![Page 60: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/60.jpg)
It is better to add to a resource_collection than to monkey patch it
![Page 61: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/61.jpg)
Configuration files are the brains of a service
![Page 62: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/62.jpg)
Manage minimal configuration to get a service running
![Page 63: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/63.jpg)
Offload further configuration to the user
![Page 64: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/64.jpg)
conf.d is your friend
![Page 65: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/65.jpg)
Hide everything else inside a resource
![Page 66: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/66.jpg)
Add resource parameters when appropriate
![Page 67: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/67.jpg)
![Page 68: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/68.jpg)
![Page 69: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/69.jpg)
Cross-platform cookbooks are hard
https://www.flickr.com/photos/glenirah/4376553184
![Page 70: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/70.jpg)
Cross-platform resources are even harder
![Page 71: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/71.jpg)
They can be done!
![Page 72: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/72.jpg)
Create a resource
![Page 73: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/73.jpg)
![Page 74: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/74.jpg)
Create a provider
![Page 75: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/75.jpg)
![Page 76: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/76.jpg)
Subclass platform providers
![Page 77: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/77.jpg)
![Page 78: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/78.jpg)
![Page 79: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/79.jpg)
![Page 80: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/80.jpg)
![Page 81: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/81.jpg)
![Page 82: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/82.jpg)
Set provider default for platforms
![Page 83: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/83.jpg)
![Page 84: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/84.jpg)
Do Repeat Yourself
![Page 85: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/85.jpg)
Some resources are often the duplicated across providers
![Page 86: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/86.jpg)
That’s fine. It’s the pattern as a whole that’s important
![Page 87: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/87.jpg)
Maximize for grokability
![Page 88: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/88.jpg)
People will be reading your code for the first time during operations work
![Page 89: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/89.jpg)
Init systems are annoying
![Page 90: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/90.jpg)
Using a service resource usually requires file or template resources in addition to service[thingd]
![Page 91: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/91.jpg)
Debconf!Docker!LaunchD!Runit!SMF!Simple!SystemD!Sysvinit!Upstart!Windows Services
![Page 92: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/92.jpg)
Subclassing is awesome
![Page 93: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/93.jpg)
![Page 94: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/94.jpg)
Customize before recipe compilation
![Page 95: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/95.jpg)
Going Forward
![Page 96: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/96.jpg)
Cookbooks that ship resource primitives
![Page 97: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/97.jpg)
More examples to copy
![Page 98: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/98.jpg)
More breaking backwards compatibility (sorry)
![Page 99: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/99.jpg)
Providers implemented with Docker containers (why not?)
![Page 100: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/100.jpg)
chef-metal
![Page 101: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/101.jpg)
Tell me what you think
![Page 102: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/102.jpg)
Please don’t hurt me =)
![Page 103: Cookbook Reusability @ Chef Community summit 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051817/547cac8fb37959532b8b5092/html5/thumbnails/103.jpg)