Skip to content


Subversion checkout URL

You can clone with
Download ZIP

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
apache2 @ b675484
apt @ df56093
aws @ d98220c
collectd @ 38ca3c6
collectd-graphite @ d42fbf4
collectd-plugins @ 6a48bf6
database @ b64ce9b
dsh @ da54b41
erlang @ 9fbc8c0
exerstack @ 6cbc18f
glance @ db9b11f
graphite @ 2c0df62
hardware @ c6c1373
horizon @ 45dfa12
keystone @ 5e5ac92
kong @ 69bf735
modules @ 871b293
monit @ c2371eb
monitoring @ 0528c4c
mysql @ c35367a
mysql-openstack @ 3fdfc1a
nova @ 439c982
ntp @ d54f109
openssh @ d16378b
openssl @ ec39521
osops-utils @ 4455717
postgresql @ 9eb99ac
rabbitmq @ 0467dfc
rabbitmq-openstack @ 9737637
rsyslog @ 569a702
selinux @ a65da33
sosreport @ 09bd2eb
swift @ d01e751
sysctl @ bb627fc
xfs @ 3cbf1a7
yum @ 3d44255

This directory contains the cookbooks used to configure systems in your infrastructure with Chef.

Knife needs to be configured to know where the cookbooks are located with the cookbook_path setting. If this is not set, then several cookbook operations will fail to work properly.

cookbook_path ["./cookbooks"]

This setting tells knife to look for the cookbooks directory in the present working directory. This means the knife cookbook subcommands need to be run in the chef-repo directory itself. To make sure that the cookbooks can be found elsewhere inside the repository, use an absolute path. This is a Ruby file, so something like the following can be used:

current_dir = File.dirname(__FILE__)
cookbook_path ["#{current_dir}/../cookbooks"]

Which will set current_dir to the location of the knife.rb file itself (e.g. ~/chef-repo/.chef/knife.rb).

Configure knife to use your preferred copyright holder, email contact and license. Add the following lines to .chef/knife.rb.

cookbook_copyright "Example, Com."
cookbook_email     ""
cookbook_license   "apachev2"

Supported values for cookbook_license are "apachev2", "mit","gplv2","gplv3", or "none". These settings are used to prefill comments in the default recipe, and the corresponding values in the metadata.rb. You are free to change the the comments in those files.

Create new cookbooks in this directory with Knife.

knife cookbook create COOKBOOK

This will create all the cookbook directory components. You don't need to use them all, and can delete the ones you don't need. It also creates a README file, metadata.rb and default recipe.

You can also download cookbooks directly from the Opscode Cookbook Site. There are two subcommands to help with this depending on what your preference is.

The first and recommended method is to use a vendor branch if you're using Git. This is automatically handled with Knife.

knife cookbook site install COOKBOOK

This will:

  • Download the cookbook tarball from
  • Ensure its on the git master branch.
  • Checks for an existing vendor branch, and creates if it doesn't.
  • Checks out the vendor branch (chef-vendor-COOKBOOK).
  • Removes the existing (old) version.
  • Untars the cookbook tarball it downloaded in the first step.
  • Adds the cookbook files to the git index and commits.
  • Creates a tag for the version downloaded.
  • Checks out the master branch again.
  • Merges the cookbook into master.
  • Repeats the above for all the cookbooks dependencies, downloading them from the community site

The last step will ensure that any local changes or modifications you have made to the cookbook are preserved, so you can keep your changes through upstream updates.

If you're not using Git, use the site download subcommand to download the tarball.

knife cookbook site download COOKBOOK

This creates the COOKBOOK.tar.gz from in the current directory (e.g., ~/chef-repo). We recommend following a workflow similar to the above for your version control tool.

Something went wrong with that request. Please try again.