如何获取Google Cloud平台下Terraform的google及google-beta提供商所有可用资源类型列表?
解决Terraform无法列出Google/Google-beta提供商资源类型的问题
我懂你现在的困扰——想查看Google和google-beta这两个Terraform提供商的所有可用资源类型,但用terraform providers schema命令没得到预期结果。问题根源其实很简单:你的main.tf是空的,Terraform根本没识别到要加载这两个提供商,所以才返回了空的schema结构。
下面是具体的解决步骤:
步骤1:在main.tf中声明所需提供商
先编辑你的main.tf,添加Google和google-beta的提供商配置(不需要复杂参数,只要声明即可):
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 4.0" # 可指定你需要的版本,或用"latest"获取最新版 } google-beta = { source = "hashicorp/google-beta" version = "~> 4.0" } } } # 可选:如果需要绑定GCP项目/区域,可添加provider块(也可留空用Cloud Shell默认凭据) provider "google" { project = "your-gcp-project-id" region = "us-central1" } provider "google-beta" { project = "your-gcp-project-id" region = "us-central1" }
步骤2:重新初始化Terraform
保存main.tf后,重新执行初始化命令,让Terraform下载并识别这两个提供商:
terraform init
你会看到Terraform开始下载google和google-beta的提供商包,完成后就可以获取完整的schema数据了。
步骤3:获取并解析提供商Schema
执行terraform providers schema -json命令,这次会返回包含两个提供商完整schema的JSON数据。因为内容量很大,建议把结果保存到文件里方便查看:
terraform providers schema -json > provider-schema.json
之后可以用Cloud Shell自带的jq工具过滤出资源类型:
列出Google提供商的所有资源类型
jq '.provider_schemas."registry.terraform.io/hashicorp/google".resource_schemas | keys' provider-schema.json
列出Google-beta提供商的所有资源类型
jq '.provider_schemas."registry.terraform.io/hashicorp/google-beta".resource_schemas | keys' provider-schema.json
如果想查看某个具体资源的详细schema(比如google_compute_instance),可以用:
jq '.provider_schemas."registry.terraform.io/hashicorp/google".resource_schemas."google_compute_instance"' provider-schema.json
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

