Azure 静态 Web 应用程序 - 使用 Terraform 的应用程序设置

Azure Static Web App - Application Settings using Terraform

使用 Terraform,我创建了一个 Azure 静态 Web 应用程序,如下所示。但是 documentation does not demonstrate how to set application settings for the resource. For normal Azure functions apps we can see app_settings 参数。但是如何为使用 Terraform 创建的 azure 静态 Web 应用程序设置应用程序设置?

resource "azurerm_static_site" "example" {
  name                = "example"
  resource_group_name = "example"
  location            = "West Europe"
}

我喜欢设置参数 AAD_CLIENT_IDAAD_CLIENT_SECRET 来为 Microsoft documention.

中的 Azure 静态 Web 应用程序配置身份提供程序

我相信查看您查看过的 Terraform 文档 (Link: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/static_site),静态 Web 应用程序非常基础,不接受应用程序设置参数。

另外根据 Azure 博客:https://devblogs.microsoft.com/devops/comparing-azure-static-web-apps-vs-azure-webapps-vs-azure-blob-storage-static-sites/ 如果您有一个 Web 应用程序,您想要做的不仅仅是托管静态站点,那么您需要使用功能齐全的 Web 应用程序。也许 Hashi Corp 认为这意味着这本质上是一个用于托管前端页面的基本 Web 应用程序?不确定...

根据这个理论,要在 Terraform 中进行应用程序设置,您需要从外观上制作一个 Azure Web 应用程序:

如果您需要任何关于如何使用应用程序设置编写 Web 应用程序代码的指导,这里有一个示例。你可能知道,但你可以参考这里。

resource "azurerm_app_service_plan" "websiteappserviceplan" {
  name                = "appserviceplan_mysite"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  sku {
    tier = "Basic"
    size = "B1"
  }
}

resource "azurerm_app_service" "web_app" { 
  name                = var.webapp_name
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  app_service_plan_id = azurerm_app_service_plan.websiteappserviceplan.id


  app_settings = {
    "KEY_VAULT_URL"             = azurerm_key_vault.myvault.vault_uri
    "SUPPORTS_SAFEGUARDING"     = "1"
    "SUPPORTS_TECHNICIAN"       = "1"
  }

  client_affinity_enabled = true

  site_config {
    always_on                 = true
    min_tls_version           = "1.2"
    dotnet_framework_version  = "v5.0"
    app_command_line          = "dotnet EventManagement.Web.dll"
    ftps_state                = "Disabled"
    use_32_bit_worker_process = true
    http2_enabled             = true
    websockets_enabled        = true
  }

  logs {
    detailed_error_messages_enabled = true
    failed_request_tracing_enabled  = true
    application_logs {
      azure_blob_storage {
        level             = "Information"
        sas_url           = format("https://${azurerm_storage_account.website_log_storage.name}.blob.core.windows.net/${azurerm_storage_container.website_logs_container.name}%s", data.azurerm_storage_account_blob_container_sas.website_logs_container_sas.sas)
        retention_in_days = 365
      }
    }

    http_logs {
      azure_blob_storage {
        sas_url           = format("https://${azurerm_storage_account.website_log_storage.name}.blob.core.windows.net/${azurerm_storage_container.website_logs_container.name}%s", data.azurerm_storage_account_blob_container_sas.website_logs_container_sas.sas)
        retention_in_days = 365
      }
    }

  }

  connection_string {
    name  = "StorageAccount"
    type  = "Custom"
    value = azurerm_storage_account.website_log_storage.primary_connection_string
  }

  identity {
    type = "SystemAssigned"
  }
}

Azure 静态 Web 应用程序的应用程序设置截至目前 feature request (24/Nov/2021) 是开放的。当该功能添加到 Terraform 时,我将更新此答案。