Предоставление нескольких логических баз данных с помощью Terraform в экземпляре кластера AWS RDS - PullRequest
0 голосов
/ 27 сентября 2018

Итак, у меня есть кластер Aurora MySql с одним экземпляром RDS MySql.Препятствие возникает из-за API, лежащего в основе AWS, позволяющего создать только 1 логическую БД.Таким образом, мне было интересно, если у кого-то из вас уже был опыт такого развертывания, потому что я убегаю от необходимости использовать CLI-клиент Mysql для этого шага, действительно хотел бы автоматизировать его, если это возможно.Есть идеи?

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

AWS API не поддерживает то, что вы хотите сделать, поэтому у Terraform его нет.Некоторые возможные обходные пути:

Пусть Terraform выполнит local-exec как часть процесса обеспечения.Вы можете использовать это для вызова клиента SQL для подключения и создания второй базы данных.

Имеет функцию Lambda, которая подключается к экземпляру RDS и настраивает базу данных по мере необходимости.Запустите Lambda после развертывания RDS.

Пусть ваше приложение проверит базы данных и создаст их.

Создайте один кластер на базу данных (как правило, именно так AWS хочет чего-либо).

0 голосов
/ 15 августа 2019

Terraform имеет провайдера Myql https://www.terraform.io/docs/providers/mysql/index.html:

# Configure the MySQL provider
provider "mysql" {
  endpoint = "my-database.example.com:3306"
  username = "app-user"
  password = "app-password"
}

# Create a Database
resource "mysql_database" "app" {
  name = "my_awesome_app"
}

Таким образом, вы можете создать свой кластер / экземпляр базы данных AWS и затем использовать провайдера mysql для создания другого db:

# Create a database server
resource "aws_db_instance" "default" {
  engine         = "mysql"
  engine_version = "5.6.17"
  instance_class = "db.t1.micro"
  name           = "initial_db"
  username       = "rootuser"
  password       = "rootpasswd"

  # etc, etc; see aws_db_instance docs for more
}

# Configure the MySQL provider based on the outcome of
# creating the aws_db_instance.
provider "mysql" {
  endpoint = "${aws_db_instance.default.endpoint}"
  username = "${aws_db_instance.default.username}"
  password = "${aws_db_instance.default.password}"
}

# Create a second database, in addition to the "initial_db" created
# by the aws_db_instance resource above.
resource "mysql_database" "app" {
  name = "another_db"
}
0 голосов
/ 27 сентября 2018

Возможно, Terraform Docs ответит на этот вопрос: aws_rds_cluster_instance

Как видно из примера, вы можете использовать мета-параметр count для создания нескольких экземпляров.Эти экземпляры будут добавлены в соответствующий кластер.Вы пробовали count = 2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...