Amazon web services Terraform两个PostgreSQL数据库设置

Amazon web services Terraform两个PostgreSQL数据库设置,amazon-web-services,microservices,terraform,Amazon Web Services,Microservices,Terraform,我对teraform脚本非常陌生。 我们的系统在AWS中运行,我们有一个数据库服务器实例,由多个微服务访问 每个需要持久化某些数据的微服务都需要指向同一数据库服务器上的不同数据库模式。我们希望每个服务都有自己的模式,以使服务彼此完全解耦。但是,创建一个单独的数据库实例来实现这一点会有点太多,因为有些服务几乎什么都不存在,所以这将是一种浪费 我在services.tf脚本中创建了PostgreSQL资源,该脚本对所有微服务都是通用的: resource "aws_db_instance" "my-

我对teraform脚本非常陌生。 我们的系统在AWS中运行,我们有一个数据库服务器实例,由多个微服务访问

每个需要持久化某些数据的微服务都需要指向同一数据库服务器上的不同数据库模式。我们希望每个服务都有自己的模式,以使服务彼此完全解耦。但是,创建一个单独的数据库实例来实现这一点会有点太多,因为有些服务几乎什么都不存在,所以这将是一种浪费

我在services.tf脚本中创建了PostgreSQL资源,该脚本对所有微服务都是通用的:

resource "aws_db_instance" "my-system" {
  identifier_prefix       = "${var.resource_name_prefix}-tlm-"
  engine                  = "postgres"
  allocated_storage       = "${var.database_storage_size}"
  storage_type            = "${var.database_storage_type}"
  storage_encrypted       = true
  skip_final_snapshot     = true
  instance_class          = "${var.database_instance_type}"
  availability_zone       = "${data.aws_availability_zones.all.names[0]}"
  db_subnet_group_name    = "${aws_db_subnet_group.default.name}"
  vpc_security_group_ids  = "${var.security_group_ids}"
  backup_retention_period = "${var.database_retention_period}"
  backup_window           = "15:00-18:00"     // UTC
  maintenance_window      = "sat:19:00-sat:20:00" // UTC

  tags = "${var.tags}"
}
现在我要为我的服务-1和服务-2创建共同响应数据库名称。我不认为下面的是正确的,我只是添加它给你一个关于我试图实现的想法

因此,service-1.tf将包含:

resource "aws_db_instance" "my-system" {
  name                    = "service_1"
}
resource "aws_db_instance" "my-system" {
  name                    = "service_2"
}
服务-2.tf将包含:

resource "aws_db_instance" "my-system" {
  name                    = "service_1"
}
resource "aws_db_instance" "my-system" {
  name                    = "service_2"
}
我的问题是,我应该在service-1.tf和service-2.tf中添加什么来实现这一点

提前感谢您的输入。

您只能使用管理一个tf文件

resource "aws_db_instance" "my-system" {
  count                   = "2"
  name                    = "service_${count.index}"
  identifier_prefix       = "${var.resource_name_prefix}-tlm-"
  engine                  = "postgres"
  allocated_storage       = "${var.database_storage_size}"
  storage_type            = "${var.database_storage_type}"
  storage_encrypted       = true
  skip_final_snapshot     = true
  instance_class          = "${var.database_instance_type}"
  availability_zone       = "${data.aws_availability_zones.all.names[0]}"
  db_subnet_group_name    = "${aws_db_subnet_group.default.name}"
  vpc_security_group_ids  = "${var.security_group_ids}"
  backup_retention_period = "${var.database_retention_period}"
  backup_window           = "15:00-18:00"     // UTC
  maintenance_window      = "sat:19:00-sat:20:00" // UTC

  tags = "${var.tags}"
}

Terraform只能在RDS实例级别进行管理。配置模式etc是DBA的任务


自动化DBA任务的一种方法是使用本地exec提供程序创建一个空资源,以使用postgres客户端完成工作。

这个问题令人困惑,但他们明确表示只需要一个RDS实例,不是2。你是说你想在同一个实例上有多个postgres模式和用户,由应用程序分隔吗?您目前如何在RDS实例上创建用户和模式?这就是我想通过我的问题了解的。如何使用terraform在同一数据库实例上自动创建多个模式/用户