Overview of Building an Appliance

The following are the steps which an appliance builder would need to go through in order to make an appliance available for download. The scenario assumes a user who can do basic scripting, and who has knowledge of how to install the application in question.

1. Package the Application

The application should be packaged as an RPM which adheres to the File System Hierarchy. This will allow the appliance to be built, deployed, and updated with the existing tool set. Resources for building RPMs include:

This RPM should be put into a custom yum repository which is used for appliance creation. A yum repository is created using createrepo.

2. Create the Appliance Recipe

The appliance recipe is defined within the configuration engine Thin Crust configuration engine. It automates how the appliance should be configured once the appliance is started.

This recipe is packaged up as an RPM, and should include dependencies on the rpm created above, and all other RPMs which the appliance requires to run. This recipe rpm should be in the same yum repo as above.

3. Build the Appliance

Now that the recipe and application are contained within rpms, the next step is to build the appliance. The appliance id described as a kickstart file which lists the packages to be included. The Thin Crust appliance creation tool takes as input a kickstart and generates an image file which can be utilized by the Xen or KVM.

The Appliance Creation Tool can also take as input a whitelist. This whitelists and blacklists are ways of deleting files which are delivered by an RPM. These are used when size is of paramount importance, since the resulting image has "broken" rpm and therefore can not be updated using standard tools such as yum or up2date.

4. Convert the Appliance

The power of an appliance is the ability to deploy it to many infrastructures. The final step in Appliance Creation is to create versions which can run on other popular Virtualized environments. This can include VMWare and Amazons EC2. The Thin Crust converison tools allow you to convert the appliance defined in step 3 to images which are compatible with these environments.