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 }