I am trying to use AWS secrets manager to declare RDS admin credentials.
- Declared credentials in rds.tf in variable RdsAdminCred as key/value pair
- Declared secret as well in the same tf file
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)
}
- I am not sure how to use the secret string in the declaration below, to replace the hardcoded value for username and password.
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"
Any help is appreciated..
In your Terraform code, you can use the aws_secretsmanager_secret_version data source to read this secret:
parse the secret from JSON, using jsondecode :
Now pass the secret to RDS: