I’m a big fan of standardization. I’m a big fan of using non-persistent images too. They just make my life so much easier.
The only issue I see with them, anyway, is the need to provide to the user several configuration and customization possibilities.
It could be something trivial such as having your own screen saver, or a special keyboard and language configuration, or connecting the software inside the image to certain specific devices, disks, or additional external software.
I do not even want to think about having a master image for each of the possible situations. This would simply make my image catalog so uselessly big that it would shortly become unmanageable. I would even not mention all the possible issues I could have when I need to upgrade a master image, I simply need to do it for all the customized master images derived from that one.
I will lose all the advantages of dealing with a cloud of non-persistent images. I’m only sliding the issue from the virtual machine instances to the master images themselves.
A possible solution might to have the user reconfigure his or her VM every time it starts: unbearable…especially if you think about complex software stacks!
I found an interesting solution included in IBM SmartCloud Provisioning. What you can do with that is to allow the user to specify a set of configuration parameters at image deployment time so that the image c be automatically configured accordingly at boot time.
The idea under the cover is pretty easy: the image builder inserts in the master image a script that is run at system boot.
The script is supposed to be able to parse the information passed by the user at VM deployment time and takes the needed action such as reconfiguring the operating system or a specific software.
All information inserted by the user in the web user interface is saved on the compute node and then injected back into the deployed instance and processed.
If you are worried that the users might be reluctant to type in information in a specific format (a possibility is to let the user deal with free text, but then you’ll get mad in parsing it) and that the process could be error-prone, consider using Image Construction and Composition Tool (an optionally installable component in IBM SmartCloud Provisioning). The web UI gets automatically modified to show the user the parameters you might want that user to add.
Of course if you are a lazy user and you do not want to type in information or remember parameters (especially if you do it frequently), you can type your input parameters in a file and use the command line to deploy the image, passing the file as one of the deployment parameters.
For further information about IBM SmartCloud Provisioning and Image Construction and Composition Tool, see IBM SmartCloud Provisioning information center (http://publib.boulder.ibm.com/infocenter/tivihelp/v48r1/index.jsp?topic=%2Fcom.ibm.hslt.doc_1.1.2%2Fwelcome.html)