如何将 GCP 服务帐户 key.json 内容传递到 Terraform Cloud 而无需在 VCS 中提交?

How do I pass GCP Service Account key.json contents into Terraform Cloud without committing it in VCS?

根据 Google Provider documentation,服务帐户密钥应使用环境变量 GOOGLE_CLOUD_KEYFILE_JSON 提供给 Terraform。使用 Terraform Cloud 时,这对我来说是个问题,因为这意味着将服务帐户密钥存储在存储库中并使用环境变量设置密钥文件的路径。

我想使用 Terraform 变量或环境变量将服务帐户密钥内容传递给提供商,但我无法找到这方面的文档。我该怎么做?

var.ACCOUNT_JSON 是帐户 json 文件的路径,您可以将其保留在 git 存储库之外。

variable "ACCOUNT_JSON" {}
variable "PROJECT_ID" {}


provider "google" {
  credentials = file(var.ACCOUNT_JSON)
  project     = var.PROJECT_ID
}

您可以执行 export TF_VAR_ACCOUNT_JSON=../accoutn.json,在这种情况下,此命令不会存储在历史记录中,ACCOUTN_JSON 将可用于 you to be used in terraform

设置它已经有一段时间了,但是您可以将文件的全部内容设置为环境变量 GOOGLE_CLOUD_KEYFILE_JSON 并且它可以工作。确保将其设置为敏感。您必须从文件中取出所有新行才能使其正常工作。