Skip to end of metadata
Go to start of metadata


This page is a brief guide to deploying OpenStack with the cookbooks currently available from Matt Ray's GitHub repository ( It is currently intended for deploying the point-release codenamed "Cactus", other branches will be added as they are released ("Bexar" is still available as a branch). The intention for the repository is to only support major releases.

This code base is under development, so ask Matt Ray about the current state if these instructions aren't currently working.


Right now the Cactus cookbooks support a single machine with Glance and Nova, but they are under active development. Other components will be added in time and new releases will be added as they are available. There is currently no intention to continue development on previous releases once a new release is available (but they are available and patches are welcome!). The eventual goal is to support all the configuration options available for OpenStack with Chef cookbooks.

All code in the repository is Apache 2 licensed and covered by the Contribution License Agreement. Patches will not be accepted without this requirement.


This has been primarily tested with Ubuntu 10.04 (a bit with 10.10) and Chef 0.10 and later.

Hardware Requirements

  • OpenStack Compute currently requires x86 hardware with virtualization support (KVM is currently the only hypervisor).
  • OpenStack Object Storage should not be deployed with RAID.


What is OpenStack?

OpenStack is a collection of open source technologies delivering a massively scalable cloud operating system. OpenStack is currently developing two interrelated projects: OpenStack Compute and OpenStack Object Storage. OpenStack Compute is software to provision and manage large groups of virtual private servers, and OpenStack Object Storage is software for creating redundant, scalable object storage using clusters of commodity servers to store terabytes or even petabytes of data.

  • OpenStack Compute, code-named “Nova”, provides the software to provision virtual machines on standard hardware on a massive scale.
  • OpenStack Image Registry, code-named "Glance", provides services for discovering, registering, and retrieving virtual machine images.
  • OpenStack Object Storage, code-named “Swift”, provides the software to store billions of objects distributed across standard hardware.


The cookbooks and configuration files are currently available from Matt Ray's GitHub repository.

(note the "cactus" branch)

These were originally forked from the work in Anso Labs' OpenStack-Cookbooks but have diverged greatly since the original fork.

Matt Ray talks Crowbar, Chef, and OpenStack integration for building private clouds

Matt Ray discusses the integration work he is doing with Crowbar (a soon to be open source bare-metal provisioning tool from Dell), Chef, and OpenStack. This toolchain stretches the concept of infrastructure as code all the way from the bios to the provisioning of a private cloud... it's a "datacenter as code".

Watch the Video on the dev2ops blog.

Our friends from the CloundAve Blog put together an excellent overview of OpenStack cloud solution installer, Crowbar - and its' secret sauce: Opscode Chef, The Secret Sauce Behind Dell Open Source Crowbar

Automated Deployment of OpenStack With Chef

Watch Opscode team member Matt Ray's Presentation from Velocity 2011 on Deploying OpenStack with Opscode Chef


Download the following cookbooks:

  • glance
    • Included in the repository.
  • nova
    • Included in the repository.
  • swift
    • Included in the repository, untested.

Once the cookbooks have been all been downloaded and untarred into the cookbooks directory

Cooking Up OpenStack Chef Recipes

OpenStack team members from Dell also have some Swift and Nova Chef recipes available.


From the openstack-cookbooks directory

to load all the roles in the repository.

Here is a graphic of the relationships between the roles (ovals) and recipes:


Installs everything required to run Nova on a single machine, a special case of multi-node and simply depends on the "nova-multi-controller" and "nova-multi-compute" roles.


  • nova-db, role providing MySQL configuration
  • nova-rabbitmq-server, role providing RabbitMQ configuration
  • glance-single-machine, role installing the Glance service and uploading AMIs
  • nova-api, recipe providing the nova-api service
  • nova-network, recipe providing the nova-network service
  • nova-scheduler, recipe providing the nova-scheduler service
  • nova-objectstore, recipe providing the nova-objectstore service
  • nova-project, configures the projects and credentials for the nova installation


  • nova-compute components, installing KVM and providing the hypervisor.

Configure Attributes for Deployment

OpenStack is a complicated application with many configurable and interchangeable components. Once you have your repository and have uploaded your cookbooks and roles, you will need to configure and upload the openstack data bag. Glance and Nova are configured with the glance and nova JSON files in the data_bags/openstack/ directory. AMIs to be installed are managed with the images JSON file. You may upload these with

There are also attributes available for configuration, these may be overridden as necessary. Once these are in place you may apply the roles to nodes. The default installation currently uses MySQL, RabbitMQ and KVM and only deploys Glance on the Nova Controller (so no integration with Swift yet).

Single node

and run the chef-client on the machine.

Multi node

and run the chef-client on the controller and then compute node(s).

Verify your Installation

Once you've deployed your servers, SSH into the controller node (or single box) and

then, as the nova user verify that your services are all running properly:

and list the available images

select the ami-00000002 (or whichever you prefer) and enter the following

see the progress as your instance starts up

once it is running

and connect to your new OpenStack instance.

knife openstack

OpenStack is supported by the Chef command-line tool knife with Chef 0.10 and the knife openstack plugin. You can install it with "gem install knife-openstack".

You will need to update your .chef/knife.rb with the following:

You can get the access_key and secret_key values with "knife node show mycontroller -a nova | grep key"

You should now be able to run

which currently fails to bootstrap, but creates the instance (euca-describe-instances will list it).


This is a non-ordered list of things that are prioritized to work on.

  • More fine-grained roles for different deployment environments
    • Pluggable/Modular Roles
      • Databases (MySQL/PostgreSQL/Drizzle/etc.)
      • ObjectStore implementations
      • Network configurations
      • Hypervisors (KVM/Xen/LXC/etc.)
    • Swift integration
  • Dashboard
    • simple Django application, recipe already exists
  • Swift
    • cookbook exists, untested
    • pluggable/modular roles like Nova
  • Diablo