Terraform две настройки баз данных PostgreSQL - PullRequest
0 голосов
/ 19 июня 2019

Я очень плохо знаком с сценариями тераформ.Наша система работает в AWS, и у нас есть один экземпляр сервера базы данных, доступ к которому осуществляется несколькими микро-сервисами.

Каждый микро-сервис, которому необходимо сохранить некоторые данные, должен указывать на другую базу данных (схему) на том же сервере базы данных.,Мы предпочитаем, чтобы каждый сервис имел собственную схему, чтобы сервисы были полностью отделены друг от друга.Однако создание отдельного экземпляра базы данных для достижения этого было бы слишком много, так как некоторые сервисы сохраняются только близко к нулю, поэтому это будет пустая трата времени,

Я создал ресурс PostgreSQL в services.tf *Сценарий 1006 *, который является общим для всех микросервисов:

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 хочу создать имя базы данных corespondent.Я не думаю, что приведенное ниже является правильным, я просто добавляю его, чтобы дать вам представление о том, чего я пытаюсь достичь.

Итак, service-1.tf будет содержать:

resource "aws_db_instance" "my-system" {
  name                    = "service_1"
}

И service-2.tf будет содержать:

resource "aws_db_instance" "my-system" {
  name                    = "service_2"
}

Мой вопрос: что я должен добавить в service-1.tf и service-2.tf, чтобы сделать это возможным.

Заранее благодарим вас за ваш вклад.

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Terraform может управлять только на уровне экземпляра RDS.Конфигурирование схемы и т. Д. Является задачей DBA.

Одним из способов автоматизации задач DBA является создание null_resource с использованием поставщика local-exec для использования postgres.клиент для выполнения работы.

0 голосов
/ 19 июня 2019

вы можете использовать count для управления только одним 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}"
}
...