14: Master VM and Pool

For VDI we really want VMXNET3 and ParaVirtual to ensure performance and I always reserve all the virtual machines memory.  If we start to swap then performance will be terrible and allowing a .vswp file to be created it consumes the amount of disk space equal to the RAM size.  2GB doesn’t sound much but for 100 machines that’s a lot of expensive flash disk! Create a basic VM

$vm = Get-ResourcePool -Location VDI | New-VM -Name "VDI00" -DiskGB 30 -MemoryGB 2 -NumCpu 2 -NetworkName "VM Network" -GuestId windows8Guest
Get-NetworkAdapter $vm | Set-NetworkAdapter -Type Vmxnet3
Get-ScsiController $vm | Set-ScsiController -Type ParaVirtual
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.memoryReservationLockedToMax = $true
$vm.ExtensionData.ReconfigVM_Task($spec)
start-vm $vm | Open-VMConsoleWindow

Network boot the VM to MDT and run through the installation

Unfortunately we don’t have a KMS server in our lab environment because that requires an actual license key plus 25+ clients to make it active.  View Composer forces Windows to contact the KMS server during the QuickPrep stage of building the image which means that the machines in the pool won’t build properly.  There is a VMware Support KB which shows how to skip the activation stage by setting this registry key:

reg add HKLM\SYSTEM\CurrentControlSet\Services\vmware-viewcomposer-ga /v SkipLicenseActivation /t reg_dword /d 1

Release the DHCP IP Address and shutdown the machine

Take a snapshot of the VM

get-vm -Name VDI00 | New-Snapshot -Name "Test"

Open https://vcs01.mylab.local and signed in as administrator

Under Inventory, Catalog click on Desktop Pools. From the buttons along the top click Add…

The Add Desktop Pool wizard massive.  From the top we want a Automated Desktop Pool.  Manual Pools are VM which have been individually built or converted from physical or of course dedicated physical machines with Teradici Remote Workstation cards.

image

On our Automated Pool we will use floating assignment this is really the preferred option as it has much greater resilience as any user can use any machine.  In a dedicated pool users are allocated their machine and can only use that one which isn’t good it isn’t not working for any reason!  The only down side is that ThinApps are allocated per pool for a floating pool but per machine on a dedicated one

image

We want linked cloned – I can’t think why anyone would want full machines

image

Create an ID typically the name of a function or business unit.  Perhaps Finance?

image

These settings are mostly self explanatory.  Remote power policy is whether the VMs will be powered off when not in use.  Default display protocol should be set to PCoIP and allow users to choose should be set to No.  3D Renderer should be disabled unless you have some kind of shared GPU such as an NVidia Grid.  Set the number and maximum resolution of the screens.  Setting this changes the video memory allocated to each VM.  HTML Access is as it says, it enabled HTML access but the HTML access part of the agent must be installed!

image

Set the machine naming pattern.  I’ve named by master VDI00 and VDI{n:fixed=2} will name the machines VDI01, VDI02 etc.  Set the number of machines in the pool and the provisioning settings all pretty self-explanatory

image

You can redirect the user profile folder to a dedicated VMDK which will be deleted when the user logs off, or you can set a GPO to delete the locally cached user profiles.

image

We aren’t using vSAN

image

Select the master VM that we want to clone for our pool

image

Select the snapshot.  Over time there will be more snapshots as updates and changes are made to the master image

image

Store the VM in Site1 (no choice in this simple lab)

image

Select the VDI Cluster

image

And the VDI resource pool

image

Finally, select the VMFS volume that you are using.  Multiple volumes can be selected for load balancing.  I usually change the storage over commitment to unbounded as the default tend to leave lots of free space on the VMFS volume

image

Next

image

Nothing to select here as we didn’t enabled storage accelerator and we aren’t using NFS

image

Lastly select the domain and the AD container to put your VMs.  Typically this will need to be carefully picked to ensure that the correct GPOs are applied

image

Confirm the summary and tick the box to entitle users

image

Let’s entitle everyone who is a domain user.  Typically you’d have AD groups to govern which users to access to which pool.

image

Wait for the pool to build…

The connection server takes a clone of the master VM and names it replica-uuid and then creates the VMs which are linked to it.  The VMs are powered on and QuickPrep is run on them to set the machine name and join them to the domain.

Once complete the pool inventory should show that the machines are available and/or provisioned