Terraform: Code = LinkedInvalidPropertyId Message = "Property id" "в пути" properties.hostingEnvironmentProfile.id "недействителен.

С прошлой ночи я получаю сообщение об ошибке при развертывании моего веб-приложения в Azure с помощью Terraform:

Error creating/updating App Service Plan "test-euw-asp" (Resource Group "test-middle-euw-rg"): web.AppServicePlansClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="LinkedInvalidPropertyId" Message="Property id '' at path 'properties.hostingEnvironmentProfile.id' is invalid. Expect fully qualified resource Id that start with '/subscriptions/{subscriptionId}' or '/providers/{resourceProviderNamespace}/'."

Похоже, он отправляет пустой идентификатор в объекте hostingEnvironmentProfile.

2020-02-25T15:31:56.0433755Z 2020-02-25T15:31:56.041Z [DEBUG] plugin.terraform-provider-azurerm_v1.44.0_x4.exe: {"kind":"Windows","location":"westeurope","properties":{"hostingEnvironmentProfile":{"id":""},"perSiteScaling":false,"maximumElasticWorkerCount":1,"reserved":false,"isXenon":false},"sku":{"name":"S1","tier":"standard","size":"S1","capacity":1},"tags":{}}

Я установил версию провайдера 1.44.0

provider "azurerm" {
  version = "~>1.44.0"
}

Моя конфигурация терраформ

resource "azurerm_resource_group" "rg" {
    name = var.ResourceGroupNameApp
    location = "West europe"
}

resource "azurerm_app_service_plan" "asp" {
    name = var.asp-name
    resource_group_name = azurerm_resource_group.rg.name
    location = azurerm_resource_group.rg.location
    kind = "Windows"

    sku {
        size = var.asp-sku-size
        tier = var.asp-sku-tier
    }
}

Я нигде не использую среду хостинга. У кого-нибудь такая же проблема? Я отправил заявку в службу поддержки Terraform на github: https://github.com/terraform-providers/terraform-provider-azurerm/issues/5884

Но кто-нибудь знает обходной путь?


person Enrico    schedule 26.02.2020    source источник
comment
это похоже на ошибку, это определение почти полностью соответствует примеру. можешь попробовать удалить kind = "Windows"? это не должно быть нужно   -  person 4c74356b41    schedule 26.02.2020
comment
В коде нет ничего плохого, возможно, вы можете попробовать удалить ненужные вещи и выполнить инициализацию, а затем применить снова.   -  person Charles Xu    schedule 27.02.2020
comment
@CharlesXu Какой код вы имеете в виду? Все лишнее удалено. Доброе поле мне тоже нужно.   -  person Enrico    schedule 27.02.2020
comment
Я имею в виду файл состояния и каталог инициализации. Удалять поле вида не нужно, ничего страшного.   -  person Charles Xu    schedule 27.02.2020
comment
У нас есть та же самая ошибка во всех наших скриптах terraform, что и раньше без проблем работала с 1.44. Мы также безуспешно пробовали разные значения для вида.   -  person Denis Thomas    schedule 28.02.2020
comment
У меня такая же ошибка, на прошлой неделе все работало нормально, а теперь ничего не работает   -  person ZIADIA Oussama    schedule 28.02.2020
comment
Ага, точно такая же ситуация. Больше ничего не работает. Я открыл запрос на перенос, но не уверен, будет ли он исправлен и для более старых версий. И также не знаю, сколько времени это займет ____;   -  person Enrico    schedule 28.02.2020
comment
После попытки и отката нашего кода terraform обратно к ранее работавшей версии 1.44, мое применение terraform все еще не работает!   -  person Rikki    schedule 28.02.2020


Ответы (2)


Так что в основном эта проблема вызвана ошибкой в ​​провайдере. Обходной путь может заключаться в том, чтобы удалить все и создать заново. (как предлагает Рикки) Но ничто не гарантирует, что вы больше не столкнетесь с той же проблемой в будущем ... Кроме того, удаление ресурсов не является идеальным решением, конечно, не в производственной среде ...

Что я сделал: я отключил шаг «terraform apply» в моем конвейере выпуска (потому что ресурсы уже были созданы). Таким образом, нам нужно было только развернуть нашу службу приложений и обновить нашу базу данных.

Эта проблема будет исправлена ​​только в следующем выпуске. Поэтому я предлагаю перейти на новую версию. https://github.com/terraform-providers/terraform-provider-azurerm/pull/5915#issuecomment-594357740

person Enrico    schedule 04.03.2020

Мое временное решение, чтобы разблокировать нас, заключалось в том, чтобы вручную удалить затронутые ресурсы, а затем повторно запустить terraform на 1.44. К счастью, это только повлияло на нашу среду разработки.

Это далеко не идеально, но если вы полностью застряли и безопасно временно удалить службу приложения, а затем воссоздать ее, это может вам помочь!

person Rikki    schedule 28.02.2020
comment
У меня есть гипотеза, что создание новых ресурсов с нуля с помощью azurerm 2.0 может сработать, но, очевидно, есть ошибка в обновлении существующих ресурсов. - person Rikki; 28.02.2020
comment
При создании новых ресурсов не столкнемся ли мы с той же проблемой при их обновлении? - person Enrico; 02.03.2020
comment
Боюсь, что не тестировал. Я считаю, что обновление в ресурсах, созданных в azurerm 2.0, будет работать, но что-то в том, как они были созданы в azurerm 1.44, делает их несовместимыми с тем, как azurerm 2.0 их создает / обновляет. Что далеко не идеально! - person Rikki; 03.03.2020
comment
Я проверил это, и даже обновление ресурсов, созданных с помощью azurerm 2.0, приведет к той же ошибке. - person Denis Thomas; 03.03.2020
comment
По словам людей, которые поддерживают репозиторий git плагина Terraform / azure, эта ошибка возникает только в версии 2.0. Поэтому я бы сказал, удалите все и измените вашу версию на 1.44, а затем попытаюсь воссоздать ее. - person Enrico; 04.03.2020
comment
Изменить: пробовал - ›не работает. Вы получите ту же ошибку - person Enrico; 17.03.2020