如何使用Terraform azurerm_app_service指定.net核心版本

x6yk4ghg  于 2023-01-31  发布在  .NET
关注(0)|答案(3)|浏览(115)

开箱即用,我认为azurerm_app_service提供程序确实允许我们通过使用dotnet_framework_version字段来指定.Net framework版本。

网络框架版本-此应用程序服务中使用的.net framework的CLR版本。可能的值为v2.0(将使用最新版本的.net框架用于.net CLR v2 -目前为.net 3.5)和v4.0(对应于.net CLR v4的最新版本-在编写本文时为.net 4.7.1)。有关基于目标.net framework使用哪个.net CLR版本的详细信息-请参见此表。默认为v4.0。

https://www.terraform.io/docs/providers/azurerm/r/app_service.html#dotnet_framework_version
该文档指出可能的值为v2.0或v4.0。
但是如果我的目标是.NET核心,而不是v2. 2呢?我应该在这里做什么?
Azure门户允许从下拉菜单中选择.NET Core。(见下面的屏幕截图)

我不确定是否也有办法通过Terraform azurerm_app_service来实现这一点。

fslejnso

fslejnso1#

您可以尝试使用Azure CLI查询AppService/WebApp的可用运行时。
https://learn.microsoft.com/en-us/cli/azure/webapp?view=azure-cli-latest#az-webapp-list-runtimes

    • 或者**

你可以将你的应用服务配置为将你的应用的容器与. NET核心一起使用。这将允许你通过Dockerfile指定. NET核心版本。缺点是你将需要某种注册表(Azure容器注册表)。

jv4diomz

jv4diomz2#

在App Service中托管. NET核心应用程序有两个可用选项:

  1. Windows应用服务计划。
  2. Linux应用服务计划(在Azure门户上创建应用服务时的默认选项)。
    如果您使用的是Windows应用程序服务计划,则需要指定dotnet_framework_version,正如您提到的,只有2个可用选项-v2.0和v4.0。
    相反,您可以使用Linux App Service计划并在linux_fx_version字段中指定. net版本(dotnet_framework_version应该为空)。
    像这样:
resource "azurerm_app_service" "stackoverlow_service" {
  name = "stackoverlow-test-net-version"
  location = "centralus"
  resource_group_name = "{resource_group_name}"
  app_service_plan_id = "{app_service_plan_id}"

  site_config {
    linux_fx_version = "DOTNETCORE|2.2"
    min_tls_version = "1.2"
    always_on = true
    scm_type = "None"
    managed_pipeline_mode = "Integrated"
    websockets_enabled = false
    use_32_bit_worker_process = true
  }
}

App Service是一个相当复杂的产品,有许多配置选项,Azure/terraform文档没有很好地涵盖所有方面。
要生成所需的配置,可以在Azure中创建应用服务并将资源导入到平台:
1.在terraform中创建最小的正确应用服务资源。
1.在Azure门户中创建具有所需配置的应用服务。
1.使用terraform import命令导入资源:terraform import azurerm_app_service.stackoverlow_service /subscriptions/.....
1.运行terraform plan查看确切的差别或检查terraform状态文件。

vu8f3i0k

vu8f3i0k3#

您需要在app_service块的site_config块中指定以下2个设置。

resource "azurerm_app_service" "app_service" {
  name                = local.graphql_server_long_name
  location            = var.azure_region
  resource_group_name = azurerm_resource_group.rg.name
  app_service_plan_id = azurerm_app_service_plan.graphql_server.id
  site_config {
    linux_fx_version = "DOTNETCORE|5.0"
    dotnet_framework_version = "v5.0"
  }

它们是linux_fx_versiondotnet_framework_version
您至少需要运行2.38.0版本的azurerm提供程序。您可以通过在包含您的terraform文件的目录中运行以下命令来进行检查:terraform version
这将显示terraform cli和所有使用的提供程序。

相关问题