生成Terraform Provider文档时如何指定自定义源?
问题分析与解决方案
你遇到的问题是tfplugindocs工具生成文档时,默认尝试拉取HashiCorp命名空间下的pterodactyl Provider,而非你发布的registry.terraform.io/Luiggi33/pterodactyl,本质是工具和Terraform未正确识别自定义Provider的源地址。以下是针对性的解决步骤:
1. 新增/修改.tfplugindocs.yml配置文件
在项目根目录创建该配置文件,明确指定Provider的完整源地址,强制工具使用你的自定义命名空间:
provider-name: pterodactyl provider-source: registry.terraform.io/Luiggi33/pterodactyl
此配置会覆盖命令行参数的默认设置,确保工具定位到正确的Provider源。
2. 修正examples目录下的示例配置
所有examples文件夹内的.tf示例文件,必须在开头添加Provider源声明,避免Terraform默认去HashiCorp命名空间查找:
terraform { required_providers { pterodactyl = { source = "Luiggi33/pterodactyl" version = ">= 你的Provider版本号" } } } provider "pterodactyl" { # 此处填写Provider配置参数 }
tfplugindocs会读取示例文件的配置,正确的source设置能引导Terraform Init指向你的Provider。
3. 确认go.mod模块路径正确性
检查项目根目录的go.mod,确保模块路径与你的Provider仓库一致:
module github.com/Luiggi33/terraform-provider-pterodactyl go 1.21
模块路径需匹配你发布Provider时的仓库地址,避免工具混淆Provider归属。
4. 调整go generate命令(可选)
若上述配置仍不生效,直接在main.go的go:generate指令中添加-provider-source参数:
//go:generate go run github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs generate -provider-name pterodactyl -provider-source registry.terraform.io/Luiggi33/pterodactyl
此参数会直接指定工具使用的Provider源,优先级高于默认配置。
5. 清理缓存后重新执行
执行以下命令清理Terraform本地缓存,避免旧配置残留影响:
rm -rf .terraform/ rm -rf .terraform.lock.hcl
之后重新运行go generate即可。
内容的提问来源于stack exchange,提问作者Luiggi33
相关产品推荐
相关产品推荐

