在 AWS RDS 集群实例上使用 Terraform 预置多个逻辑数据库
Provision multiple logical databases with Terraform on AWS RDS cluster instance
所以,我已经配置了一个 RDS MySql 实例的 Aurora MySql 集群。障碍发生在 AWS 底层 API 只允许创建 1 个逻辑数据库。因此,我想知道你们中是否有人已经有过此类部署的经验,因为我 运行 不必为此步骤使用 Mysql 客户端 CLI,如果可能的话真的很想自动化它。有什么想法吗?
AWS API 不支持你想做的事情,因此 Terraform 没有它。一些可能的解决方法:
让 Terraform 在配置过程中执行 local-exec。您可以使用它来调用 SQL 客户端来连接并创建第二个数据库。
拥有连接到 RDS 实例并根据需要设置数据库的 Lambda 函数。在部署 RDS 后触发 Lambda。
让您的应用程序检查数据库并创建它们。
为每个数据库创建一个集群(这通常是 AWS 想要的)。
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 数据库 cluster/instance,然后使用 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"
}
所以,我已经配置了一个 RDS MySql 实例的 Aurora MySql 集群。障碍发生在 AWS 底层 API 只允许创建 1 个逻辑数据库。因此,我想知道你们中是否有人已经有过此类部署的经验,因为我 运行 不必为此步骤使用 Mysql 客户端 CLI,如果可能的话真的很想自动化它。有什么想法吗?
AWS API 不支持你想做的事情,因此 Terraform 没有它。一些可能的解决方法:
让 Terraform 在配置过程中执行 local-exec。您可以使用它来调用 SQL 客户端来连接并创建第二个数据库。
拥有连接到 RDS 实例并根据需要设置数据库的 Lambda 函数。在部署 RDS 后触发 Lambda。
让您的应用程序检查数据库并创建它们。
为每个数据库创建一个集群(这通常是 AWS 想要的)。
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 数据库 cluster/instance,然后使用 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"
}