Azure Azure - Terraform templates

Windows WebApp

Last updated: November 28, 2024
WebApp is a container for your web application. Windows WebApp requires a Windows AppServicePlan. 

The code below creates a Windows WebApp configured for Dotnet version 8.0
resource "azurerm_windows_web_app" "webapp" {
  name                = "${var.environment_prefix}-${var.solution_prefix}${var.customer_prefix}-webapp"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  service_plan_id = azurerm_service_plan.appserviceplan.id
  public_network_access_enabled = true
  tags = var.tags

  site_config {  
    application_stack {
      dotnet_version = "v8.0"
    }
  }
}

Setting the connection string


Add the following snippet to your webapp resource definition to add the connection string:

connection_string {
  name  = "DemoDotnetContext"
  type  = "SQLAzure"
  value = "Server=tcp:${azurerm_mssql_server.server.fully_qualified_domain_name};Authentication=Active Directory Default; Database=${azurerm_mssql_database.db.name};User Id=${azurerm_user_assigned_identity.webapp_identity.client_id};"
}
replace the values as per your need

Set the WebApp identity

If you want to assign a user managed identity to your web app, you can do this by adding:
dentity {
  type = "UserAssigned"
  identity_ids = [azurerm_user_assigned_identity.webapp_identity.id]
}

The complete example would be:

resource "azurerm_user_assigned_identity" "webapp_identity" {
  name                = "DemoWebAppIdentity"
  resource_group_name = azurerm_resource_group.rg.name
  location            = azurerm_resource_group.rg.location

  tags = var.tags
}

resource "azurerm_windows_web_app" "webapp" {
  name                = "${var.environment_prefix}-${var.solution_prefix}${var.customer_prefix}-webapp"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  service_plan_id = azurerm_service_plan.appserviceplan.id
  public_network_access_enabled = true
  tags = var.tags

  site_config {  
    application_stack {
      dotnet_version = "v8.0"
    }
  }

  identity {
    type = "UserAssigned"
    identity_ids = [azurerm_user_assigned_identity.webapp_identity.id]
  }

  connection_string {
    name  = "DemoDotnetContext"
    type  = "SQLAzure"
    value = "Server=tcp:${azurerm_mssql_server.server.fully_qualified_domain_name};Authentication=Active Directory Default; Database=${azurerm_mssql_database.db.name};User Id=${azurerm_user_assigned_identity.webapp_identity.client_id};"
  }
}

Further reading