【发布时间】:2021-10-31 10:10:17
【问题描述】:
目标是什么?
采用以下解决方案(使用随机密码生成秘密管理器秘密)并从明文秘密转移到键/值秘密。
Plaintext Secretsmanager 秘密解决方案
resource "random_password" "default_password" {
length = 20
special = false
}
# NOTE: Since we aren't specifying a KMS key this will default to using
# `aws/secretsmanager`/
resource "aws_secretsmanager_secret" "user_default" {
name = "user/default"
tags = local.tags
}
resource "aws_secretsmanager_secret_version" "secret_val" {
secret_id = aws_secretsmanager_secret.user_default.id
secret_string = random_password.default_password.result
}
尝试的解决方案
这是我基于terraform docs for secretsmanager_secret_version 尝试的第一个解决方案,不幸的是它不适用于随机生成的密码
// TODO: Generalize this to produce a password once per (username, company)
// tuple in a list.
resource "random_password" "default_password" {
length = 20
special = false
}
# NOTE: Since we aren't specifying a KMS key this will default to using
# `aws/secretsmanager`/
resource "aws_secretsmanager_secret" "user_default" {
name = "user/default"
tags = local.tags
}
variable "secret_contents" {
default = {
>> password = random_password.default_password.result
company = "test"
}
type = map(string)
}
resource "aws_secretsmanager_secret_version" "secret_val" {
secret_id = aws_secretsmanager_secret.user_default.id
secret_string = jsonencode(var.secret_contents)
}
这遇到了Variables may not be used here. 错误。
【问题讨论】:
-
secret_contents必须是local而不是声明的variable,因为默认值是基于应用期间生成的值。
标签: terraform aws-secrets-manager