【发布时间】:2021-04-22 16:59:02
【问题描述】:
我们升级了 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 命令更新它,或者修复它的唯一方法是手动编辑状态文件?
【问题讨论】:
-
" 显示一些错误" - 不具体。究竟是什么错误?
-
我用一个例子更新了这个问题。我们在其他环境中遇到了类似的问题,解决方法是更新状态文件中的提供程序,正如我之前提到的。问题是它发生在生产环境中,我们只是不想手动修改它。
-
难道没有 Terraform 提供的 CLI 工具来帮助在版本之间进行更改,例如
0.12upgrade和0.13upgrade? -
根据错误信息,还需要为相关模块更新提供程序。这也可能意味着更新模块本身中所需的提供程序块,然后再次为模块替换状态中的提供程序。
-
关于这个问题的任何更新?它解决了你的问题吗?如果它适合你,请接受它。
标签: terraform terraform-provider-azure azure-rm