Hi all, in the last weeks I experimented with ways to build preconfigured virtual appliances with Ubuntu. From the start i thought it would be best to use the existing packaging system so that it's as easy as possible to take a virtual machine and turn it into an appliance and so it would also be possible to distribute appliances through the widely known and tested package repositories.
But I found one problem: It is not enough to simply create a metapackage that pulls in the software you want to provide as dependencies and configure some parts with maintainer scripts. Since most server software asks its own configuration questions with debconf that you very likely want to replace with non-configurable default values and the scripts of the appliance package only run after all dependencies have been installed, you need to preseed your dependencies BEFORE you start the install of the appliance package. So I chose to write the two wrapper tools valist (lists all appliance packages in the repositories of the system) and vainstall (expects a seed file with the name of the appliance package in the same directory of the package mirror as the appliance package itself and applies it before calling apt-get install on the appliance package). In short the differences between an appliance package and regular package are as follows: - A va provides the virtual package virtual-appliance. This means that a VM can only be one kind of virtual appliance at a time and it provides a convenient way to find all virtual-appliance packages available in the package repositories known to a specific machine. - For every virtual-appliance there must be a seed file on the package server in the same directory where the deb file resides. If vainstall can't find it it will refuse to install the appliance package. For testing I built a simple appliance with the name mysql-dev-appliance that provides a MySQL appliance for developers which can be accessed with a mysql client on a remote machine and with phpmyadmin. I plan to build some more developer appliances like a PHP development for example, that allows to access the document root via SMB. The nice thing about developer appliances is that there is not much of a need for security and data backups. For building productive systems I would at least need to build some kind of web based backup and restore tool that can be adapted for each kind of appliance via a plugin mechanism and that allows to backup and restore the appliance specific application data. You can get my code from here: lp:~aheck/vmbuilder/appliances Hope you guys can give me some feedback on this approach for appliance building :) Best regards, Andreas _______________________________________________ Mailing list: https://launchpad.net/~vmbuilder Post to : [email protected] Unsubscribe : https://launchpad.net/~vmbuilder More help : https://help.launchpad.net/ListHelp

