Virtual Appliance support for vmbuilder

Registered by Chuck Short

Adding support to vmbuilder for building virtual appliances.

Blueprint information

Not started
Rick Clark
Needs approval
Series goal:
Milestone target:

Related branches



Discussion Topics
 - What changes are need to make vmbuilder appliance aware.
 - Can we make fine grain changes to make spefic changes to servers like apache when they are installed
 - If we do fine grain changes which servers should vmbuilder make changes to
 - Can we build appliances as metapackages (e.g. mediawiki-appliance.deb)? One problem with this approach is to preseed the debconf questions of the dependencies so that the user doesn't get bothered with unnecessary questions (none would be perfect). We could solve this problem maybe by defining a package with a preseeding maintainer script as a pre-depend or using no dependencies at all and installing all packages by calling apt-get from a maintainer script (not very elegant).
- What mechanisms can we provide for karmic to update the software on the appliance and backup and restore the appliance specific user data?
- Do we want to create a platform that allows software companies with web-based products to create their own virtual appliances they can ship to their customers? There could be appliances that allow to deploy PHP and Java web applications for example and that also come with preinstalled webapplications that allow the end customer to manage the machine and update the deployed vendor application to the newest version.

There are two different fields to discuss here:
- What is to do to create Appliances with a underlying Ubuntu OS? The aim of ubuntu is to provide a general OS for everyone with a broad spectrum of usage. An appliance is the mostly the opposite. One small system which is designed to provide one (or only a very few) specific functions. So we have the great underlying Ubuntu and need a simple and easy way to add the special function with a good basic configuration to act as the wished appliance. This could be done with the tasksel and stack concepts in Ubuntu. At the vmbuilder side we have already the option to install extra packages (and metapackages) during the build of the vm. The interactive configuration of the tasksel then should be restarted with the first boot scripts, so the end user get the chance to enter his specific setting. An other way could be to create extra appliance meta packages, which depends on the software and provide an special basic configuration which is build to act as an appliance.
- The other field of interest should be the format how the appliance will be distributed. One useful way are bootable images for ISO and USB (-> Another way could be OVF ( It's an open standard for packaging and distributing virtual-appliances. There is already an open implementation ( So what we need here is the integration of open-ovf in ubuntu and a vmbuilder hypervisor plugin for OVF.

======== UDS Discussion ==========

= vmbuilder and Virtual Appliances =

 * Requirements for vmbuilder to build Virtual Appliances.

 * Use debconf for asking questions.

 * Target Audience
  * ISV
   * For Cloud
   * Current Virt apps.
   * Live CD
    * Create a customized install CD.
    * Create an application trial Live CD.
    * CD that can do Live CD mode and have an install option.
   * Hardware appliance.
  * Others

 * Ask some questions up front.

 * Where to define setup questions.
  * Domain name
  * IP address
  * User accounts

 * How do you have configuration and data retention.
  * Configuration backup.

 * Allow access for outside support.
  * OpenVPN
  * Allows access through firewall configurations.
  * Add configuration option to vmbuilder.

 * OVF
  * Not compatible with GPL.
  * Determine a similar standard?

 * Need to access the appliance before setting up networking.

 * Enhancements to vmbuilder.
  * Have vmbuilder be able to create a config file from options.
  * Unattended upgrades for security updates.
   * Problem if update affects the third party software installed on the appliance.
   * Should we provide an archive tool for updates.
   * Will ISV do updates?
   * Add option to vmbuilder for security updates.
  * Add scripts directly to config file, or command to run.


Work Items