Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


wercker status

This cookbook can be used to bootstrap a Chef Server 12 cluster with an initial set of nodes.


Install the Chef Development Kit, available via

On Mac OS X and Linux, configure the PATH and GEM environment variables with:

$ eval "$(chef shell-init bash)"

All cookbook-related development activities are Rake tasks:

rake bootstrap                      # Bootstrap with chef-solo
rake complete                       # Run _all_ the tests
rake foodcritic                     # Lint Chef cookbooks
rake kitchen:all                    # Run all test instances
rake kitchen:analytics-centos65     # Run analytics-centos65 test instance
rake kitchen:analytics-ubuntu1404   # Run analytics-ubuntu1404 test instance
rake kitchen:node1-centos65         # Run node1-centos65 test instance
rake kitchen:node1-ubuntu1404       # Run node1-ubuntu1404 test instance
rake kitchen:node2-centos65         # Run node2-centos65 test instance
rake kitchen:node2-ubuntu1404       # Run node2-ubuntu1404 test instance
rake kitchen:standalone-centos65    # Run standalone-centos65 test instance
rake kitchen:standalone-ubuntu1404  # Run standalone-ubuntu1404 test instance
rake rubocop                        # Run RuboCop
rake rubocop:auto_correct           # Auto-correct RuboCop offenses
rake spec                           # Run RSpec code examples
rake standalone:converge[platform]  # converge standalone cluster
rake standalone:create[platform]    # create standalone cluster
rake standalone:destroy[platform]   # destroy standalone cluster
rake standalone:login[platform]     # login to standalone server
rake test:quick                     # Run all the quick tests

To spin up your very own test Chef Server cluster:

$ rake standalone:converge

Access web management UI via the username password chefadmin / chefadmin:


The IP address is configurable with the CHEF_SERVER_IP environment variable.


3.5GB free memory for the instances:

  • Chef Server - 1.5GB
  • Analytics Server - 1.5GB
  • Each node managed by Chef - 512MB

Clone this repository:

git clone

Install the Chef Development Kit for your platform.

Install the following virtualization software:


The attributes used by this cookbook are in the node['chef_server12'] namespace:

Attribute Description Type Default
admin_username Chef admin username String 'chefadmin'
admin_firstname Chef admin first name String 'Chef'
admin_lastname Chef admin last name String 'Admin'
admin_email Chef admin e-mail String 'chefadmin@localhost'
admin_private_key_path Local path where a copy of private key for the admin user should be stored '/tmp/chefadmin.pem'
analytics Install Chef Analytics Boolean true
api_fqdn Fully qualified domain name that you want to use for accessing the Web UI and API. String node['api_fqdn']
backend.analytics_fqdn Fully qualified domain name of the Chef Analytics server machine String node['analytics_fqdn']
backend.analytics_ipaddress (Optional) IP address of the Chef Analytics server machine String node['analytics_ipaddress']
backend.fqdn Fully qualified domain name of the Chef Server machine itself. String node['api_fqdn']
backend.ipaddress (Optional) IP address of the Chef Server machine String node['ipaddress']
feature List of premium features to install. Possible values are opscode-manage, opscode-reporting, chef-sync, and opscode-push-jobs-server. Boolean false
nodes List of fqdn: ipaddress pair values of nodes to register. ipaddress is optional Hash
configuration Configuration values to pass down to the underlying server config file (i.e. /etc/chef-server/chef-server.rb). Hash
org_name Organization name to be created String 'default'
org_long_name Descriptive string for the organization String 'Default Organization'
org_private_key Name for the organization validation key String #{node['chef_server12']['organization']}-validator.pem
org_private_key_path Local path where a copy of organization validation key should be stored '/tmp/default-validator.pem'
topology Installation cluster topology. Possible values are standalone, tiered or ha. String 'standalone'
version Chef Server version to install. This value is ignored if package_file is set. String :latest
write_hosts Generate /etc/hosts file on nodes with values from backend and nodes attributes. Boolean false


Here's the recipes in the cookbook and how to use them in your environment.


Installs a Chef Server cluster using the standalone topology and registers the specified initial set of nodes.


Initializes a node, allowing root access by the Chef Server temporarily to bootstrap the node with Chef.

Install Methods

Bootstrapping with chef-solo

In production, chef-solo can be used to run a Chef cookbook when there is no Chef Server. chef-solo is included with the Chef Client install, available via:

curl -L | sudo bash

In order to use chef-solo to run this cookbook, create a .json file with the attribute values reflecting the intended setup. You can find an example in bootstrap/standalone.json:

  "chef_server12": {
    "topology": "standalone",
    "api_fqdn": "",
    "write_hosts": true,
    "backend": {
      "fqdn": "",
      "ipaddress": ""
  "run_list": [

Also create a solo.rb file with the full path to the root cookbooks/ directory where this cookbook is stored. Unfortunately this is the one necessary value that cannot be passed to chef-solo as a command line parameter. Here is an example solo.rb file:

cookbook_path '/var/chef-solo/cookbooks'

Here's the command like you would use to use chef-solo to perform a Chef run:

$ sudo chef-solo --json-attributes standalone.json --config ./solo.rb

The following Rake task can be used to run chef-solo:

$ rake bootstrap

Demo with Test Kitchen

You can also use Test Kitchen to quickly generate a development Chef Server setup. Refer to the Overview section.


Configures a system to run Chef Server 12






No releases published


No packages published