From ae97b22a53d2836ebfc9cd36f1fda1f85da89055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Huss?= Date: Tue, 18 Jul 2023 09:36:33 +0200 Subject: [PATCH] adding Nextcloud in the metas --- meta/domain-apps/apps.tf | 43 +++++++++++ meta/domain-apps/index.yaml | 61 +++++++++++++++ meta/domain/index.yaml | 146 +++++++++++++++++++++--------------- meta/domain/installs.tf | 17 +++++ 4 files changed, 205 insertions(+), 62 deletions(-) create mode 100644 meta/domain-apps/apps.tf create mode 100644 meta/domain-apps/index.yaml diff --git a/meta/domain-apps/apps.tf b/meta/domain-apps/apps.tf new file mode 100644 index 0000000..45598d5 --- /dev/null +++ b/meta/domain-apps/apps.tf @@ -0,0 +1,43 @@ +locals { + annotations = { + "vynil.solidite.fr/meta" = "domain-auth" + "vynil.solidite.fr/name" = "${var.namespace}-auth" + "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 + } + nextcloud = { for k, v in var.nextcloud : k => v if k!="enable" } +} + +resource "kubernetes_namespace_v1" "files-ns" { + count = var.nextcloud.enable ? 1 : 0 + metadata { + annotations = local.annotations + labels = merge(local.common-labels, local.annotations) + name = "${var.namespace}-files" + } +} + +resource "kubectl_manifest" "nextcloud" { + count = var.authentik.enable || var.authentik-ldap.enable || var.authentik-forward.enable ? 1 : 0 + depends_on = [kubernetes_namespace_v1.auth-ns] + yaml_body = <<-EOF + apiVersion: "vynil.solidite.fr/v1" + kind: "Install" + metadata: + name: "nextcloud" + namespace: "${var.namespace}-files" + labels: ${jsonencode(local.common-labels)} + spec: + distrib: "${var.distributions.domain}" + category: "apps" + component: "nextcloud" + options: ${jsonencode(merge(local.global, local.nextcloud))} + EOF +} diff --git a/meta/domain-apps/index.yaml b/meta/domain-apps/index.yaml new file mode 100644 index 0000000..7fb63cd --- /dev/null +++ b/meta/domain-apps/index.yaml @@ -0,0 +1,61 @@ +--- +apiVersion: vinyl.solidite.fr/v1beta1 +kind: Component +category: meta +metadata: + name: domain-apps + description: null +options: + nextcloud: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + domain-name: + default: your_company.com + examples: + - your_company.com + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + distributions: + default: + core: core + domain: domain + examples: + - core: core + domain: domain + properties: + core: + default: core + type: string + domain: + default: domain + type: string + type: object + ingress-class: + default: traefik + examples: + - traefik + type: string + domain: + default: your-company + examples: + - your-company + type: string +dependencies: [] +providers: + kubernetes: true + authentik: null + kubectl: true + postgresql: null + restapi: null + http: null diff --git a/meta/domain/index.yaml b/meta/domain/index.yaml index 9114985..6eeeb0a 100644 --- a/meta/domain/index.yaml +++ b/meta/domain/index.yaml @@ -6,68 +6,6 @@ metadata: name: domain description: null options: - auth: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - ingress-class: - default: traefik - examples: - - traefik - type: string - domain-name: - default: your_company.com - examples: - - your_company.com - type: string - distributions: - default: - core: core - domain: domain - examples: - - core: core - domain: domain - properties: - core: - default: core - type: string - domain: - default: domain - type: string - type: object - erp: - default: - dolibarr: - enable: true - enable: false - examples: - - dolibarr: - enable: true - enable: false - properties: - dolibarr: - default: - enable: true - properties: - enable: - default: true - type: boolean - type: object - enable: - default: false - type: boolean - type: object - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string ci: default: enable: false @@ -90,6 +28,16 @@ options: type: boolean type: object type: object + auth: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object infra: default: enable: false @@ -112,6 +60,80 @@ options: type: boolean type: object type: object + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + ingress-class: + default: traefik + examples: + - traefik + type: string + domain-name: + default: your_company.com + examples: + - your_company.com + type: string + erp: + default: + dolibarr: + enable: true + enable: false + examples: + - dolibarr: + enable: true + enable: false + properties: + dolibarr: + default: + enable: true + properties: + enable: + default: true + type: boolean + type: object + enable: + default: false + type: boolean + type: object + distributions: + default: + core: core + domain: domain + examples: + - core: core + domain: domain + properties: + core: + default: core + type: string + domain: + default: domain + type: string + type: object + apps: + default: + enable: false + nextcloud: + enable: true + examples: + - enable: false + nextcloud: + enable: true + properties: + enable: + default: false + type: boolean + nextcloud: + default: + enable: true + properties: + enable: + default: true + type: boolean + type: object + type: object dependencies: [] providers: kubernetes: null diff --git a/meta/domain/installs.tf b/meta/domain/installs.tf index 3c1b0ee..22cc725 100644 --- a/meta/domain/installs.tf +++ b/meta/domain/installs.tf @@ -17,6 +17,7 @@ locals { infra = { for k, v in var.infra : k => v if k!="enable" } ci = { for k, v in var.ci : k => v if k!="enable" } erp = { for k, v in var.erp : k => v if k!="enable" } + apps = { for k, v in var.apps : k => v if k!="enable" } # Force install authentik and it's modules when any are needed use-ldap = (var.ci.enable && var.ci.gitea.enable) || (var.erp.enable && var.erp.dolibarr.enable) @@ -97,3 +98,19 @@ resource "kubectl_manifest" "erp" { options: ${jsonencode(merge(local.global, local.erp))} EOF } +resource "kubectl_manifest" "apps" { + count = var.apps.enable ? 1 : 0 + yaml_body = <<-EOF + apiVersion: "vynil.solidite.fr/v1" + kind: "Install" + metadata: + name: "apps" + namespace: "${var.namespace}" + labels: ${jsonencode(local.common-labels)} + spec: + distrib: "${var.distributions.domain}" + category: "meta" + component: "domain-apps" + options: ${jsonencode(merge(local.global, local.apps))} + EOF +}