workload/terraform/modules/avd/poolremoteapp/remoteapp.tf (192 lines of code) (raw):
# Resource group name is output when execution plan is applied.
resource "azurerm_resource_group" "sh" {
name = var.rg_so
location = var.avdLocation
}
# Create AVD RAG workspace
resource "azurerm_virtual_desktop_workspace" "ragworkspace" {
name = var.ragworkspace
resource_group_name = azurerm_resource_group.sh.name
location = azurerm_resource_group.sh.location
friendly_name = "${var.prefix} Workspace"
description = "${var.prefix} Workspace"
}
# Create AVD RAG host pool
resource "azurerm_virtual_desktop_host_pool" "raghostpool" {
resource_group_name = azurerm_resource_group.sh.name
location = azurerm_resource_group.sh.location
name = "${var.raghostpool}-${substr(var.avdLocation, 0, 5)}-${var.prefix}-remoteapp-${count.index + 1}" //var.raghostpool
friendly_name = "${var.raghostpool}-${substr(var.avdLocation, 0, 5)}-${var.prefix}-remoteapp-${count.index + 1}" //var.raghostpool
validate_environment = true
custom_rdp_properties = "drivestoredirect:s:*;audiomode:i:0;videoplaybackmode:i:1;redirectclipboard:i:1;redirectprinters:i:1;devicestoredirect:s:*;redirectcomports:i:1;redirectsmartcards:i:1;usbdevicestoredirect:s:*;enablecredsspsupport:i:1;use multimon:i:1"
description = "${var.prefix} Pooled HostPool"
type = "Pooled"
maximum_sessions_allowed = 16
load_balancer_type = "DepthFirst" #[BreadthFirst DepthFirst]
}
# Create AVD RAAG
resource "azurerm_virtual_desktop_application_group" "raag" {
resource_group_name = azurerm_resource_group.sh.name
host_pool_id = azurerm_virtual_desktop_host_pool.raghostpool.id
location = azurerm_resource_group.sh.location
type = "RemoteApp"
name = var.rag
friendly_name = "RemoteAppGroup"
description = "AVD application group"
depends_on = [azurerm_virtual_desktop_host_pool.raghostpool, azurerm_virtual_desktop_workspace.ragworkspace]
}
# Associate Workspace and RAAG
resource "azurerm_virtual_desktop_workspace_application_group_association" "ws-raag" {
application_group_id = azurerm_virtual_desktop_application_group.raag.id
workspace_id = azurerm_virtual_desktop_workspace.ragworkspace.id
}
# Get Log Analytics Workspace data
data "azurerm_log_analytics_workspace" "lawksp" {
name = lower(replace("law-avd-${var.prefix}", "-", ""))
resource_group_name = azurerm_resource_group.sh.name
depends_on = [
azurerm_virtual_desktop_workspace.ragworkspace,
azurerm_virtual_desktop_host_pool.raghostpool,
azurerm_virtual_desktop_application_group.raag,
azurerm_virtual_desktop_workspace_application_group_association.ws-raag,
data.azurerm_log_analytics_workspace.lawksp
]
}
resource "azurerm_monitor_diagnostic_setting" "avd-hpr" {
name = "AVD-Diag2"
target_resource_id = azurerm_virtual_desktop_host_pool.raghostpool.id
log_analytics_workspace_id = data.azurerm_log_analytics_workspace.lawksp.id
depends_on = [
data.azurerm_log_analytics_workspace.lawksp
]
log {
category = "AgentHealthStatus"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Checkpoint"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Connection"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Error"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "HostRegistration"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Management"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "NetworkData"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "SessionHostManagement"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
}
# Create Diagnostic Settings for AVD Desktop App Group
resource "azurerm_monitor_diagnostic_setting" "avd-rag1" {
name = "AVD-Diag3"
target_resource_id = azurerm_virtual_desktop_application_group.raag.id
log_analytics_workspace_id = data.azurerm_log_analytics_workspace.lawksp.id
depends_on = [
data.azurerm_log_analytics_workspace.lawksp
]
log {
category = "Checkpoint"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Error"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Management"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
}
# Create Diagnostic Settings for AVD Workspace
resource "azurerm_monitor_diagnostic_setting" "avd-wksp2" {
name = "AVD-Diag4"
target_resource_id = azurerm_virtual_desktop_workspace.ragworkspace.id
log_analytics_workspace_id = data.azurerm_log_analytics_workspace.lawksp.id
depends_on = [
data.azurerm_log_analytics_workspace.lawksp
]
log {
category = "Checkpoint"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Error"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Management"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
log {
category = "Feed"
enabled = true
retention_policy {
days = 7
enabled = true
}
}
}