Due to the Covid-19 pandemic we are seeing a significant increase in working from home, as well as massive demand for new Windows Virtual Desktop host pools, where organisations are increasing the infrastructure foot print in order to support these additional users.


You may well be being asked to either deploy new WVD host pools or more likely expand host pools that you already have. 


We have a number of ways to deploy, expand and update WVD host pool, and this post simply brings those together into one place, to make it easy for you to make a choice of which one works best for you.


This lists them in terms of simplicity to deploy 

Deploying a new Host Pool

Method 1. The Azure Marketplace. 


For many this is the default method to deploy. In the Azure portal you just need to click on Add a Resource:

Search for Windows Virtual Desktop and the resulting search results will display, the Provision a host pool deployment option:

Click on this and then click on Create:

Enter all of the details for your deployment, i.e. WVD tenant, AD info.


Method 2. ARM template in Github


You can deploy a host pool by using the ARM template directly. It is stored in this github repo


Click the Deploy to Azure button:

Now you just need to answer the same questions as you did above.

But this allows you to call this template from any other mechanism that supports ARM templates.


Method 3. Infrastructure as Code – Terraform


If you prefer deploying infrastructure as code then the first option is to use Terraform. My colleague Stefan Georgiev from the WVD Product Group has created this video that walks you through end to end how to deploy a host pool using Terraform.

Method 4. Infrastructure as Code – Azure DevOps


You can also make use of Azure DevOps Pipelines to automate the deployment of a new host pool. This amongst other things is discussed in this article:


Expanding an existing host pool.


What about adding VM’s to an existing host pool? This may well be the main use case you are in during this phase of additional users working from home. This is a simple task and both Method 1 and 2 from above can be used to expand or add new VM’s to existing host pools as well as deploy new. 


When running them for a second time and referencing an existing host pool, there is logic in there that it will only deploy the required number of VM’s that is the difference between what is currently in the host pool and what you are asking. For example, if you have five VM’s in the host pool and you specify ten when running the template a second time, only five will be deployed.


Stefan again explains this in this video using the Azure Marketplace option:

Updating session hosts in a host pool



Finally, here are two options to update the session hosts in a host pool. This is if you have a need to deploy more software or patches into your golden image and want to replace all existing VM’s in that existing host pool with this new VM image.


Method 1. ARM template in Github


This ARM template stored in this Github repo will allow you to deploy new VM’s and either delete or deallocate the existing VM’s after sending users a message asking them to logoff.


This video explains that process:

Method 2. Infrastructure as Code – Azure DevOp


You can also use Azure DevOps Pipelines to automate the deployment of a new ession hosts to an existing host. This amongst other things is discussed in this article. This uses the same ARM template as above but does so from within a Azure DevOps release pipeline, fully automating this task for you.