在AWS RDS集群实例上使用Terraform设置多个逻辑数据库

时间:2018-09-27 17:28:02

标签: database amazon-web-services terraform amazon-rds-aurora terraform-provider-aws

因此,我已经配置了一个RDS MySql实例的Aurora MySql集群。 AWS基础API仅允许创建1个逻辑数据库,这是一个障碍。因此,我想知道你们中是否有人曾经有过这样的部署经验,我在此步骤中不必使用Mysql客户端CLI,因此如果可能的话,真的想实现自动化。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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提供程序创建另一个数据库:

# 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"
}

答案 1 :(得分:1)

AWS API不支持您要执行的操作,因此Terraform没有它。一些可能的解决方法:

在配置过程中,让Terraform执行本地执行。您可以使用它来调用SQL客户端以连接并创建第二个数据库。

具有一个Lambda函数,该函数可以连接到RDS实例并根据需要设置数据库。部署RDS后触发Lambda。

让您的应用程序检查数据库并创建它们。

每个数据库创建一个集群(这通常是AWS想要的方式)。

答案 2 :(得分:-1)

也许Terraform Docs会回答以下问题: aws_rds_cluster_instance

如示例所示,您可以使用元参数count来创建多个实例。该实例将被添加到相应的集群中。您尝试过count = 2吗?