devops/infra/modules/postgresql/main.tf

77 lines
1.8 KiB
HCL

resource "kubernetes_namespace" "postgresql" {
count = var.enabled ? 1 : 0
metadata {
name = var.namespace
}
lifecycle {
ignore_changes = [metadata]
}
}
resource "random_password" "postgresql_user_password" {
length = 40
special = true
override_special = "!#$%&*()-_=+[]{}<>:?"
min_special = 2
min_upper = 2
min_lower = 2
min_numeric = 2
}
resource "random_password" "postgresql_root_password" {
length = 40
special = true
override_special = "!#$%&*()-_=+[]{}<>:?"
min_special = 2
min_upper = 2
min_lower = 2
min_numeric = 2
}
resource "kubernetes_secret" "postgresql_auth" {
count = var.enabled ? 1 : 0
type = "generic"
depends_on = [var.wait_on]
metadata {
name = "postgresql-auth"
namespace = kubernetes_namespace.postgresql[count.index].metadata.0.name
}
data = {
password = random_password.postgresql_user_password.result
rootpassword = random_password.postgresql_root_password.result
}
}
resource "helm_release" "postgresql" {
count = var.enabled ? 1 : 0
depends_on = [var.wait_on, kubernetes_secret.postgresql_auth]
name = "postgresql"
repository = "https://charts.bitnami.com/bitnami"
chart = "postgresql"
namespace = kubernetes_namespace.postgresql[count.index].metadata.0.name
version = "16.0.5"
wait = true
values = [
templatefile("${path.module}/values.yaml", { username = var.username })
]
}
output "installed" {
value = true
depends_on = [helm_release.postgresql]
}
output "password" {
value = random_password.postgresql_user_password.result
sensitive = true
}
output "root_password" {
value = random_password.postgresql_root_password.result
sensitive = true
}