所以,我有一个Aurora MySql集群,并配置了一个RDS MySql实例。AWS 底层 API 只允许创建 1 个逻辑数据库时会出现障碍。因此,我想知道你们中是否有人已经有过这种部署的经验,因为我正在逃避在此步骤中使用Mysql客户端CLI,如果可能的话,真的很想自动化它。有什么想法吗?
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"
}
AWS API 不支持您要执行的操作,因此 Terraform 不支持它。 一些可能的解决方法:
让 Terraform 在预配过程中执行本地执行。您可以使用它来调用 SQL 客户端进行连接并创建第二个数据库。
具有连接到 RDS 实例并根据需要设置数据库的 Lambda 函数。在部署 RDS 后触发 Lambda。
让应用程序检查数据库并创建它们。
为每个数据库创建一个集群(这通常是 AWS 想要的方式(。