For months I’ve asked people working with puppet modules on a daily basis for a HOWTO that I could follow to setup a new cluster with the Grizzly OpenStack release. Such a HOWTO is not needed for people who develop the modules or deploy OpenStack for a living. It is however very helpful for the casual system administrator willing to get it running in a few hours, all by herself/himself.
The packstack seems to be exactly that : a walkthru of a well tested procedure that anyone with a basic understanding of what OpenStack is can rely on. It requires an RPM based distribution and this may be a significant effort for someone used to DEB based operating systems.
For Ubuntu users, the kickstack project was started in summer 2013 and targets hands on sessions, with the declared goal to make it easy for people new to both OpenStack and puppet. Later on, it inspired Dan Bode to use a new approach based on dependency injection to implement openstack-installer for Cisco.
The proposed HOWTO uses openstack-installer to deploy OpenStack against an existing Ceph cluster and provides:
- nova ( kvm )
- quantum ( openvswitch + gre )
- cinder ( Ceph backend )
- glance ( Ceph backend )
Running the HOWTO
The HOWTO was written October 17th, 2013. It was tried and fixed a few times to get it right. It is meant to be followed sequentially to implement the proposed use case. It does not describe any variation, nor does it explain how to debug a problem, should there be one. The recommended procedure is to start again from scratch.
Developping the HOWTO
openstack-installer can be tested on a single machine to get a baseline of how things are expected to work. It is helpful when stumbling into a problem on bare metal : is it because a mistake was done ? Or is it because a bug was found in openstack-installer ?
Once the test environment is available, the bare metal machines can be installed with Ubuntu precise. The kernel must be 3.2 and not be updated to 3.8 because the openvswitch kernel module will fail to compile.
Each machine must have two network interfaces. If they are not connected on a LAN, virtual interfaces can be created using the l2mesh puppet module.
Regarding Ceph, the simplest option is to create a test cluster. An alternative is to follow the quick start ceph-deploy guide. In both cases cephx is disabled to simplify the deployment.
It will eventually be easier to use a puppet module but the development is currently fragmented and not trivial to re-use.
Using puppet scenario compile_all role_name helps figure out what parameters are set by scenario_node_terminus.
As of today the master branch of openstack-installer targets Grizzly but this is likely to change when Havana is released. The changes that were made while preparing this post are listed here for the record but are now upstream: