【发布时间】:2021-04-12 16:20:15
【问题描述】:
我正在尝试使用 AWS Secrets Manager 来声明 RDS 管理员凭据。
- 在变量 RdsAdminCred 中的 rds.tf 中将凭据声明为键/值对
- 在同一个 tf 文件中也声明了机密
variable "RdsAminCred" {
default = {
username = "dbadmin"
password = "dbadmin#02avia"
}
type = map(string)
}
resource "aws_secretsmanager_secret" "RdsAminCred" {
name = "RdsAminCred"
}
resource "aws_secretsmanager_secret_version" "RdsAminCred" {
secret_id = aws_secretsmanager_secret.RdsAminCred.id
secret_string = jsonencode(var.RdsAminCred)
}
- 我不确定如何使用下面声明中的秘密字符串来替换用户名和密码的硬编码值。
resource "aws_db_instance" "default" {
identifier = "testdb"
allocated_storage = 20
storage_type = "gp2"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t2.medium"
name = "mydb"
username = "dbadmin"
password = "dbadmin#01avia"
任何帮助表示赞赏..
【问题讨论】:
-
你能说明你想要达到什么目标吗?如果你在
RdsAminCred中硬编码你的密码,那么secret_manager 没有多大意义,因为密码最终会出现在你的源代码中,更糟糕的是,在github 或gitlab 上的公共仓库中。 -
这将是下一步,我也不知道如何完成。在上面的代码中,我首先尝试使用 Secrets Manager。最终,密码不应在 tf.所以我认为他的最终方法是使用 env 变量(在 tf 之外)或其他更好的方法并使用 AWS Secrets manager
标签: amazon-web-services terraform secret-manager