I was trying to figure this out on my own but I can’t seem to find where
chef-server keeps cookbook files, (recipes, templates, files…). Although
the cookbook_path in server.rb would seem like a good place for them almost
none of my cookbooks are there even after I shutdown chef-server. I am also
fairly certain they are not somehow held within couchdb.
On Wednesday, October 5, 2011 at 8:08 AM, Bryan Baugher wrote:
I was trying to figure this out on my own but I can't seem to find where chef-server keeps cookbook files, (recipes, templates, files....). Although the cookbook_path in server.rb would seem like a good place for them almost none of my cookbooks are there even after I shutdown chef-server. I am also fairly certain they are not somehow held within couchdb.
In the past (v. 0.8.x and previous) chef-server did store the files there. Since 0.9.x chef-server supports having multiple versions of a cookbook available simultaneously, so the storage mechanism changed. Cookbooks are now stored in two pieces on the server. First, there is a couchdb document for each version of a cookbook. This contains the list of checksums of the files belonging to the cookbook. Second, there is a "checksum repository" stored on disk, located by default in /var/chef/checksums (the configuration setting for this ischecksum_path
). The files therein are further organized by the first two hex digits of their checksums, e.g., a file may be located at a path like /var/chef/checksums/ab/ab00000000.
When you download a cookbook, chef-server fetches the list of checksums from couch, then gives you URLs to download the individual files. The client (chef-client, knife, etc.) then downloads the individual files as needed by making requests to the URLs given by the server.
--
Dan DeLeo