Files
infra-kit/modules/app-database/main.tf
T
stolzor 64be99308b
terraform / check (push) Canceled after 0s
Initial commit
2026-10-11 20:30:21 +03:00

43 lines
1.1 KiB
Terraform

resource "random_password" "this" {
for_each = local.databases
length = 32
special = false
}
resource "postgresql_role" "this" {
for_each = local.databases
name = each.value.username
login = true
password = random_password.this[each.key].result
}
resource "postgresql_database" "this" {
for_each = local.databases
name = each.key
owner = postgresql_role.this[each.key].name
}
resource "postgresql_extension" "vector" {
for_each = { for key, value in local.databases : key => value if value.pgvector }
name = "vector"
database = postgresql_database.this[each.key].name
}
resource "postgresql_grant" "public" {
for_each = postgresql_database.this
database = each.value.name
role = "public"
object_type = "database"
privileges = []
}
resource "postgresql_grant" "owner" {
for_each = postgresql_database.this
database = each.value.name
role = postgresql_role.this[each.key].name
object_type = "database"
privileges = ["CONNECT", "CREATE", "TEMPORARY"]
depends_on = [postgresql_grant.public]
}