我正在使用Aurora无服务器Mysql和ECS,并尝试在名为rds.tf的文件中使用由AWS秘密管理器生成的秘密,并希望在名为ecs.tf的文件中使用它的另一资源
resource "random_password" "db_instance_aurora_password" {
length = 40
special = false
keepers = {
database_id = aws_secretsmanager_secret.db_instance_aurora_master_password.id
}
上面是rds.tf,它可以工作并生成随机密码。在第二个文件ecs.tf中,我想使用
resource "aws_ecs_task_definition" "task" {
family = var.service_name
container_definitions = templatefile("${path.module}/templates/task_definition.tpl", {
DB_USERNAME = var.db_username
DB_PASSWORD = random_password.db_instance_aurora_password.result
})
}
如何导出db_password的输出并在其他资源(ecs.tf)中使用它?
output "aurora_rds_cluster.master_password" {
description = "The master password"
value = random_password.db_instance_aurora_password.result }
答案 0 :(得分:1)
如果所有Terraform文件都在一个目录中,则可以在为数据库处理时引用random_password
资源。然后,您可能不需要输出它。
如果分开,则可以使用terraform modules来实现所需的功能。在ECS terraform中,您可以引用RDS模块,并可以访问其输出:
module "rds" {
source = "path/to/folder/with/rds/terraform"
}
resource "aws_ecs_task_definition" "task" {
family = var.service_name
container_definitions = templatefile("${path.module}/templates/task_definition.tpl", {
DB_USERNAME = var.db_username
DB_PASSWORD = module.rds.aurora_rds_cluster.master_password
})
}
P.S。您可能想在密码输出中添加sensitive = true
以便从日志中消除密码值。