devops/infra/modules/mongodb/main.tf

59 lines
1.3 KiB
HCL

resource "kubernetes_namespace" "mongodb" {
metadata {
name = var.namespace
}
lifecycle {
ignore_changes = [metadata]
}
}
resource "random_password" "mongodb_root_password" {
length = 40
special = false
}
resource "random_password" "mongodb_replica_set_key" {
length = 40
special = false
}
resource "kubernetes_secret" "mongodb_auth" {
type = "generic"
depends_on = [var.wait_on]
metadata {
name = "mongodb-auth"
namespace = kubernetes_namespace.mongodb.metadata.0.name
}
data = {
mongodb-root-password = random_password.mongodb_root_password.result
mongodb-replica-set-key = random_password.mongodb_replica_set_key.result
}
}
resource "helm_release" "mongodb" {
depends_on = [var.wait_on, kubernetes_secret.mongodb_auth]
name = "mongodb"
repository = "oci://registry-1.docker.io/bitnamicharts"
chart = "mongodb"
namespace = kubernetes_namespace.mongodb.metadata.0.name
version = "16.3.1"
create_namespace = false
wait = true
wait_for_jobs = true
values = [
templatefile("${path.module}/values.yaml", {
usernames = var.usernames,
databases = var.databases,
replicas = var.replicas
})
]
}
output "installed" {
value = true
depends_on = [helm_release.mongodb]
}