VM template assembly details: Step 2/3 - Add layered SW and template internals
By Gabor Puhalla on Jul 27, 2009
This is the fifth entry in a series that's objective is to share our experience with building VM templates. Rather then describing a general approach or process, we are sharing our experience through the specific example of building the Sun Glassfish Web Space Server 10 VM Template that we announced in June this year.
Let me avoid spending time on step 2: adding layered software. The objective of this step is to install and configure the actual middleware and/or application content to the VM template. This is a step that is specific to the software that you want to expose and the way you want to expose it. There wouldn't be much interesting in me describing one specific set of products and product configurations.
Here is a list of aspects that you should consider, when building your VM template internals. You chose your sub-set dependently on your goals. You may need all of these for a production-ready template, a few of these for an evaluation-ready template and perhaps something in between for a developer oriented template: 1. Out-of-the-box experience, 2. License experience, 3. Upgrade capability, 4. Monitoring, 5. Supportability
1. Out-of-the-box experience
- Start-up experience: The user of the VM template needs essential information that helps to kick-start the usage of the template. What's included in the image, where to start, what are the user credentials are examples of the info that's needed to start the usage. As an example, see the basic CLI user experience that we integrated to the Sun Glassfish Web Space Server 10 VM Template, which was achieved by integrating a few OpenSolaris commands with SMF.
- Initial configuration wizard: It can simplify the start-up experience greatly, if you can support the user in configuring the VM template through the initial start-up. Hostname, IP address, user credentials are the basic parameters to set. You could check-out the JumpBox experience to see, how it may look like. The most tricky part of it is that some of the middleware products and applications don't allow an automated way of (re)configuring these parameters, which may leave you with no choice, but to hard code some of these values or to let the user to configure all of them in difficult ways.
A nice GUI interface can enhance your start-up experience, especially if your VM template intents presenting a GUI based product. It represented a next level of the start-up experience in the Web Space Server 10 VM Template too. We introduced a HTML page to provide pointers to the Web Space Server portal, to administration interfaces of underlying components and to the license.
The virtualization software that you use may provide further means of enhancing the start-up experience. You could check out the OVF import wizard of VirtualBox to see, what I'm talking about.
2. License experience
Legal implications is an aspect that VM template builders tend to forget about. A VM template developer needs to realize that all closed source, open source, commercial or free products have their license terms. Developers should make sure that their deliveries comply with the license terms of individual pieces that they integrate and that they display an appropriate license too. Check out the CLI welcome messages in the console or the link in the bottom right corner of the HTML start-up page to see the way we integrated the licensing experience to the Web Space Server 10 VM Template. I should note that these are not the only places, where you will meet it. You will experience it through the download process too.
3. Upgrade capability
Should you be building an evaluation oriented VM template, you might want to skip this one. You will not be able to avoid it for production though. Your customers will want to update their images sooner or later and you will not want to limit them compared to capabilities that they have on hardware platforms. Using an OS that allows adding specific new packages dynamically to the system is key for a successful implementation. As an example, the Image Packaging System of OpenSolaris can provide this comfort. Including additional tooling (e.g. the OpenSolaris Update Manager) can make the update experience even moer user friendly - see its screenshot below.
Again a feature that you may skip for your evaluation oriented templates. You will, however, most likely need it for your production VM templates. It depends on your user base and applications that you offer, what level of monitoring (network, hardware, VM, OS or application level) you may need or want to integrate to your template.
Remote and secure access to the VM template is likely going to be critical for you to be able to support an application deployed on a VM template. The ability to troubleshoot or debug your issues or configure your image are the others. Hence, you should consider integrating SSH (or other implementation of secure communication protocols) and debugging or tracing tools like DTrace of OpenSolaris is for your production oriented VM templates. You can consider integrating the Webmin interface to help web based administration of the OS and layered software. We leveraged these in building the Web Space Server 10 VM Template.
BTW, Brian Leonard summarized the out-of-the-box experience of the Web Space Server 10 VM Template nicely on the Observatory blog from a user's point of view. Getting this type of specific feedback about the user experience is a great value. Developers tend to overlook issues that may bother the user at times. Establishing a link with your users can help improving your VM template internals, which is also true for development of any type of software product or software distribution, not only VM tempaltes and their internals.
Find the next entry in the series here.