我正在尝试使用terraform创建Google云sql表。
然而,似乎只有谷歌云sql实例和sql数据库的创建是可能的,通过terraform和使用cloudshell我们可以创建sql表。
但我试图使用terraform创建表,无论是直接使用我的terraform脚本中的sql脚本,还是只是引用terraform中的sql剧本,这些sql脚本将存储在云存储等地方。
任何关于这方面的线索/建议都将非常有用。
提前谢谢。
您可以试用Provisioners
以下是Postgres 的一个简单示例
resource "google_sql_database_instance" "default" {
[...]
provisioner "local-exec" {
command = "PGPASSWORD=<password> psql -f schema.sql -p <port> -U <username> <databasename>"
}
}
Provisioner可用于对本地机器或远程机器上,以便准备服务器或其他服务的基础结构对象。
schema.sql将保存您的表定义。
同样,您也可以为MySQL更新此命令。确保您的本地或CI/CD计算机安装了MySQL cli,以便从那里连接到DB实例并创建表。
Provisioners非常丑陋,但似乎是唯一的方法。。。我花了一整天的时间从gitlab ci/cd中的openapi规范生成mysql模式来解决这个问题。。。我希望从相同的openapi规范配置API网关会更容易。我是一名架构师,我只想要一个数据库、api、客户端和服务器微服务的真相来源。但我认为在Infra repo中生成DB模式将避免使用我不想使用的这个可悲的堡垒。