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

Terraform配置cyrilgdn/postgresql provider仍拉取hashicorp版本问题求助

问题解决步骤

  • 第一步:确认required_providers块必须嵌套在顶层terraform块内,错误的放置位置会导致Terraform无法识别自定义源配置,正确结构如下:
terraform {
  required_providers {
    postgresql = {
      source  = "cyrilgdn/postgresql"
      version = ">=1.13.0"
    }
  }
}
  • 第二步:清理本地缓存文件,删除项目根目录下的.terraform文件夹、.terraform.lock.hcl文件,旧的缓存和锁文件会残留历史的hashicorp/provider源记录,未清理的情况下不会读取新的required_providers配置。
  • 第三步:排查所有调用的子模块,如果子模块中也使用了postgresql相关资源,必须在子模块的terraform块中同样声明上述required_providers配置,或者在根模块调用子模块时显式传递provider实例,传递示例如下:
# 根模块provider配置
provider "postgresql" {
  host     = "数据库地址"
  port     = 5432
  username = "用户名"
  password = "密码"
}

# 调用子模块时传递provider
module "your_module" {
  source = "./modules/your-module-path"
  // 其他模块参数

  providers = {
    postgresql = postgresql
  }
}
  • 第四步:执行terraform init命令时可加-upgrade参数强制刷新provider版本:
terraform init -upgrade

完整可用配置示例

# 根目录main.tf
terraform {
  required_version = "=1.0.6"
  required_providers {
    postgresql = {
      source  = "cyrilgdn/postgresql"
      version = "1.19.0" # 建议固定大版本避免兼容性问题
    }
  }
}

provider "postgresql" {
  host            = "127.0.0.1"
  port            = 5432
  database        = "postgres"
  username        = "postgres"
  password        = "your_password"
  sslmode         = "require"
  connect_timeout = 15
}

# 示例资源:创建数据库
resource "postgresql_database" "test_db" {
  name  = "test_db"
  owner = "postgres"
}

内容的提问来源于stack exchange,提问作者Marius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:06:01