Sla*_* II 8 google-cloud-storage google-cloud-platform terraform devops terraform-provider-gcp
如何配置 Terraform Cloud 以通过 Google Cloud Platform (GCP) 进行身份验证?
现在,我的配置如下所示:
provider "google" {
project = "my-project-id"
region = "europe-west3"
zone = "europe-west3-a"
}
resource "google_storage_bucket" "my-bucket" {
name = "my-bucket"
location = "EUROPE-WEST3"
force_destroy = true
uniform_bucket_level_access = true
}
Run Code Online (Sandbox Code Playgroud)
这给我带来了一个错误:
错误:尝试加载应用程序默认凭据,因为提供程序块中既没有设置
credentials也没有设置。access_token未加载凭据。要使用您的 gcloud 凭据,请运行“gcloud auth application-default login”。原始错误:谷歌:找不到默认凭据。有关详细信息,请参阅https://developers.google.com/accounts/docs/application-default-credentials 。
Sla*_* II 19
首先,您需要在 GCP 项目中设置一个服务帐户,以便 Terraform Cloud 能够为您管理资源。只需执行以下操作:
\nOwner具有最大权限的角色。但是,在生产中,我强烈建议为您的服务帐户创建一个具有尽可能少的权限的单独角色。现在,您需要在 Terraform 配置中指定 JSON 键。最直接的方法是将其直接放入属性下的 google 提供程序配置中credentials。然而,在代码中存储此类敏感数据是非常糟糕的做法。我们会做其他事情:
variable "gcp_credentials" {\n type = string\n sensitive = true\n description = "Google Cloud service account credentials"\n}\nRun Code Online (Sandbox Code Playgroud)\n这将告诉 Terraform 该输入变量确实存在并且可用于配置堆栈。
\n然后,转到 Terraform Cloud 控制台并切换到所需的工作区。转到“变量”选项卡。
\n现在,按“添加变量”按钮并指定以下数据:
\ngcp_credentialsINSERT YOUR SINGLE-LINE JSON HEREGoogle Cloud service account credentials单击“保存变量按钮”。
\n最后,更新您的提供程序配置,如下所示:
\nprovider "google" {\n project = "my-project-id"\n credentials = var.gcp_credentials\n region = "europe-west3"\n zone = "europe-west3-a"\n}\nRun Code Online (Sandbox Code Playgroud)\n使用这种方法,您的秘密 JSON 密钥将由 Terraform Cloud 安全存储,任何人都无法直接读取它(由于“敏感”选项),并且该密钥将在运行时通过以下方式提供给 Google 提供商: Terraform 输入变量。
\n但是,请注意,这不是一种存储秘密的万无一失的方法,并且在某些情况下,能够更新配置和读取日志文件的一方可以读取变量的内容。
\n我还建议从配置文件中移动其他信息,例如区域/区域和项目 ID。这将使您的堆栈更具可重用性,并使您的配置更清晰(通过删除重复)。
\n这是最后一个例子:
\n#===========#\n# VARIABLES #\n#===========#\n\nvariable "gcp_project_id" {\n type = string\n description = "Google Cloud project ID"\n}\n\nvariable "gcp_credentials" {\n type = string\n sensitive = true\n description = "Google Cloud service account credentials"\n}\n\nvariable "gcp_region" {\n type = string\n description = "Google Cloud region"\n}\n\nvariable "gcp_zone" {\n type = string\n description = "Google Cloud zone"\n}\n\n\n#===========#\n# PROVIDERS #\n#===========#\n\nprovider "google" {\n project = var.gcp_project_id\n credentials = var.gcp_credentials\n region = var.gcp_region\n zone = var.gcp_zone\n}\n\n\n#===========#\n# RESOURCES #\n#===========#\n\nresource "google_storage_bucket" "my-bucket" {\n name = "my-bucket"\n location = var.gcp_region\n force_destroy = true\n uniform_bucket_level_access = true\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
9881 次 |
| 最近记录: |