如何通过 Terraform 在 Google Cloud Secret Manager 中创建秘密?

问题描述

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

我创建了这些文件

变量.tf

.weekly_calls_form > *{
  margin: 0px 5px;
}

main.tf

variable gcp_project {
  type = string
}

输出.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
}

应用时出错:

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

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

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

然后再次应用 terraform,它说 echo -n "my_secret_password" | gcloud secrets create "my-password" \ --data-file - \ --replication-policy "automatic"

如果用 terraform 创建一个真正有价值的秘密,怎么办?

解决方法

我发现以下文章对 Managing Secret Manager with Terraform

很有用

你必须:

  1. 创建设置
  2. 创建一个名为 versions.tf 的文件来定义版本约束。
  3. 创建一个名为 main.tf 的文件并配置 Google provider 节:

这是使用自动复制策略创建名为“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]
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...