Я хочу создать веб-приложение с контейнером в качестве модели публикации с использованием Terraform. Единственный вариант, который я нашел в документации Terraform, — это использовать ресурс azurerm_linux_web_app
с блоком application_stack
, но я получил ошибку, что это неподдерживаемый тип блока. Как я могу указать Azure, чтобы она предоставила веб-приложению модель container
, а не code
публикации, используя Terraform? У меня есть общедоступный образ Docker, и я буду ссылаться на него в своей службе приложений. Я очень ценю любую помощь, которую вы можете оказать.
моя версия терраформа v1.9.2
мой хашикорп/азурерм ~> 3.0
Ошибка:
│ Error: Unsupported block type
│
│ on main.tf line 122, in resource "azurerm_linux_web_app" "app":
│ 122: application_stack{
│
│ Blocks of type "application_stack" are not expected here.
main.tf
resource "azurerm_linux_web_app" "app" {
name = "${var.app_service_name_prefix}${random_string.random.result}"
location = data.azurerm_resource_group.rg.location
resource_group_name = data.azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.asp.id
application_stack{
docker_image_name = var.docker_image_name
docker_registry_url = var.docker_registry_url
}
app_settings = {
"STORAGE_CONNECTION_STRING" = azurerm_storage_account.storage.primary_connection_string
}
}
Ошибка:
Unsupported block type
Блок Application_stack
поддерживается только в более старых версиях поставщика terraform Azurerm. В качестве обходного пути для предоставления веб-приложению образа Docker контейнера вы можете включить linux_fx_version = "DOCKER|<dockerimage>"
в блок site_config = {}
, как показано ниже.
Обратитесь к SO от @Nancy Xiong, чтобы узнать о соответствующем подходе.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.112.0"
}
}
}
provider "azurerm"{
features{}
}
data "azurerm_resource_group" "main" {
name = "Jahnavi"
}
resource "azurerm_service_plan" "example" {
name = "example"
resource_group_name = data.azurerm_resource_group.main.name
location = data.azurerm_resource_group.main.location
os_type = "Linux"
sku_name = "P1v2"
}
resource "azurerm_linux_web_app" "app" {
name = "examplejahapps"
location = data.azurerm_resource_group.main.location
resource_group_name = data.azurerm_resource_group.main.name
service_plan_id = azurerm_service_plan.example.id
site_config{
linux_fx_version = "DOCKER|<dockerimagepath>"
}
}
Я попробовал это, но последняя версия linux_fx_version не поддерживается. и я не могу понизить рейтинг. Мои версии упомянуты в посте.
3.112.0 сделал свое дело
Версия вашего провайдера, вероятно, отличается от той, которую вы ожидаете. Вы можете выполнить
terraform providers
в корневом модуле для подтверждения.