Состояние обновления Terraform State replace-provider с неверными данными

Мы обновили версию terraform, и у нас возникла проблема с удаленным состоянием terraform. Basiacaly Я запускаю эту команду, чтобы обновить провайдер azurerm:

terraform state replace-provider 'registry.terraform.io/-/azurerm' 'registry.terraform.io/hashicorp/azurerm'

Прямо сейчас, когда я запускаю команду плана, она показывает мне некоторые ошибки. Все одинаковы, но ресурсы различаются. Например:

To work with module.name.module.lb_name.azurerm_lb_probe.instance
its original provider configuration at
provider["registry.terraform.io/-/azurerm"] is required, but it has been
removed. This occurs when a provider configuration is removed while objects
created by that provider still exist in the state. Re-add the provider
configuration to destroy
module.name.module.lb_name.azurerm_lb_probe.instance, after which
you can remove the provider configuration again.

В основном состояние было обновлено, и провайдер выглядит так:

"provider": "provider.azurerm"

но это должно выглядеть так:

"provider": "provider[\"registry.terraform.io/hashicorp/azurerm\"]"

Есть ли способ обновить его с помощью команд terraform или единственный способ исправить это - отредактировать файл состояния вручную?


person majewka    schedule 18.01.2021    source источник
comment
показывает мне некоторые ошибки - не конкретно. Какие именно ошибки?   -  person Marcin    schedule 18.01.2021
comment
Я обновил вопрос примером. У нас была аналогичная проблема в другой среде, и решение заключалось в том, чтобы обновить поставщика в файлах состояния, как я упоминал ранее. Проблема в том, что это произошло в производственной среде, и мы просто не хотим изменять ее вручную.   -  person majewka    schedule 18.01.2021
comment
Разве Terraform не предоставляет инструмента CLI, который помогает с изменениями между версиями, вроде 0.12upgrade и 0.13upgrade?   -  person Marko E    schedule 18.01.2021
comment
Согласно сообщению об ошибке, поставщик также должен быть обновлен для соответствующего модуля. Это также может означать обновление необходимого блока поставщиков в самом модуле, а затем повторную замену поставщика в состоянии для модуля.   -  person Matt Schuchard    schedule 18.01.2021
comment
Есть новости по этому вопросу? Решает ли это вашу проблему? Если это сработает для вас, примите его.   -  person Charles Xu    schedule 01.02.2021


Ответы (1)


При замене провайдеров для обновления Terraform командой:

terraform state replace-provider 'registry.terraform.io/-/azurerm' 'registry.terraform.io/hashicorp/azurerm'

Хорошо, нет проблем. А затем вы можете использовать команду ниже, чтобы проверить текущих поставщиков:

terraform providers

Снимок экрана будет выглядеть так:

введите описание изображения здесь

На данный момент поставщики соответствуют требованиям. Затем вам нужно снова запустить инициализацию, чтобы вытащить текущих поставщиков и заменить существующие с помощью следующей команды:

terraform init

введите описание изображения здесь

Это шаг, который вы пропустили.

person Charles Xu    schedule 26.01.2021