Я пытаюсь развернуть 2 разных приложения Azure в одной группе ресурсов.
Эти приложения Azure определены как образы докеров, хранящиеся в реестре контейнеров Azure (куда я ранее помещал эти образы докеров).
Я не могу развернуть их обоих одновременно, потому что я думаю, что что-то не так в их определении, поскольку Terraform ожидает найти только один azurerm_app_service
, но я не уверен, как я могу обойти это?
Когда я запускаю эту команду: terraform plan -var-file test.tfvars
, я вижу это сообщение в выводе:
Error: azurerm_app_service.ci_rg: resource repeated multiple times
Как определить «2 разных ресурса одного типа»?
Это содержимое файла main.tf
(где я вставляю переменные, определенные в variables.tf
, со значениями, определенными в test.tfvars
):
// the resource group definition
resource "azurerm_resource_group" "ci_rg" {
name = "${var.resource_group_name}"
location = "${var.azure_location}"
}
// the app service plan definition
resource "azurerm_app_service_plan" "ci_rg" {
name = "${var.app_service_plan}"
location = "${azurerm_resource_group.ci_rg.location}"
resource_group_name = "${azurerm_resource_group.ci_rg.name}"
kind = "Linux"
sku {
tier = "Standard"
size = "S1"
capacity = 2 // for both the docker containers
}
properties {
reserved = true
}
}
// the first azure app
resource "azurerm_app_service" "ci_rg" {
name = "${var.first_app_name}"
location = "${azurerm_resource_group.ci_rg.location}"
resource_group_name = "${azurerm_resource_group.ci_rg.name}"
app_service_plan_id = "${azurerm_app_service_plan.ci_rg.id}"
site_config {
linux_fx_version = "DOCKER|${var.first_app_docker_image_name}"
}
app_settings {
"CONF_ENV" = "${var.conf_env}"
"DOCKER_REGISTRY_SERVER_URL" = "${var.docker_registry_url}",
"DOCKER_REGISTRY_SERVER_USERNAME" = "${var.docker_registry_username}",
"DOCKER_REGISTRY_SERVER_PASSWORD" = "${var.docker_registry_password}",
}
}
// the second azure app
resource "azurerm_app_service" "ci_rg" {
name = "${var.second_app_name}"
location = "${azurerm_resource_group.ci_rg.location}"
resource_group_name = "${azurerm_resource_group.ci_rg.name}"
app_service_plan_id = "${azurerm_app_service_plan.ci_rg.id}"
site_config {
linux_fx_version = "DOCKER|${var.second_app_docker_image_name}"
}
app_settings {
"CONF_ENV" = "${var.conf_env}"
"DOCKER_REGISTRY_SERVER_URL" = "${var.docker_registry_url}",
"DOCKER_REGISTRY_SERVER_USERNAME" = "${var.docker_registry_username}",
"DOCKER_REGISTRY_SERVER_PASSWORD" = "${var.docker_registry_password}",
}
}
Edit:
Я не совсем уверен в том, как работает эта вещь Terraform, но я думаю, что метка azurerm_app_service
взята из "синтаксиса Terraform". Смотрите документы здесь: https://www.terraform.io/docs/providers/azurerm/r/app_service.html
где заголовок azurerm_app_service
. Поэтому я не думаю, что смогу это изменить.