This commit is contained in:
2023-10-01 09:45:28 +02:00
parent a374fe5e66
commit f15202de63
13 changed files with 785 additions and 57 deletions

View File

@@ -0,0 +1,117 @@
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:
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:
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:
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
}