如何通过 Terraform 在 Google Cloud Secret Manager 中创建秘密?
How to create a secret in Google Cloud Secret Manager by Terraform?
这是官方页面:https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/secret_manager_secret
我创建了这些文件:
variables.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
}
outputs.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创建一个有真实值的secret,怎么办?
我在 Managing Secret Manager with Terraform 上找到了我认为有用的以下文章。
你必须:
- 创建设置
- 创建一个名为
versions.tf
的文件来定义版本限制。
- 创建名为
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]
}
按照@marian.vladoi的回答,如果您遇到云资源管理器问题api,请像这样启用它:
resource "google_project_service" "cloudresourcemanager" {
service = "cloudresourcemanager.googleapis.com"
}
这是官方页面:https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/secret_manager_secret
我创建了这些文件:
variables.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
}
outputs.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创建一个有真实值的secret,怎么办?
我在 Managing Secret Manager with Terraform 上找到了我认为有用的以下文章。
你必须:
- 创建设置
- 创建一个名为
versions.tf
的文件来定义版本限制。 - 创建名为
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]
}
按照@marian.vladoi的回答,如果您遇到云资源管理器问题api,请像这样启用它:
resource "google_project_service" "cloudresourcemanager" {
service = "cloudresourcemanager.googleapis.com"
}