Files
domain/meta/domain-auth/divisions.tf
2024-05-12 12:03:32 +02:00

127 lines
4.1 KiB
HCL

locals {
sorted-div-clients-names = reverse(distinct(sort([
for div in var.clients.divisions: div.name
])))
sorted-div-clients = flatten([
for name in local.sorted-div-clients-names: [
for div in var.clients.divisions:
merge({
"apps" = []
"teams" = []
}, div) if div.name == name
]
])
sorted-div-employes-names = reverse(distinct(sort([
for div in var.employes.divisions: div.name
])))
sorted-div-employes = flatten([
for name in local.sorted-div-employes-names: [
for div in var.employes.divisions:
merge({
"apps" = []
"teams" = []
}, div) if div.name == name
]
])
sorted-div-fournisseurs-names = reverse(distinct(sort([
for div in var.fournisseurs.divisions: div.name
])))
sorted-div-fournisseurs = flatten([
for name in local.sorted-div-fournisseurs-names: [
for div in var.fournisseurs.divisions:
merge({
"apps" = []
"teams" = []
}, div) if div.name == name
]
])
}
resource "kubectl_manifest" "accounts-management" {
count = var.authentik.enable && var.employes.enable ? 1 : 0
depends_on = [kubernetes_namespace_v1.auth-ns]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "accounts-management"
namespace: "${var.namespace}-auth"
labels: ${jsonencode(local.common_labels)}
spec:
distrib: "${var.distributions.domain}"
category: "share"
component: "accounts-management"
options: ${jsonencode(merge(local.global, {
clients = var.clients
employes = var.employes
fournisseurs = var.fournisseurs
}))}
EOF
}
resource "kubectl_manifest" "employes-divisions" {
count = var.authentik.enable && var.employes.enable ? length(local.sorted-div-employes) : 0
depends_on = [kubernetes_namespace_v1.auth-ns,kubectl_manifest.accounts-management]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "employes-${local.sorted-div-employes[count.index].name}"
namespace: "${var.namespace}-auth"
labels: ${jsonencode(local.common_labels)}
spec:
distrib: "${var.distributions.domain}"
category: "share"
component: "division"
options: ${jsonencode(merge(local.global, {
parent = "employes"
apps = local.sorted-div-employes[count.index].apps
teams = local.sorted-div-employes[count.index].teams
}))}
EOF
}
resource "kubectl_manifest" "clients-divisions" {
count = var.authentik.enable && var.employes.enable && var.clients.enable ? length(local.sorted-div-clients) : 0
depends_on = [kubernetes_namespace_v1.auth-ns,kubectl_manifest.accounts-management]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "clients-${local.sorted-div-clients[count.index].name}"
namespace: "${var.namespace}-auth"
labels: ${jsonencode(local.common_labels)}
spec:
distrib: "${var.distributions.domain}"
category: "share"
component: "division"
options: ${jsonencode(merge(local.global, {
parent = "clients"
apps = local.sorted-div-clients[count.index].apps
teams = local.sorted-div-clients[count.index].teams
}))}
EOF
}
resource "kubectl_manifest" "fournisseurs-divisions" {
count = var.authentik.enable && var.employes.enable && var.fournisseurs.enable ? length(local.sorted-div-fournisseurs) : 0
depends_on = [kubernetes_namespace_v1.auth-ns,kubectl_manifest.accounts-management]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "fournisseurs-${local.sorted-div-fournisseurs[count.index].name}"
namespace: "${var.namespace}-auth"
labels: ${jsonencode(local.common_labels)}
spec:
distrib: "${var.distributions.domain}"
category: "share"
component: "division"
options: ${jsonencode(merge(local.global, {
parent = "fournisseurs"
apps = local.sorted-div-fournisseurs[count.index].apps
teams = local.sorted-div-fournisseurs[count.index].teams
}))}
EOF
}