Cookbooks Migrated to New GitHub Organization

Opscode’s cookbooks are no longer maintained in the monolithic “opscode/cookbooks” repository on GitHub, and are now split up into a new organization on GitHub, “opscode-cookbooks”.

Why the Change?

Based on feedback from you, our excellent community, the overwhelming voice is that having the cookbooks in their own separate repository will make it easier for people to contribute to only certain cookbooks. It also means that changes in the overall repository don’t cause merge conflicts for contributors trying to keep their fork(s) updated.

With the repositories split up, you can fork and clone only those where you want to contribute. For example, if you just want to contribute a change to our chef-server cookbook, you only need to fork that cookbook, rather than the full repository.

Where are the cookbooks?

Opscode has cookbooks in two locations.

Tested, released and supported versions of cookbooks are released to the Community site. The repositories on GitHub are in development, and may not work as expected if you try to use them directly. In our view, this is no different than using the Chef RubyGem vs Chef from git master

Each cookbook has its own repository in “opscode-cookbooks”. For example, the “apache2” cookbook in “opscode/cookbooks” (monolithic repo) is now “opscode-cookbooks/apache2”. This may cause a namespace conflict when you fork the repository if you have another Git repository with the same name, but GitHub’s API will automatically rename the fork.

Getting Cookbooks

If you already get your cookbooks from the Chef Community site, either via direct download from the web page, or with Knife, nothing changes for you. We will still release the cookbooks to the site.

However, if you are a contributor, or would like to become a contributor, there are some changes to your local workflow to use the new repositories.

First and most obviously, you need to fork the cookbooks under your GitHub account. You do not need to fork all of them, just the ones you wish to contribute changes. Some of the cookbook names conflict with other project names, so if you have existing GitHub repositories named the same as some of the cookbooks (notably: “chef” and “ohai” from Opscode), you’ll need to rename your fork.

Second, you’ll need to clone the repositories to your local system. We strongly recommend that you do this in a separate directory from your Chef Repository. If you have a copy of one of our cookbooks in your Chef Repository that you have modified, and want to contribute those changes, then copy the files to the cloned repository.

Third, keep in mind some requests we have for contributions:

  • Do not modify the metadata.rb, especially the version, unless you’re doing so to elaborate on the metadata (documenting attributes, recipes and such).
  • Do not modify the CHANGELOG.md file. When we cut a release, we’ll update the changelog to reflect the changes in that release. Not all contributions may be included in a release as is.
  • Please include the ticket number in the commit message. This makes it easier to track things for the changelog.

Each cookbook has a CONTRIBUTION file that explains how to contribute to the cookbook. For a technical guide on how to contribute, including a script to handle the GitHub forking and local cloning automatically, see the How to Contribute to Opscode Cookbooks guide.

Joshua Timberman

Joshua Timberman is a Code Cleric at CHEF, where he Cures Technical Debt Wounds for 1d8+5 lines of code, casts Protection from Yaks, and otherwise helps continuously improve internal technical process.