Assume that you're in an organisation with numerous data centres, each with their own private clouds running on VMware vCenter 5.5. There are VMware templates for different Operating Systems, including Windows, Redhat Linux etc.
Lets assume there are two private clouds, C1 and C2. C1 was built a year ago and C2 only recently. Lets assume it runs Windows 2012. The base template was updated several times since C1 was built. For example, the .NET framework was updated from v4.0 to v4.5 and then to v4.5.1.
A virtual machine in C1 needs to be rebuilt. However, the software running in that virtual machine is not compatible with .NET v4.5 or v4.5.1. So the only template we have isn't compatible. We have to recreate the template, with an odd chance that some OS patch etc may be installed that causes a problem for the virtual machine.
So it seems that it should be a best practice to version templates. What is the best approach?
Here's what I tried:
- Create Snapshots before the template is updated. The VMware vSphere tools still consider it to be one template, so creating a virtual machine from snapshot "20131031 02:00" is a tad more involved.
- Duplicate the Template, so now we have "Windows Server 2012 (20131031)", "Windows Server 2012 (20130331)" and "Windows Server 2012 (20140601)". The tools support this well. We may quickly have a mess, with folks having no clue what is installed on what template.
- After a template is updated, export it. Only the latest template is available in VMware tools, but I can always restore an old version of the template when there is a problem.
Is there perhaps a more robust way of versioning VMware templates?