Files
domain/meta/domain-ci/apps.tf
2023-09-21 12:44:34 +02:00

75 lines
2.5 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
}
gitea = { for k, v in var.gitea : k => v if contains(["enable","storage-server","storage-agent"],k) }
woodpecker = { for k, v in var.woodpecker : k => v if k!="enable" }
woodpecker-storage = merge({
"storage-server" = {
"size" = "10Gi"
"accessMode" = var.storage-classes.FilesystemReadWriteMany!=""?"ReadWriteMany":"ReadWriteOnce"
}
"storage-agent" = {
"size" = "10Gi"
"writeMany" = var.storage-classes.FilesystemReadWriteMany!=""?"true":"false"
"storageClass" = var.storage-classes.FilesystemReadWriteMany!=""?var.storage-classes.FilesystemReadWriteMany:var.storage-classes.FilesystemReadWriteOnce
}
}, { for k, v in var.dolibarr : 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))}
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
}