是否有官方方式通过Terraform为GCP Cloud SQL Postgres安装扩展
GCP Cloud SQL Postgres 扩展(PostGIS)Terraform 部署方案
前置说明
- 官方Google Cloud Terraform Provider目前未提供原生的Postgres扩展管理资源,生产环境主流方案是使用社区维护的postgresql provider实现扩展安装
分步操作
1. 声明Provider依赖
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 4.0" } postgresql = { source = "cyrilgdn/postgresql" version = "~> 1.18" } } }
2. 部署Cloud SQL Postgres实例基础配置
# Cloud SQL实例配置 resource "google_sql_database_instance" "postgres" { name = "postgres-instance" database_version = "POSTGRES_14" settings { tier = "db-f1-micro" # 可选:配置授权网络,允许运行Terraform的设备IP访问实例 ip_configuration { authorized_networks { name = "terraform-runner" value = "你的设备出口公网IP/32" } } } } # 目标业务数据库 resource "google_sql_database" "app_db" { name = "app_db" instance = google_sql_database_instance.postgres.name }
如果不想暴露实例公网,可跳过授权网络配置,后续通过Cloud SQL Auth Proxy做本地端口转发连接实例。
3. 配置PostgreSQL Provider关联Cloud SQL实例
provider "postgresql" { host = google_sql_database_instance.postgres.public_ip_address port = 5432 username = "postgres" # 支持替换为你自定义的高权限用户 password = "你的实例管理员密码" # 建议通过google_sql_user资源或Secret Manager管理敏感信息 database = google_sql_database.app_db.name sslmode = "require" # Cloud SQL强制要求SSL连接,为必填参数 }
如果使用Cloud SQL Auth Proxy连接,将host改为127.0.0.1,port改为本地转发的对应端口即可。
4. 安装PostGIS扩展
resource "postgresql_extension" "postgis" { name = "postgis" schema = "public" # 可按需调整扩展所属的schema depends_on = [ google_sql_database_instance.postgres, google_sql_database.app_db ] }
注意事项
- 运行
terraform apply前请确认运行Terraform的设备可正常连通Cloud SQL实例的5432端口 - 若需要安装其他Postgres扩展,只需替换
postgresql_extension资源中的name参数为对应扩展名即可,需确认扩展在Cloud SQL支持的扩展列表范围内 - PostGIS扩展版本会自动适配当前Postgres实例的版本,无需额外指定版本参数
内容的提问来源于stack exchange,提问作者Juan Delgado
相关产品推荐
相关产品推荐

