127 lines
4.1 KiB
HCL
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
|
|
}
|