I'm a big fan of standardization. I'm a big fan of using non-persistent images as well. They just make my life so much easier.
The only issue I see with them is the need anyway to provide to the end user some configuration and customization possibilities.
It could be something trivial like having your own screen saver, or a special keyboard and language configuration or it could be
something like connecting the softwares inside the image to some specific devices, disks or additional, external software.
I even do not want to think about having a master image for each of the possible situation. This would simply make my image catalog
so uselessly big that it would shortly become unmaneageable. I would even not mention all the possible issues I could have when I
need to upgrade a master image, I just need to do it for all the customized masater images derived from that one.
I will loose 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 would be to have the user reconfigure his VM everytime he starts it: unbereable! ...especially if you think about
complex software stacks.
I found interesting the solution included into IBM SmartCloud Provisioning. What you can do with that is to allow the end user to specify
a set of configuration parameters at image deployment time so that the image will 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 end user at VM deployment time and takes the needed action like
reconfiguring the operating system or a specific software.
All information inserted by the end user in the web user interface are saved on the compute node and then injected back into the deployed instance
If you are worried about the fact the end users might be reluctant to type in information in a specific format (a possibility is to let him
deal with free text, but then you'll get mad in parsing it) and that the process could be error prone, consider that if you use Image
Construction and Composition Tool (an optionally installable component inside IBM SmartCloud
Provisioning), the web UI gets automatically modified to show the end user the parameters you may want him to put in.
Of course if you are a lazy end user and you do not want to type in information or remember them (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.