【问题标题】:How to create a secret in Google Cloud Secret Manager by Terraform?如何通过 Terraform 在 Google Cloud Secret Manager 中创建一个秘密?
【发布时间】:2022-01-27 20:15:25
【问题描述】:

这是官方页面:https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/secret_manager_secret

我创建了这些文件:

变量.tf

variable gcp_project {
  type = string
}

main.tf

resource "google_secret_manager_secret" "my_password" {
  provider = google-beta

  secret_id = "my-password"

  replication {
    automatic = true
  }
}

data "google_secret_manager_secret_version" "my_password_v1" {
  provider = google-beta
  project  = var.gcp_project
  secret   = google_secret_manager_secret.my_password.secret_id
  version  = 1
}

输出.tf

output my_password_version {
  value = data.google_secret_manager_secret_version.my_password_v1.version
}

应用时报错:

Error: Error retrieving available secret manager secret versions: googleapi: Error 404: Secret Version [projects/2381824501/secrets/my-password/versions/1] not found.

所以我通过 gcloud cli 创建了秘密:

echo -n "my_secret_password" | gcloud secrets create "my-password" \
    --data-file - \
    --replication-policy "automatic"

然后再次应用 terraform,上面写着Error: project: required field is not set

如果使用 terraform 创建具有真实值的秘密,怎么办?

【问题讨论】:

  • var.gcp_project 设置是否正确?它没有显示在您的问题中。
  • 是的,这个变量无关紧要。
  • 您是否在全局提供程序块中设置了项目?
  • @RyanSiu 是的,我做到了。
  • 您正在使用数据源。您需要使用该资源。

标签: google-cloud-platform terraform google-secret-manager secret-manager


【解决方案1】:

我在Managing Secret Manager with Terraform 上发现了以下我认为有用的文章。

你必须:

  1. 创建设置
  2. 创建一个名为 versions.tf 的文件,用于定义版本约束。
  3. 创建一个名为 main.tf 的文件并配置 Google 提供程序节:

这是使用自动复制策略创建名为“my-secret”的 Secret Manager 密钥的代码:

resource "google_secret_manager_secret" "my-secret" {
  provider = google-beta

  secret_id = "my-secret"

  replication {
    automatic = true
  }

  depends_on = [google_project_service.secretmanager]
}

【讨论】:

  • 使用此方法如何将其值从输出中导出给其他模块?
  • 仔细阅读 Seth Vargo 文章的安全说明。
【解决方案2】:

按照@marian.vladoi 的回答,如果您在使用云资源管理器 api 时遇到问题,请像这样启用它:

resource "google_project_service" "cloudresourcemanager" {
  service = "cloudresourcemanager.googleapis.com"
}

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 2020-12-04
    • 2020-11-06
    • 2020-06-08
    • 1970-01-01
    • 2020-12-13
    • 2021-10-26
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多