terraform-modules/postgres/readme.md
2025-09-08 16:00:13 +02:00

2.1 KiB

Module for creating Postgres Flex Instance with Databases and Users

Example


# Postgres Flex Instance
module "postgres-flex" {
  source                                = "git::https://commerce-platform.git.onstackit.cloud/commerce-platform-public/terraform-modules//postgres?ref=main
  stackit_project_id                    = local.stackit_project_id
  postgres_instance_name                = "example-db"
  postgres_instance_replicas            = 1
  postgres_instance_storage             = {
    class = "premium-perf2-stackit"
    size = 5
  }

  postgres_instance_flavor              = {
    cpu = 2
    ram = 4
  }

  postgres_instance_acl                 = [
    "193.148.160.0/19",
    "45.129.40.0/21"
  ]

  postgres_instance_backup_schedule     = "00 02 * * *"
  postgres_instance_version             = "17"
  postgres_instance_region              = "eu01"

  postgres_databases = [
  {
    db_name  = "database-a"
    user_name  = "user-a"
    user_roles = ["createdb", "login"]
  },
  {
    db_name  = "database-b"
    user_name  = "user-b"
    user_roles = ["createdb", "login"]
  },
  ]
}

# safe credentials 
module "postgres-credentials-sm-a" {
  source                     = "git::https://commerce-platform.git.onstackit.cloud/commerce-platform-public/terraform-modules//create-secret?ref=main"
  secret_manager_instance_id = local.secret_manager_instance_id
  secret_manager_username    = var.secret_manager_username
  secret_manager_password    = var.secret_manager_password

  secrets_path = "service-a/postgres"
  secret_data  = module.postgres-flex.postgres_credentials["user-a"]
}

module "postgres-credentials-sm-b" {
  source                     = "git::https://commerce-platform.git.onstackit.cloud/commerce-platform-public/terraform-modules//create-secret?ref=main"
  secret_manager_instance_id = local.secret_manager_instance_id
  secret_manager_username    = var.secret_manager_username
  secret_manager_password    = var.secret_manager_password

  secrets_path = "service-b/postgres"
  secret_data  = module.postgres-flex.postgres_credentials["user-b"]
}