Error: azurerm_app_service.ci_rg: resource repeated multiple times
Error: azurerm_app_service.ci_rg: resource repeated multiple times
-
azure-web-app-service
-
terraform
-
terraform-provider-azure
-
azure-container-registry
-
terraform-template-file
我正在尝试在同一资源组中部署 2 个不同的 Azure 应用程序。
这些 Azure 应用程序被定义为存储在 Azure 容器注册表中的 docker 个图像(我之前将那些 docker 个图像推送到那里)。
我无法同时部署它们,因为我认为我定义它们的方式有问题,因为 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}",
}
}
编辑:
我不完全确定这个 Terraform 是如何工作的,但我认为标签 azurerm_app_service
被 "syntax of Terraform" 使用了。请在此处查看文档:https://www.terraform.io/docs/providers/azurerm/r/app_service.html
其中标题是 azurerm_app_service
。所以我认为我无法改变它。
我猜你需要将第二个重命名为其他名称。像这样:resource "azurerm_app_service" "ci_rg_second"
。它显然不喜欢它具有相同名称的事实。
azure-web-app-service
terraform
terraform-provider-azure
azure-container-registry
terraform-template-file
我正在尝试在同一资源组中部署 2 个不同的 Azure 应用程序。
这些 Azure 应用程序被定义为存储在 Azure 容器注册表中的 docker 个图像(我之前将那些 docker 个图像推送到那里)。
我无法同时部署它们,因为我认为我定义它们的方式有问题,因为 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}",
}
}
编辑:
我不完全确定这个 Terraform 是如何工作的,但我认为标签 azurerm_app_service
被 "syntax of Terraform" 使用了。请在此处查看文档:https://www.terraform.io/docs/providers/azurerm/r/app_service.html
其中标题是 azurerm_app_service
。所以我认为我无法改变它。
我猜你需要将第二个重命名为其他名称。像这样:resource "azurerm_app_service" "ci_rg_second"
。它显然不喜欢它具有相同名称的事实。