Apr 12, 2013

Chef and Crowbar for setting up OpenStack clouds - with openSUSE and SUSE Cloud

To easily setup an OpenStack-based cloud on server hardware, we at SUSE use the open source Crowbar project. Crowbar eases the setup of all the different OpenStack components and thus reduces the time spent deploying and managing an OpenStack-based cloud.

Crowbar is a platform for server provisioning and deployment from bare metal. It provides server discovery, firmware upgrades, and operating system installation using PXE Boot, and it deploys applications on top of functioning operating systems using Chef.

Currently development is happening on Crowbar 2 and I'd like to give a short overview of a few things that are done here to make this work useable for openSUSE and SUSE Cloud - SUSE's OpenStack based cloud offering.

Moving to a common Chef cookbase base

So far, Crowbar comes with its own Chef cookbooks to setup OpenStack, a forked and heavily adapted version.

We'd like to have one common set of Chef cookbooks that are shared between Crowbar and administrators using Chef directly. As Rob Hirschfeld said: "The real victory comes when multiple deployments use the same trunk instead of forking".
The additional benefit here is that these cookbooks will then also work without Crowbar on e.g. openSUSE and SUSE Linux Enterprise.

Right now it looks like the awesome cookbooks done by AT&T and Rackspace (e.g. https://github.com/att-cloud/cookbook-keystone/blob/master/README.md) are the best option for going forward. But these cookbooks have two limitations for our usage: they do not handle openSUSE and SUSE Linux Enterprise and are not ported for Grizzly yet. So, this gives us the next tasks:

Enhance existing Chef cookbooks to know about openSUSE and SUSE - and for Grizzly

We're enhancing these cookbooks now so that they support OpenStack Grizzly and we're also adding support for servers running openSUSE and SUSE Linux Enterprise.

Once the cookbooks are usuable on their own, they can be integrated into Crowbar.

Integrate the Chef cookbooks into Crowbar

To use the cookbooks from Crowbar, Crowbar needs to pass parameters to
them. This concept is called "Attribute Injection" and Judd Maltin has explained this in detail in a great blog post.

Crowbar 2 and Chef / Puppet

Of interest to some might be that in the coming Crowbar 2, the Chef usage has been hidden behind an extra layer called "Jig". Jig was introduced to overcome some design limitations of Crowbar, the extra abstraction also gives a more flexible framework. Now other configuration management options can be added besides Chef. Puppet is one framework that the Crowbar team would like to support as backend and this work is currently postponed after the initial Crowbar 2 release.