GCP Cloud SQL Terraform Postgres 扩展

问题描述 投票:0回答:2

是否有通过 Terraform 在 GCP Postgress Cloud SQL 实例上安装扩展的官方方法?

我发现的最接近的是这个非官方的 Postgres 资源,但目前还不清楚如何将两者联系起来。 他们的跟踪器上的这个问题展示了如何操作,但远非一步一步的指南。

如果有任何区别,我正在尝试使用 PostGIS 提供 Postgres Cloud SQL 实例。

谢谢。

postgresql google-cloud-platform terraform postgis
2个回答
0
投票

Terraform 是一个部署工具,用于创建所有基础设施。要在 Postgres 上安装扩展,您需要一个安装工具,因为您需要连接到数据库并运行命令。

如果你想在数据库中创建一个用户并想授予它一些权限,这也是同样的事情。

总而言之,使用 Terraform 无法实现这一目标。我建议您使用安装工具(例如 Ansible)来执行此操作。

另一种方法是使用 Terraform 创建一个带有启动脚本的微型虚拟机,用于连接数据库、运行命令并在最后销毁自身。


0
投票

您可以使用 PostgreSQL Providerpostgresql_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]
}
© www.soinside.com 2019 - 2024. All rights reserved.