42 lines
1.2 KiB
HCL
42 lines
1.2 KiB
HCL
locals {
|
|
sorted-organisation-names = reverse(distinct(sort([for org in var.organisations: org.name])))
|
|
sorted-organisations = flatten([
|
|
for name in local.sorted-organisation-names: [
|
|
for org in var.organisations: merge({
|
|
"stages" = []
|
|
"datasets" = []
|
|
}, org) if org.name == name
|
|
]
|
|
])
|
|
}
|
|
|
|
resource "kubectl_manifest" "organisations" {
|
|
count = length(local.sorted-organisations)
|
|
yaml_body = <<-EOF
|
|
apiVersion: "vynil.solidite.fr/v1"
|
|
kind: "Install"
|
|
metadata:
|
|
name: "org-${local.sorted-organisations[count.index].name}"
|
|
namespace: "${var.namespace}"
|
|
labels: ${jsonencode(local.common_labels)}
|
|
spec:
|
|
distrib: "${var.distributions.domain}"
|
|
category: "share"
|
|
component: "organisation"
|
|
options: ${jsonencode(merge(
|
|
local.global,
|
|
{
|
|
"stages" = []
|
|
"datasets" = []
|
|
"haveGitea" = var.haveGitea
|
|
"haveTekton" = var.haveTekton
|
|
"haveFlux" = var.haveFlux
|
|
"autoCD" = var.autoCD
|
|
"gitea_ssh_prefix" = var.gitea_ssh_prefix
|
|
"gitea_ssh_port" = var.gitea_ssh_port
|
|
},
|
|
{ for k, v in local.sorted-organisations[count.index] : k => v if !contains(["name"], k) }
|
|
))}
|
|
EOF
|
|
}
|