The VMware Custom Specification Manager is a tool we can use to create answer files for unattended deployments of Virtual Machines. This tool is available in the vCenter Web Client. It allows the creation of such files for both Windows and Linux deployments from a VM Template.
It is a pretty handy tool and covers all the steps required to install and pre-configure multiple virtual machines at the same time. Let’s think about deploying a new environment to SharePoint or Exchange. Surely we need to deploy multiple instances of Windows operating system. And surely all these instances can share the same VM template which already includes the latest patches and pre-configured applications.
Same applies also to Linux based operating systems. Again the concept is the same. Create a VM template and a VMware Custom Specification file for unattended deployment of multiple virtual machines.
This article in particular focuses on the Windows OS. In a separate article we’ll cover the basics for Linux based ones.
What are the configuration settings we can prepare with the unattended file? If we are familiar with the Windows SysPrep utility well these are exactly the same. In fact VMware vCenter in this case it is using the same technology. Once the VM Template is available and the unattended file created it is just a matter of cloning the VM Template into a new virtual machine and inject the VMware Custom Specification file. VMware vCenter in this case will automate all operations.
What is the alternative to this system to quickly and efficiently deploy multiple virtual machines? Again in the case of Microsoft Windows operating systems the SysPrep utility is our friend. It can be executed on the fly from the machine we want to use as a template or it can just follow the instructions as per sysprep.inf file. Of course this file needs to be created upfront.
In the first case OS deployment tools will take an image of the Template Machine and deploy this one to new Hardware. Upon the first boot the sysprep utility will kick in and proceed with the operating system customization.
In the latter the new hardware will download a PXE Image from a Network Server including the OS Image and apply the settings as per sysprep.inf instructions. Very handy approach for massive operating system deployments over the network. Very popular solutions using this technology include Microsoft WDS and Microsoft SCCM.
In both case this requires an extra network infrastructure to accommodate such scenarios.
The good news is when using VMware vCenter all we need to do is to just create a VM Template of our Guest OS and the pertinent VMware Custom Specification file.
Let’s take a look at the steps to create one for Microsoft Windows Server 2016.
Use VMware Custom Specification Manager for a Windows VM template
From the main Home page in vCenter Web Client in the Monitoring section we can start the Customization Specification Manager tool. This tool will allow us to create the unattended file for the customization of the new Guest OS based on the VM template.
Firs thing would be to define the target operating system if Window or Linux. In this case we’ll go a Windows one. In addition it is also possible to import an existing sysprep answer file. Let’s provide a name and a quick description of what’s included as part of the customization process. This shows in the main screen and it’s easy to quickly find the right customization to use.
As a required field we need to provide the Name and Organization in the Registration Information.
As part of the initialization process we can define automatically certain values. Hostname is one of them. We can let vCenter to automatically control the hostname based on a naming convention or simply provide a new one at each instance. In my case I will go for this option instead as not currently deploying a massive number of VMs!
We can define the Product Identification (PID). Alternatively the OS will start in a trial mode with the option to activate at a later stage. For this option to work it is necessary that the Network in the newly deployed virtual machine works as well. Failing this the OS will start in trial mode.
Also it is crucial to make sure the VM Template is already equipped with the necessary drivers. For Windows based OSes probably the e1000e and VMXNET3 are the best candidates. Having the VMware tools installed in the VM Template ensures these devices are operated correctly.
Let’s specify the password for the local Administrator user. I would also recommend to automatically logon the Administrator for the first time just to complete the execution of software installation after first boot.
Let’s choose the appropriate Time Zone. Also when joining the Domain the Guest OS will get synchronized with main Domain Controller.
In “Run-Once” if desired we can add the execution of 3rd-parties applications. They will be automatically installed on the first boot. So things like a custom notepad, an Antivirus a PDF Reader and other applications that are used on a day to day basis.
For each one of them we need to specify the location and the parameters for a silent install. Typically they are included in the help file of the main setup file.
In this step we can pre-define the network settings also on different vmnics might be available to the virtual machine. This includes IPv4, IPv6 and DNS settings.
At this point we can specify if we want the sysprep utility to automatically join the virtual machine to the domain. For modern versions of the Windows Operating System it looks like it works best with FQDN and user@domainname format. It is just a case of trial and error. This is useful also to further test the inherited GPOs upon Domain join.
In the last step before finalizing the wizard there is an important setting. By checking the “Generate New Security ID (SID)” we are making sure no users duplicates will exist on different virtual machines. As this can cause issues when executing services. In addition it is also resetting all the security settings, including the ones in the Windows registry. As a such the machine is sealed a.d ready to be used at the next boot.
And before concluding the wizard a quick summary showing the main settings before saving them in the VMware Custom Specification file.
At this point we are ready to proceed with the next step. Deploy a new virtual machine from a VM Template and apply the VMware Custom Specification file as per per next article.