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. 


Right now the cookbooks have only been tested with the "Bexar" release of Nova and "Cactus" support is 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 patches are welcome!). The eventual goal is to support all the configuration options available for OpenStack via attributes and available OpenStack and 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.9.16 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 Object Storage, code-named “Swift”, provides the software to store billions of objects distributed across standard hardware.
  • OpenStack Image Registry, code-named "Glance", provides services for discovering, registering, and retrieving virtual machine images.

Automated Deployment of OpenStack With Chef

Watch Opscode team member Matt Ray's Presentation from Texas Linux Fest on an Automated Deployment of OpenStack With Chef

Cooking Up OpenStack Chef Recipes

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


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.


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


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
  • 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, credentials and amis for the nova installation


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


provides an attribute hash for loading AMIs into Nova.

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 can start applying the roles to nodes. The default installation currently uses MySQL, RabbitMQ and KVM and only deploys Nova (so no integration with Glance and Swift yet). If your nodes are provisioned, the only attribute you will need to set are the URLs in

in the nova-aim-urls.rb to ensure you have AMIs loaded into Nova. Once you have that configured, upload the nova-aim-urls role and assign the roles as follows:

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-h8wh0j17 (or whatever is generated) 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".


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

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