You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terragrunt操作时报Invalid legacy provider address错误如何解决

Terraform/Terragrunt 生产环境执行init/plan报legacy provider地址错误解决方案

环境版本

  • Terragrunt v0.35.9
  • Terraform v1.0.11

问题背景

使用Terragrunt向GCP部署基础设施,为拆分测试、生产实例变量,拆分了两个独立的Terragrunt项目,底层共用同一套Terraform .tf配置文件。

问题现象

  • 测试环境.hcl执行terragrunt init、terragrunt plan -out tf.plan均正常完成
  • 生产环境.hcl执行上述任意命令都报如下错误:
│ Error: Invalid legacy provider address
│ 
│ This configuration or its associated state refers to the unqualified
│ provider "google".
│ 
│ You must complete the Terraform 0.13 upgrade process before upgrading to
│ later versions.

已验证&尝试的操作

  1. 检查配置的provider规范:执行terraform providers查询,输出符合0.13+版本要求:
Providers required by configuration:
.
└── provider[registry.terraform.io/hashicorp/google] ~> 4.1.0
  1. 清理缓存重试:删除生产环境.terragrunt-cache文件夹和关联锁文件后重新执行terragrunt init,错误依旧存在。
  2. 缓存目录差异对比:
    • 测试环境.terragrunt-cache下成功生成providers目录,无.terragrunt-init-required文件
    • 生产环境因报错未生成providers目录,额外生成了.terragrunt-init-required标识文件
  3. 补充provider.tf配置:按网上建议补充了规范的provider声明文件,测试环境无需该文件即可正常运行,生产环境加了之后仍然报错。

相关配置文件

main.tf

terraform {
  backend "gcs" {}
}

provider "google" {
  project = var.deployment_project_id
}

provider.tf

terraform {
  required_version = "~> 1.0.11"
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 4.1.0"
    }
  }
}

排查&解决步骤

优先排查:后端存储的生产环境state文件

配置已符合新provider规范的前提下,报错提示关联的state引用了旧版unqualified的google provider,问题大概率出在生产环境GCS后端存储的历史state文件(测试和生产state是分开存储的,所以测试环境无异常)。
操作步骤:

  1. 针对生产环境对应的GCS backend执行provider替换命令:
    terragrunt state replace-provider registry.terraform.io/-/google hashicorp/google
    如果命令执行失败,可先拉取本地state手动修改:
    terragrunt state pull > prod.tfstate
    手动检查文件内的provider字段,将所有未加前缀的"google"条目替换为"registry.terraform.io/hashicorp/google"后再推送回后端:
    terragrunt state push prod.tfstate
  2. 彻底清理本地缓存:删除生产环境目录下的.terragrunt-cache、.terraform、.terraform.lock.hcl所有相关文件
  3. 重新执行terragrunt init即可恢复正常

次位排查:Terragrunt hcl配置差异

对比测试和生产的.hcl文件,确认两点:

  1. 生产环境没有额外配置旧版provider源、没有覆盖required_providers的逻辑
  2. 两个环境的backend配置指向完全独立的GCS存储桶/路径,没有混用测试和生产的state存储位置

内容的提问来源于stack exchange,提问作者Derek Σωκράτης Finch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:45:10