如何使用 Terraform 获取默认 GCP 项目和区域?

kub*_*zyk 5 google-cloud-platform terraform terraform-provider-gcp

Google Compute Engine (GCE/GCP) 的标准 terraform 样板是:

provider "google" {}
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到我的默认projectregion?我需要类似于aws_regionAWS 的东西(就像这个问题)。

在某些情况下,这些是在环境变量中外部指定的:

provider "google" {}
Run Code Online (Sandbox Code Playgroud)

它们很少在 hcl 代码中显式可见:

provider "google" {
  project = "myproject"
  region  = "europe-west2"
}
Run Code Online (Sandbox Code Playgroud)

当两者都不是的情况下如何进行?

kub*_*zyk 10

基本的

使用google_client_config数据源:

data "google_client_config" "this" {}

output "region" {
  value = data.google_client_config.this.region
}

output "project" {
  value = data.google_client_config.this.project
}
Run Code Online (Sandbox Code Playgroud)

多个提供商

这甚至可以与多个提供者一起使用:

provider "google" {
  region = "europe-west2"
}

provider "google" {
  alias  = "another" // alias marks this as an alternate provider
  region = "us-east1"
}

data "google_client_config" "this" {
  provider = google
}

data "google_client_config" "that" {
  provider = google.another
}

output "regions" {
  value = [data.google_client_config.this.region, data.google_client_config.that.region]
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ terraform init
$ terraform apply --auto-approve

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

regions = [
  "europe-west2",
  "us-east1",
]
Run Code Online (Sandbox Code Playgroud)