Terraform从0.11.14升级0.13.7后Provider配置不存在错误如何解决
修复步骤
操作前请先备份你的Terraform state文件,避免操作失误导致数据丢失。
- 第一步:替换State中旧的AWS Provider源地址
你遇到的provider配置不存在报错,是因为跨0.12/0.13版本升级时,旧版本State中存储的AWS Provider是隐式的legacy地址registry.terraform.io/-/aws,和你现在配置的官方源hashicorp/aws不匹配,运行以下命令替换State中的provider源:
确认操作时输入terraform state replace-provider 'registry.terraform.io/-/aws' 'hashicorp/aws'yes即可。 - 第二步:重命名State中的旧资源名
你把代码里的资源名从443改成https后,State里还留存着旧名称的资源记录,直接执行plan/apply会被判定为要删除旧资源、创建新资源,同时还会关联到旧provider记录,运行以下命令把State中的旧资源名和新代码的资源名对应:terraform state mv module.tflib.module.alb.aws_alb_listener.443 module.tflib.module.alb.aws_alb_listener.https - 第三步:验证修复结果
重新执行初始化和预览命令,确认报错已消除:
如果plan输出没有报错,仅显示符合预期的变更,说明问题已修复。terraform init terraform plan
内容的提问来源于stack exchange,提问作者Roman Newaza
相关产品推荐
相关产品推荐

