Switch branches/tags
Nothing to show
Find file History
Pull request Compare This branch is 1872 commits behind chef-boneyard:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



This cookbook bootstraps a Chef client or server when Chef is installed via RubyGems. If installing Chef from OS distribution packages, please see the 'chef' cookbook.


This cookbook requires Chef installed from RubyGems. Chef v0.7.10, for attribute syntax.


Server bootstrap is tested on Ubuntu 9.10, 9.04, 8.10 and 8.04, Debian 5.0.

Client bootstrap is tested on the above, plus CentOS 5.3, Fedora 10, OpenBSD 4.6, FreeBSD 7.1 and Gentoo. OpenSolaris 11 is also tested, but there's a bug in Ohai that requires some manual intervention (OHAI-122).


Opscode cookbooks, github.com/opscode/cookbooks:

Both clients and servers:

  • runit

Servers only:

  • couchdb

  • stompserver

The couchdb and stompserver recipes may be somewhat naive depending on the platform. You should view them online at the github repository to see if your platform is supported. If not, you'll need to manually install them, and remove the “include_recipe” statements from the bootstrap::server recipe.


Attributes are under 'bootstrap' - eg: 'bootstrap[:client_version]'. You may wish to change some of these locations to customize for your environment. For the bootstrap process this is done with a JSON data file passed to chef-solo.


Set up the URLs the client should connect to with this. Default is 'http', which tells the client to connect to 'server:4000'. If you set up your chef-server to use an SSL front-end, set this to 'https' and the URLs will be 'server/'.


Specifies the init style to use. Default 'runit'. Other possible values 'init', 'bsd', any other string will be treated as unknown.

If your platform doesn't have a 'runit' package or if the cookbook doesn't detect it, but you stil want to use runit, set init_style to 'none' and install runit separately.


This is the base location where chef will store its associated data. Default '/srv/chef' for RubyGems installed systems. The location preference varies by platform. The default is a filesystem hiearchy standard suggestion. Some other locations you may consider, by platform:

Debian and Red Hat based Linux distros (Ubuntu, CentOS, Fedora, etc):

  • /var/lib/chef

Any BSD and Gentoo:

  • /var/chef


Location for pidfiles on systems using init scripts. Default '/var/run/chef'.

If init_style is 'init', this is used, and should match what the init script itself uses for the PID files.


Location where the client will cache cookbooks and other data. Default is 'cache' underneath the bootstrap[:path] location. Some Linux distributions might prefer /var/cache/chef instead.


Used by the Chef server as the base location to “serve” cookbooks, roles and other assets. Default is /srv/chef.

server_version, client_version

Set the version of the Gems to install. This can be used to upgrade Chef automatically. The chef gems are not managed by the Opscode Chef cookbook, however.


Number of seconds to run chef-client periodically. Default '1800' (30 minutes).


Splay interval to randomly add to interval. Default '20'.


Directory where logs are stored if logs are not sent to STDOUT. Systems using runit should send logs to STDOUT as runit manages log output. Default '/var/log/chef'.

client_log, indexer_log, server_log

Location of the client, indexer and server logs, respectively. Default 'STDOUT' on systems with runit, '/var/log/chef/{client,indexer,server}.log' on other systems.


Fully qualified domain name of the server. Default is the current node's fqdn as detected by Ohai. For clients, set this to the hostname of your environment's Chef Server.


The validation_token used to automatically authorize chef-clients. Default is a random string generated every time chef-solo runs. Use chef-client -t 'validation_token' to automatically validate the client.






Opscode stores this cookbook and some others (see the requirements above) on S3. Use chef-solo:

sudo chef-solo -j chef.json -c solo.rb -r http://s3.amazonaws.com/chef-solo/bootstrap-latest.tar.gz

You set the attributes through the chef.json file, and tell Solo where to put them with solo.rb.


Common attributes you may wish to adjust for the client:


"bootstrap": {
  "chef": {
    "url_type": "http",
    "init_style": "runit",
    "path": "/srv/chef",
    "server_fqdn": "localhost.localdomain",
"recipes": "bootstrap::client"



Common attributes you may wish to adjust for the server:


"bootstrap": {
  "chef": {
    "url_type": "http",
    "init_style": "runit",
    "path": "/srv/chef",
    "serve_path": "/srv/chef",
    "server_fqdn": "localhost.localdomain",
"recipes": "bootstrap::server"


Note that the server recipe includes the client recipe as well, since we recommend managing the chef-server with Chef.

For more information on usage and next steps, please see the Chef wiki.




Joshua Timberman <joshua@opscode.com>


Joshua Sierles <joshua@37signals.com>

Copyright 2008-2009, Opscode, Inc Copyright 2009, 37signals

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and