Ошибка: azurerm_app_service.ci_rg: ресурс повторяется несколько раз - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь развернуть 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. Поэтому я не думаю, что смогу это изменить.

1 Ответ

0 голосов
/ 15 ноября 2018

Полагаю, вам нужно переименовать второе в другое. Как это: resource "azurerm_app_service" "ci_rg_second". Очевидно, ему не нравится тот факт, что у него такое же имя.

...