Files
domain/meta/domain-ci/apps.tf
2024-01-25 18:35:22 +01:00

82 lines
3.1 KiB
HCL

locals {
annotations = {
"vynil.solidite.fr/meta" = var.component
"vynil.solidite.fr/name" = var.namespace
"vynil.solidite.fr/domain" = var.domain_name
"vynil.solidite.fr/issuer" = var.issuer
"vynil.solidite.fr/ingress" = var.ingress_class
}
global = {
"domain" = var.namespace
"domain_name" = var.domain_name
"issuer" = var.issuer
"ingress_class" = var.ingress_class
"backups" = var.backups
}
default-mode = var.storage-classes.FilesystemReadWriteMany!=""?"ReadWriteMany":"ReadWriteOnce"
gitea = { for k, v in var.gitea : k => v if !contains(["enable","volume"],k) }
gitea-storage = {
"volume" = {
"size" = lookup(lookup(local.gitea, "volume",{}), "size", "20Gi")
"accessMode" = lookup(lookup(local.gitea, "volume",{}), "accessMode", local.default-mode)
}
}
woodpecker = { for k, v in var.woodpecker : k => v if k!="enable" }
woodpecker-storage = merge({
"storage-server" = {
"size" = lookup(lookup(local.woodpecker, "storage-server",{}), "size", "10Gi")
"accessMode" = lookup(lookup(local.woodpecker, "storage-server",{}), "accessMode", local.default-mode)
}
"storage-agent" = {
"size" = lookup(lookup(local.woodpecker, "storage-agent",{}), "size", "10Gi")
"writeMany" = lookup(lookup(local.woodpecker, "storage-agent",{}), "writeMany", var.storage-classes.FilesystemReadWriteMany!=""?"true":"false")
"storageClass" = lookup(lookup(local.woodpecker, "storage-agent",{}), "storageClass", var.storage-classes.FilesystemReadWriteMany!=""?var.storage-classes.FilesystemReadWriteMany:var.storage-classes.FilesystemReadWriteOnce)
}
}, { for k, v in var.woodpecker : k => v if contains(["storage-server","storage-agent"],k) })
}
resource "kubernetes_namespace_v1" "ci-ns" {
count = ( var.gitea.enable )? 1 : 0
metadata {
annotations = local.annotations
labels = merge(local.common-labels, local.annotations)
name = "${var.namespace}-ci"
}
}
resource "kubectl_manifest" "gitea" {
count = var.gitea.enable ? 1 : 0
depends_on = [kubernetes_namespace_v1.ci-ns]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "gitea"
namespace: "${var.namespace}-ci"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.distributions.domain}"
category: "apps"
component: "gitea"
options: ${jsonencode(merge(local.global, local.gitea-storage, local.gitea))}
EOF
}
resource "kubectl_manifest" "woodpecker" {
count = var.woodpecker.enable ? 1 : 0
depends_on = [kubernetes_namespace_v1.ci-ns]
yaml_body = <<-EOF
apiVersion: "vynil.solidite.fr/v1"
kind: "Install"
metadata:
name: "woodpecker"
namespace: "${var.namespace}-ci"
labels: ${jsonencode(local.common-labels)}
spec:
distrib: "${var.distributions.domain}"
category: "apps"
component: "woodpecker"
options: ${jsonencode(merge(local.global, local.woodpecker-storage, local.woodpecker))}
EOF
}