Home | Quick Start | Host Pool Deployment | Image Build | Artifacts | Features | Parameters
This Azure Virtual Desktop (AVD) solution will deploy fully operational AVD hostpool(s) to an Azure subscription.
The deployment utilizes the Cloud Adoption Framework naming conventions and organizes resources and resource groups in accordance with several available parameters:
-
Persona Identifier (identifier): This parameter is used to uniquely identify the persona of the host pool(s). Each persona, or each group of users with distinct business functions and technical requirements, would require a specific host-pool configuration and thus we use the persona term to identify the host pool. For more information about personas see User Personas | AVD Cloud Adoption Framework.
-
Host Pool Index (index): This optional parameter is used when we must shard the unique persona across multiple host pools. For more information, see Sharding Pattern.
-
Name Convention Reversed (nameConvResTypeAtEnd): This bolean parameter, which is by default 'false', will move the resource type abbreviation to the end of the resource names effectively reversing the CAF naming standard.
The diagram below highlights how the resource groups are created based on the parameters.
graph TB
subgraph Tenant["Azure Tenant"]
subgraph Region1["USGovVirginia<br/>"]
direction TB
MON1[Monitoring<br/>rg-avd-monitoring-va<br/>Log Analytics, DCR, DCE]
MGT1[Management<br/>rg-avd-management-va<br/>Key Vault, App Service Plan]
CP1[Control Plane<br/>rg-avd-control-plane-va<br/>Workspace, App Groups, Host Pools]
subgraph HP1["Host Pool 1 (Identifier: hr, Index: 01)"]
direction LR
HOSTS1[Hosts<br/>rg-hr-01-hosts-va<br/>VMs, Backup, Encryption]
STORAGE1[Storage<br/>rg-hr-01-storage-va<br/>Storage Accounts, NetApp, Functions]
end
subgraph HP2["Host Pool 2 (Identifier: hr, Index: 02)"]
direction LR
HOSTS2[Hosts<br/>rg-hr-02-hosts-va<br/>VMs, Backup, Encryption]
STORAGE2[Storage<br/>rg-hr-02-storage-va<br/>Storage Accounts, NetApp, Functions]
end
HP1 -.located in.-> CP1
HP2 -.located in.-> CP1
CP1 -.diagnostics.-> MON1
HOSTS1 -.logs and performance data.-> MON1
HOSTS2 -.logs and performance data.-> MON1
MGT1 -.customer managed keys.-> HOSTS1
MGT1 -.customer managed keys.-> HOSTS2
MGT1 -.customer managed keys.-> STORAGE1
MGT1 -.customer managed keys.-> STORAGE2
STORAGE1 -.diagnostics.-> MON1
STORAGE2 -.diagnostics.-> MON1
end
subgraph Region2["USGovTexas<br/>"]
direction TB
MON2[Monitoring<br/>rg-avd-monitoring-tx<br/>Log Analytics, DCR, DCE]
MGT2[Management<br/>rg-avd-management-tx<br/>Key Vault, App Service Plan]
CP2[Control Plane<br/>rg-avd-control-plane-tx<br/>Workspace, App Groups, Host Pools]
subgraph HP3["Host Pool 3 (Identifier: finance, Index: 01)"]
direction LR
HOSTS3[Hosts<br/>rg-finance-01-hosts-tx<br/>VMs, Backup, Encryption]
STORAGE3[Storage<br/>rg-finance-01-storage-tx<br/>Storage Accounts, NetApp, Functions]
end
HP3 -.located in.-> CP2
CP2 -.diagnostics.-> MON2
HOSTS3 -.logs and performance data.-> MON2
MGT2 -.customer managed keys.-> HOSTS3
MGT2 -.customer managed keys.-> STORAGE3
STORAGE3 -.diagnostics.-> MON2
end
end
%% Define styles for different resource group types
classDef globalFeed fill:#4fc3f7,stroke:#0288d1,stroke-width:3px,color:#000
classDef monitoring fill:#ffb74d,stroke:#f57c00,stroke-width:3px,color:#000
classDef management fill:#ba68c8,stroke:#7b1fa2,stroke-width:3px,color:#fff
classDef controlPlane fill:#81c784,stroke:#388e3c,stroke-width:3px,color:#000
classDef hosts fill:#e57373,stroke:#c62828,stroke-width:3px,color:#000
classDef storage fill:#aed581,stroke:#689f38,stroke-width:3px,color:#000
classDef hostPool fill:#64b5f6,stroke:#1976d2,stroke-width:3px,color:#000
classDef region fill:#e0e0e0,stroke:#616161,stroke-width:3px,color:#000
classDef tenant fill:#f5f5f5,stroke:#424242,stroke-width:4px,color:#000
%% Apply styles to nodes
class GF globalFeed
class MON1,MON2 monitoring
class MGT1,MGT2 management
class CP1,CP2 controlPlane
class HOSTS1,HOSTS2,HOSTS3 hosts
class STORAGE1,STORAGE2,STORAGE3 storage
class HP1,HP2,HP3 hostPool
class Region1,Region2 region
class Tenant tenant
%% Style connectors - make them darker and more visible
linkStyle default stroke:#333,stroke-width:2px,color:#000
The diagram illustrates the following resource group distribution. In the table below, the example names are utilizing the following parameter values:
- identifier: 'hr'
- index: '01', '02'
- locationVirtualMachines (determined by virtualMachineSubnetResourceId location): 'USGovVirginia'
- locationControlPlane: 'USGovVirginia'
- nameConvResTypeAtEnd: false
| Purpose | Resources | Example Name | Notes |
|---|---|---|---|
| Global Feed | global feed workspace | rg-avd-global-feed | One per Tenant |
| Monitoring | Log Analytics Workspace Data Collection Rules Data Collection Endpoint |
rg-avd-monitoring-va | One per region |
| Management | key vault(s) app service plan |
rg-avd-management-va | One per region |
| Control Plane | feed workspace application groups hostpools scaling plans |
rg-avd-control-plane-va | One per region |
| Hosts | virtual machines recovery service vault disk encryption set key vault |
rg-hr-01-hosts-va rg-hr-02-hosts-va |
One per identifier or per index (if specified) |
| Storage | NetApp Storage Accounts Storage Account(s) function app key vault(s) |
rg-hr-01-storage-va rg-hr-02-storage-va |
One per identifier or per index (if specified) |
The code is idempotent, allowing you to scale storage and sessions hosts, but the core management resources will persist and update for any subsequent deployments. Some of those resources are the host pool, application group, and log analytics workspace.
Both a personal or pooled host pool can be deployed with this solution. Either option will deploy a desktop application group with a role assignment. You can also deploy the required resources and configurations to fully enable FSLogix. This solution also automates many of the features that are usually enabled manually after deploying an AVD host pool.