Building Appliances with SUSE Studio
REVIEW: SUSE Studio Is a Boon for Organizations Using Novell's Linux Distros
SUSE Studio is a Web-based service for creating custom operating system and application bundles-also known as software appliances-based on Novell's family of SUSE Linux-based operating systems.
The free service, which recently concluded its limited beta period and is now broadly accessible, is part of Novell's SUSE Appliance Program-an initiative intended to streamline product delivery and maintenance for ISVs by enabling them to bundle their wares with everything required for direct deployment to virtual, physical or cloud-based infrastructure.
However, SUSE Studio could prove very useful for any individual or organization that uses Novell's Linux distributions. That's because while Novell's Linux offerings include an assortment of typical roles that can be selected at install time-such as those for installing a file server or Web server, or for setting up a GNOME or KDE desktop-those default options offer a relatively narrow range of customization.
Taking advantage of the full breadth of software component and configuration options available to SUSE Linux, or any other popular Linux distribution, requires post-install tweaks such as registering new software repositories, uncovering application dependencies and modifying various configuration files.
During my tests of SUSE Studio, I was able to carry out most of these customization tasks before ever booting into my custom Linux images using the service's excellent Web interface. In particular, I found that SUSE Studio significantly streamlined the task of locating applications or application versions not available in the default SUSE repositories through integration with the openSUSE Build Service.
Build Service enables users to create packages for various Linux distributions from source code, much like the Personal Package Archives service for Ubuntu Linux. When I couldn't find a particular package in the default repositories, SUSE Studio offered to search in all compatible Build Service repositories.
After setting those pre-boot customizations, I could call on SUSE Studio's "test drive" feature to boot up and log into my custom images before downloading and running them on my own hardware. I was also impressed to find that I could pull up a list of any files I modified during my test drive, and add those changes to the appliance image to be applied after another build operation.
SUSE Studio isn't the first tool or service to take on Linux-based software appliance creation. For instance, the rBuilder 5.2 product from rPath that I recently reviewed has been around for a few years now, and takes on a broader set of appliance management and deployment tasks than does SUSE Studio.
For example, SUSE Studio doesn't match the breadth of Linux distribution support of rBuilder 5.2. What's more, Novell's new service supports fewer virtualization and cloud computing services as targets for deployment, and currently offers no facilities for directly launching or terminating the virtual instances it creates.
With that said, SUSE Studio handles appliance creation tasks better, by far, than any such tool I've tested.
Building Appliances with SUSE Studio
Building Appliances with SUSE Studio
The first step to building a software appliance with SUSE Studio involves registering for and logging into the service. (SUSE Studio supports OpenID authentication.) If you have an existing account at Novell's Website, those credentials will do nicely. For my tests, I stuck with the same ID I use to log into the openSUSE Build Service.
Once logged into SUSE Studio, you begin building a new appliance by selecting a base distribution and template. As base distribution options, SUSE Studio offers up the free and community-supported openSUSE 11.1, alongside two versions of the Novell-supported SUSE Linux Enterprise. I could choose from a variety of system templates for each distribution option. On the same page of the interface, I selected either the 32-bit x86 or 64-bit x86-64 processor architecture for my appliance.
One of the first appliances I set out to build was a bare-bones graphical desktop with a handful of productivity applications-e-mail, note taking and task management-that I could run from a USB drive via VMware Player or VirtualBox to keep my key productivity applications available from multiple machines. I chose the Minimal X template of openSUSE 11.1 and clicked ahead to start adding software to my test appliance.
SUSE Studio presented me with the repositories and packages that came with my base template selection. From there, I could begin adding or removing software packages and software package sources from my appliance project.
It wasn't long before I found that some of the applications I wished to add weren't available in the stock openSUSE repositories, but it was easy to search a list of Build Service repositories, by package name, to find and add the ones that contained most of the applications I needed.
The repository listings that my searches pulled up included popularity ratings, as well as links to project pages at the Build Service where I could see the names of the project developers. However, I would like to see more information provided about where the packages come from, to help me decide whether to rely on them.
In addition to connecting existing repositories to my project, I could quickly populate a new repository of my own by uploading or linking to RPMs or sets of RPMs. This came in handy because, for some reason, I couldn't get SUSE Studio to register my addition of the Mozilla Beta channel from the Build Service. I worked around this kink by uploading the package I needed through the RPM upload tool.
For applications without a ready RPM package, I could use the Build Service to create a package. SUSE Studio could benefit from tighter integration with the Build Service-it would be helpful, for instance, to be able to create new packages from within the Studio.
Novell's SUSE Linux distributions feature very good dependency-resolution logic and tools-both of which surface in SUSE Studio-that make clear the relationships between software components.
I gave these dependency-resolving tools a run-through when I sought to "ban" the IceWM window manager package from my appliance.
When I banned IceWM from my project, an error message appeared in the interface's left-hand sidebar. Clicking the More link beneath the error message called forth a handful of operations that would resolve the conflict.
I could, for example, choose to add the package back to my appliance, or I could remove the package that required IceWM-in this case, the tool used to configure the X server upon first booting the appliance, Sax2. When I tried to resolve my IceWM conflict by removing the Sax2 package, SUSE Studio warned me that the removal would prevent my appliance from correctly configuring its X server.
In addition to addressing package dependency issues by adding or subtracting packages, SUSE Studio offered, in certain cases, to resolve conflicts by adding new repositories. Later in the appliance creation process-after I'd set my image type to VMware-SUSE Studio spawned another left-hand sidebar message, this time suggesting that I add the VMware tools package to my appliance.
Once I was satisfied with my software selections, I moved on to set basic configuration settings, such as those for time zone, networking and users. I could also make some adjustments to the appearance of my appliance, tack multiple EULAs onto my appliance and single out applications to launch upon appliance log-in.
As with any tool for creating virtual machine images, SUSE Studio provided an option for setting RAM and storage sizes for images destined for deployment on Xen or VMware hosts. Moving forward, I would like to see the service add more configuration options, including a tool for setting systems up with encrypted partitions or other advanced storage settings.
If the software selection and basic configuration options aren't enough to arrive at the sort of appliance you wish-and, for complicated appliances, they seldom will be-SUSE Studio provides facilities for adding post-build and boot-time scripts to its appliances, and for populating appliances with archives or single files.
SUSE Studio will produce appliance images in raw disk image, Live CD/DVD iso, VMware and Xen formats. According to the SUSE Studio team, support for creating images in Amazon's EC2 ami format, and for injecting these images into the Amazon cloud, is planned.
With my software selections and settings in place, it was time to kick off a build of my appliance. I could maintain multiple builds of my appliance by typing in new version numbers, and I could create images in different formats by choosing the format I wanted from a drop-down menu and hitting the Build button.
Once my appliance was built, I could download and run it on my local hardware. I found that using a download manager such as Aria2 significantly increased the speed of my image downloads.
One of my favorite features of SUSE Studio is the Test Drive option, which saved me even more download time by enabling me to check out my image while it remained on the SUSE Studio servers. For each test drive session, I had 60 minutes to test out my image before downloading the file, kicking off a new test drive, or tweaking the image further and rebuilding.
My image booted up on the SUSE Studio servers, and I could interact with it through a graphical console that appeared in a new window. I could also connect to my remote image via SSH or HTTP, but I could not initiate outbound connections from the test drive image.
I found the Test Drive feature very useful because creating a software appliance can require many more tweak-build-run circuits than you might expect, and noticing needed changes during the test drive phase saves image download time.
During my Test Drive, I could pull up a list of the files that I'd modified during the test run and choose to add these files to the appliance via the overlay option. From the modified files list, I could pull up a diff to see just what had changed.
In addition to calling on SUSE Studio to build my image for me, and subsequently downloading it, I could save on download time by fetching a much smaller appliance source package from SUSE Studio for local building with Novell's open-source Kiwi image build tool.
Executive Editor Jason Brooks can be reached at firstname.lastname@example.org.