我正在尝试使用 Terraform 为 Azure Linux 应用服务配置 Java 运行时堆栈。
我按照azurerm_linux_web_app 的 Terraform 文档进行操作,并根据输出配置了 java_server、java_server_version 和 java_version 值az webapp list-runtimes --os-type linux
1- 首次尝试
这是我当前的 Terraform 代码:
resource "azurerm_linux_web_app" "app_service" {
site_config {
application_stack {
java_server = "JAVA"
java_server_version = "java21"
java_version = "21"
}
app_command_line = "java -jar /home/site/wwwroot/app.jar"
}
}
但是,部署后,Azure 门户中的运行时堆栈部分显示空配置(参见此屏幕截图)。
2- 第二:
我偶然发现了一个相关的 GitHub 问题,上面说可以通过设置 linux_fx_version 属性来解决这个问题。于是我更新了代码,并尝试了以下方法:
resource "azurerm_linux_web_app" "app_service" {
site_config {
linux_fx_version="JAVA|21"
app_command_line = "java -jar /home/site/wwwroot/app.jar"
}
}
但是,在较新版本的 azurerm_linux_web_app 资源中,此属性现在是计算的,并且不能再手动设置。
╷
│ Error: Value for unconfigurable attribute
│
│ with module.compute.azurerm_linux_web_app.app_service,
│ on modules\004-compute\main.tf line 20, in resource "azurerm_linux_web_app" "app_service":
│ 20: linux_fx_version = "JAVA|21"
│
│ Can't configure a value for "site_config.0.linux_fx_version": its value will be decided automatically based on the result of applying this configuration.
从评论部分继续,较新的 Terraform 提供程序(即 azurerm 3.40+ 之后)
linux_fx_version
是在内部计算的,您无法linux_fx_version
再手动设置。现在,Terraform 会
linux_fx_version
根据您在里面指定的字段自动构建application_stack {}
。配置:
参考:
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/linux_web_app#application_stack-1