I’ve written a chef-rfc to propose a new cookbook storage API. The main features of this new API are:
- Cookbooks are identified by arbitrary string IDs. These must be unique by cookbook name
- Cookbooks uploaded to this API are not required to have unique version numbers
- Cookbooks uploaded via this API will not (by default, at least) be visible from the existing cookbook storage API.
This is intended to support a new mode of operation in chef-client, where cookbook versions are determined statically ahead of time (on the workstation or by Ci) and written to a document which is published to the chef-server. chef-client then retrieves this document to find the set of cookbook artifacts it should use. It is of course possible to do this with the existing APIs, but I believe that this is needlessly limiting to users’ freedom in determining their desired workflow (some examples of this are documented in the RFC).
Please have a look and feel free to offer any comments: https://github.com/opscode/chef-rfc/pull/20