The platform used to develop CloVR can be used to build custom images and other appliances. The platform is designed to save development time, encourage interoperability, and be flexible for new projects. The CloVR VM is built in VMware, VirtualBox, EC2, and raw disk image using Hudson to automate the build process. The build starts from a base Ubuntu 10.04 EC2 image and runs a series of recipes to create a bundled image. Current bundles are named skeleton, base, build, and standard. We are using shell scripts as recipes for simplicity and maximum flexibility. Recipes can be as simple as running apt-get install or multi-step installations including compilation, configuration, and execution of one or more pieces of software. The bundles and corresponding recipes currently used for CloVR are in version control.
The CloVR build bundle includes the Hudson build environment, recipes, and conversion scripts. It can be used to build new versions of CloVR or other appliances entirely.
The development platform overcomes some of the challenges involved with building a virtual appliance,
- Allow multiple developers to make updates and additions simultaneously
We’d like to treat the appliance as software and track changes from multiple developers. But developing a virtual appliance is different than traditional software because the appliance itself is a binary that is not maintained in version control. A nice solution to the problem is to use recipes that are applied to a base image during a build process. The recipes (and dependent configuration or system files) are maintained in version control. Developers can modify, extend, fork recipes to submit updates to the appliance or create custom appliances.
- Supports multiple virtualization platforms
The platform supports building a single image that is converted VMware, Virtualbox, Xen and Cloud formats, such as AMI. The conversions are automatically included in the build process freeing the developers from this complicated process. The support for non-cloud environments is useful for testing and also distributing a local version of the appliance that can run on a desktop or laptop.
- Saves development time
Developers can use a local VMware or Virtualbox image for new development and testing. New builds of the VM will include all recipe changes from the development team. The CloVR project runs a cron job that builds a new suite of images daily. The base image is validated on EC2 and Eucalyptus and new builds can also be automatically tested to save developers time debugging image and kernel issues.
- Encourages interoperability
By building from a common base image and sharing recipes, groups can develop in a common runtime environment.