Cookbook reusability across the community has been hindered by a lack of standardization on how different types of cookbooks should be developed and consumed. For example, should recipes be put into the run_list directly and customized using node attributes or should they be included into another recipe using include_recipe and implemented using exposed LWRPs? What if neither of these gets you where to need to be? Are you being a bad Chef developer and opening a can of worms if you fork the cookbook and make changes to the recipe code?
The good news is that by shifting our mindset slightly about how we develop and consume cookbooks, we can leverage existing service models to define criteria that will set expectations between developers and consumers for how cookbooks should be designed and consumed. In this session I will leverage the existing cloud service model of IaaS, PaaS and SaaS to define three cookbook service models (Infrastructure as a Cookbook, Platform as a Cookbook and Applications as a Cookbook) and explain how these cookbook service models can provide a framework the community can leverage moving forward to clearly define standards for what design patterns to use when developing different kinds of cookbooks.