使用cdktf添加本地hashicups provider失败,dev_overrides不生效求助
核心问题分析
cdktf provider add命令默认会向HashiCorp官方Provider Registry请求元数据,而你配置的hashicorp.com/edu/hashicups是本地自定义Provider,不在官方Registry中,因此触发「Invalid provider registry host」错误。Terraform原生的dev_overrides仅覆盖运行时Provider查找逻辑,但无法为cdktf provider add提供元数据支持,需要换用cdktf get直接基于本地Provider的Schema生成绑定代码。
具体解决步骤
手动配置cdktf.json并生成绑定代码
跳过cdktf provider add命令,直接在项目根目录的cdktf.json中声明Provider:{ "language": "你的开发语言(如typescript/python)", "app": "你的应用启动命令", "terraformProviders": [ "hashicorp.com/edu/hashicups@0.0.1" ], "codeMakerOutput": "./.gen", "terraformVersion": "1.9.1" }执行以下命令生成
.gen目录的绑定代码:cdktf get --force-local该命令会调用本地Terraform获取Provider的Schema,直接生成所需的绑定文件。
验证.terraformrc配置正确性
确保dev_overrides指向Provider可执行文件所在目录(而非文件本身),且目录下的可执行文件名符合Terraform规范(如terraform-provider-hashicups_v0.0.1):provider_installation { dev_overrides { "hashicorp.com/edu/hashicups" = "/root/go/bin" } direct {} }可通过以下命令验证Terraform能否正确识别Provider:
terraform providers schema -json | grep hashicups若能输出Provider Schema,说明配置有效。
清理缓存并重新生成
删除cdktf和Terraform的缓存目录,避免旧数据干扰:rm -rf .terraform/cache rm -rf .gen重新执行
cdktf get --force-local生成绑定代码。确认cdktf使用的Terraform版本
运行cdktf debug查看当前cdktf关联的Terraform版本,确保与你测试HCL的v1.9.1一致。若不一致,在cdktf.json中明确指定terraformVersion字段(如上述步骤1中的配置)。
内容的提问来源于stack exchange,提问作者Jorge

