是否有通过 Terraform 在 GCP Postgress Cloud SQL 实例上安装扩展的官方方法?
我发现的最接近的是这个非官方的 Postgres 资源,但目前还不清楚如何将两者联系起来。 他们的跟踪器上的这个问题展示了如何操作,但远非一步一步的指南。
如果有任何区别,我正在尝试使用 PostGIS 提供 Postgres Cloud SQL 实例。
谢谢。
Terraform 是一个部署工具,用于创建所有基础设施。要在 Postgres 上安装扩展,您需要一个安装工具,因为您需要连接到数据库并运行命令。
如果你想在数据库中创建一个用户并想授予它一些权限,这也是同样的事情。
总而言之,使用 Terraform 无法实现这一目标。我建议您使用安装工具(例如 Ansible)来执行此操作。
另一种方法是使用 Terraform 创建一个带有启动脚本的微型虚拟机,用于连接数据库、运行命令并在最后销毁自身。
您可以使用 PostgreSQL Provider 的 postgresql_extension 资源来管理扩展。
当您使用 Terraform 设置数据库实例时,您可以重用该资源来“链接”两个提供程序。
resource "google_sql_database_instance" "instance" {
name = random_id.instance_name.hex
region = var.region
project = var.project
database_version = var.database_version
}
resource "google_sql_user" "root" {
name = local.root_user
password = random_password.generated_password.result
project = var.project
instance = google_sql_database_instance.instance.name
depends_on = [google_sql_database_instance.instance]
}
provider "postgresql" {
scheme = "gcppostgres"
host = google_sql_database_instance.instance.connection_name
username = google_sql_user.root.name
password = google_sql_user.root.password
superuser = false
}
resource "postgresql_extension" "pgcrypto_extension" {
name = "pgcrypto"
depends_on = [google_sql_database_instance.instance, google_sql_user.root]
}