Cookbooks
While recipes in the world of Chef are a fundamental unit of execution, a cookbook is the fundamental unit of configuration and policy distribution. A cookbook is a container that is responsible for holding everything. It is needed to configure a component of a system, be it the attributes, configuration files, templates, custom resources (more about resources later in this chapter), recipes, versions, metadata, or libraries/helper functions; everything is packed into a cookbook and is used later on during the execution of Chef code when run_list
is expanded during the chef-client run on the concerned machine.
Authoring a cookbook
A cookbook has the following directory structure:
|-- CHANGELOG.md |-- README.md |-- attributes |-- definitions |-- files | `-- default |-- libraries |-- metadata.rb |-- providers |-- recipes | `-- default.rb |-- resources `-- templates `-- default
The attributes
folder is meant to contain a list of attributes that can be used within the recipes...