diff --git a/meta/domain-apps/apps.tf b/meta/domain-apps/apps.tf index 25dd836..fb83713 100644 --- a/meta/domain-apps/apps.tf +++ b/meta/domain-apps/apps.tf @@ -1,4 +1,8 @@ locals { + annotations = { + "vynil.solidite.fr/meta" = var.component + "vynil.solidite.fr/name" = var.namespace + } annotations_default = { "default.vynil.solidite.fr/sso_vynil" = var.sso_vynil "default.vynil.solidite.fr/domain_name" = var.domain_name @@ -42,9 +46,9 @@ locals { "class" = var.storage.volume.class } nextcloud = merge(local.global,{ for k, v in var.nextcloud : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.nextcloud, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.nextcloud, "backups", {})) storage = merge({ for k, v in lookup(var.nextcloud, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = lookup(lookup(var.nextcloud, "storage", {}), "volume", local.global-volume) + volume = lookup(local.global-volume, lookup(var.nextcloud, "storage", {}), "volume") }) }) } @@ -52,8 +56,8 @@ locals { resource "kubernetes_namespace_v1" "files-ns" { count = var.nextcloud.enable ? 1 : 0 metadata { - annotations = local.annotations_default - labels = local.common-labels + annotations = merge(local.annotations, local.annotations_default) + labels = merge(local.common-labels, local.annotations) name = "${var.namespace}-files" } } diff --git a/meta/domain-apps/index.yaml b/meta/domain-apps/index.yaml index 0533fbf..168e0f2 100644 --- a/meta/domain-apps/index.yaml +++ b/meta/domain-apps/index.yaml @@ -6,27 +6,10 @@ metadata: name: domain-apps description: null options: - nextcloud: - default: - enable: false + app_group: + default: apps examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - x-vynil-category: apps - x-vynil-package: nextcloud - language: - default: fr_FR - examples: - - fr_FR - type: string - domain: - default: your-company - examples: - - your-company + - apps type: string backups: default: @@ -68,31 +51,6 @@ options: default: false type: boolean type: object - timezone: - default: Europe/Paris - examples: - - Europe/Paris - type: string - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - ingress_class: - default: traefik - examples: - - traefik - type: string - sso_vynil: - default: true - examples: - - true - type: boolean - domain_name: - default: your-company.com - examples: - - your-company.com - type: string distributions: default: core: core @@ -108,11 +66,48 @@ options: default: domain type: string type: object - app_group: - default: apps + domain: + default: your-company examples: - - apps + - your-company type: string + domain_name: + default: your-company.com + examples: + - your-company.com + type: string + ingress_class: + default: traefik + examples: + - traefik + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + language: + default: fr_FR + examples: + - fr_FR + type: string + nextcloud: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: nextcloud + sso_vynil: + default: true + examples: + - true + type: boolean storage: default: volume: @@ -136,6 +131,11 @@ options: type: string type: object type: object + timezone: + default: Europe/Paris + examples: + - Europe/Paris + type: string dependencies: [] providers: kubernetes: true diff --git a/meta/domain-auth/apps.tf b/meta/domain-auth/apps.tf index b078094..6547ef5 100644 --- a/meta/domain-auth/apps.tf +++ b/meta/domain-auth/apps.tf @@ -46,21 +46,21 @@ locals { "class" = var.storage.volume.class } authentik = merge(local.global,{ for k, v in var.authentik : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.authentik, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.authentik, "backups", {})) storage = merge({ for k, v in lookup(var.authentik, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.authentik, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.authentik, "storage", {}), "volume", {})) }) }) authentik-ldap = merge(local.global,{ for k, v in var.authentik-ldap : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.authentik-ldap, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.authentik-ldap, "backups", {})) storage = merge({ for k, v in lookup(var.authentik-ldap, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.authentik-ldap, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.authentik-ldap, "storage", {}), "volume", {})) }) }) authentik-forward = merge(local.global,{ for k, v in var.authentik-forward : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.authentik-forward, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.authentik-forward, "backups", {})) storage = merge({ for k, v in lookup(var.authentik-forward, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.authentik-forward, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.authentik-forward, "storage", {}), "volume", {})) }) }) } diff --git a/meta/domain-auth/index.yaml b/meta/domain-auth/index.yaml index 964182c..e7d078d 100644 --- a/meta/domain-auth/index.yaml +++ b/meta/domain-auth/index.yaml @@ -6,16 +6,41 @@ metadata: name: domain-auth description: null options: - issuer: - default: letsencrypt-prod + app_group: + default: apps examples: - - letsencrypt-prod + - apps type: string - domain: - default: your-company + authentik: + default: + enable: true examples: - - your-company - type: string + - enable: true + properties: + enable: + default: true + type: boolean + type: object + authentik-forward: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + authentik-ldap: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object backups: default: enable: false @@ -91,6 +116,31 @@ options: 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 + domain: + default: your-company + examples: + - your-company + type: string + domain_name: + default: your-company.com + examples: + - your-company.com + type: string employes: default: apps: [] @@ -126,69 +176,6 @@ options: default: true type: boolean type: object - timezone: - default: Europe/Paris - examples: - - Europe/Paris - 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 - language: - default: fr_FR - examples: - - fr_FR - type: string - sso_vynil: - default: true - examples: - - true - type: boolean - ingress_class: - default: traefik - examples: - - traefik - type: string - storage: - default: - volume: - accessMode: ReadWriteOnce - class: '' - examples: - - volume: - accessMode: ReadWriteOnce - class: '' - properties: - volume: - default: - accessMode: ReadWriteOnce - class: '' - properties: - accessMode: - default: ReadWriteOnce - type: string - class: - default: '' - type: string - type: object - type: object - domain_name: - default: your-company.com - examples: - - your-company.com - type: string fournisseurs: default: apps: [] @@ -224,47 +211,61 @@ options: default: false type: boolean type: object - authentik: - default: - enable: true + ingress_class: + default: traefik examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - app_group: - default: apps - examples: - - apps + - traefik type: string - authentik-forward: - default: - enable: false + issuer: + default: letsencrypt-prod examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - authentik-ldap: - default: - enable: false + - letsencrypt-prod + type: string + language: + default: fr_FR examples: - - enable: false + - fr_FR + type: string + sso_vynil: + default: true + examples: + - true + type: boolean + storage: + default: + volume: + accessMode: ReadWriteOnce + class: '' + examples: + - volume: + accessMode: ReadWriteOnce + class: '' properties: - enable: - default: false - type: boolean + volume: + default: + accessMode: ReadWriteOnce + class: '' + properties: + accessMode: + default: ReadWriteOnce + type: string + class: + default: '' + type: string + type: object type: object + timezone: + default: Europe/Paris + examples: + - Europe/Paris + type: string dependencies: [] providers: kubernetes: true authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain-ci/apps.tf b/meta/domain-ci/apps.tf index 4ad5ec8..45ebe74 100644 --- a/meta/domain-ci/apps.tf +++ b/meta/domain-ci/apps.tf @@ -46,15 +46,15 @@ locals { "class" = var.storage.volume.class } gitea = merge(local.global,{ for k, v in var.gitea : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.gitea, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.gitea, "backups", {})) storage = merge({ for k, v in lookup(var.gitea, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.gitea, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.gitea, "storage", {}), "volume", {})) }) }) woodpecker = merge(local.global,{ for k, v in var.woodpecker : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.woodpecker, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.woodpecker, "backups", {})) storage = merge({ for k, v in lookup(var.woodpecker, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.woodpecker, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.woodpecker, "storage", {}), "volume", {})) }) }) } diff --git a/meta/domain-ci/index.yaml b/meta/domain-ci/index.yaml index a9961e4..1ce6ed2 100644 --- a/meta/domain-ci/index.yaml +++ b/meta/domain-ci/index.yaml @@ -6,98 +6,6 @@ metadata: name: domain-ci description: null options: - timezone: - default: Europe/Paris - examples: - - Europe/Paris - 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 - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - storage: - default: - volume: - accessMode: ReadWriteOnce - class: '' - examples: - - volume: - accessMode: ReadWriteOnce - class: '' - properties: - volume: - default: - accessMode: ReadWriteOnce - class: '' - properties: - accessMode: - default: ReadWriteOnce - type: string - class: - default: '' - type: string - type: object - type: object - gitea: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - x-vynil-category: apps - x-vynil-package: gitea - ingress_class: - default: traefik - examples: - - traefik - type: string - sso_vynil: - default: true - examples: - - true - type: boolean - woodpecker: - default: - enable: false - examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - x-vynil-category: apps - x-vynil-package: woodpecker - language: - default: fr_FR - examples: - - fr_FR - type: string - domain_name: - default: your-company.com - examples: - - your-company.com - type: string app_group: default: dev examples: @@ -143,17 +51,110 @@ options: 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 domain: default: your-company examples: - your-company type: string + domain_name: + default: your-company.com + examples: + - your-company.com + type: string + gitea: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: gitea + ingress_class: + default: traefik + examples: + - traefik + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + language: + default: fr_FR + examples: + - fr_FR + type: string + sso_vynil: + default: true + examples: + - true + type: boolean + storage: + default: + volume: + accessMode: ReadWriteOnce + class: '' + examples: + - volume: + accessMode: ReadWriteOnce + class: '' + properties: + volume: + default: + accessMode: ReadWriteOnce + class: '' + properties: + accessMode: + default: ReadWriteOnce + type: string + class: + default: '' + type: string + type: object + type: object + timezone: + default: Europe/Paris + examples: + - Europe/Paris + type: string + woodpecker: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: woodpecker dependencies: [] providers: kubernetes: true authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain-devspaces/apps.tf b/meta/domain-devspaces/apps.tf index 297f06c..2cd7171 100644 --- a/meta/domain-devspaces/apps.tf +++ b/meta/domain-devspaces/apps.tf @@ -59,9 +59,9 @@ locals { ]) ) }, { for k, v in var.apps.okd : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.apps.okd, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.apps.okd, "backups", {})) storage = merge({ for k, v in lookup(var.apps.okd, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.apps.okd, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.apps.okd, "storage", {}), "volume", {})) }) }) gramo = merge(local.global-apps, { @@ -74,12 +74,21 @@ locals { ]) ) }, { for k, v in var.apps.gramo : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.apps.gramo, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.apps.gramo, "backups", {})) storage = merge({ for k, v in lookup(var.apps.gramo, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.apps.gramo, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.apps.gramo, "storage", {}), "volume", {})) }) }) dbgate = merge(local.global-apps, { + "namespaces" = concat([ + for station in local.sorted-station-names: "${var.domain}-devspaces-${station}" + ],flatten([ + for org in local.sorted-organisations:[ + for stage in reverse(distinct(sort([for s in lookup(org, "stages", []): s.name]))): "${var.domain}-org-${org.name}-${stage}" + ] + ]) + ) + }, { "pg" = concat( flatten([for ds in local.sorted-datasets: [for db in lookup(ds, "databases", []): { "name" = "${ds.name}-dataset-pg" @@ -181,9 +190,9 @@ locals { var.external-redis ) }, { for k, v in var.apps.dbgate : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.apps.dbgate, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.apps.dbgate, "backups", {})) storage = merge({ for k, v in lookup(var.apps.dbgate, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.apps.dbgate, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.apps.dbgate, "storage", {}), "volume", {})) }) }) } diff --git a/meta/domain-devspaces/index.yaml b/meta/domain-devspaces/index.yaml index 98238a2..7bec615 100644 --- a/meta/domain-devspaces/index.yaml +++ b/meta/domain-devspaces/index.yaml @@ -6,73 +6,11 @@ metadata: name: domain-devspaces description: null options: - ingress_class: - default: traefik + app_group: + default: dev examples: - - traefik + - dev type: string - storage: - default: - volume: - accessMode: ReadWriteOnce - class: '' - examples: - - volume: - accessMode: ReadWriteOnce - class: '' - properties: - volume: - default: - accessMode: ReadWriteOnce - class: '' - properties: - accessMode: - default: ReadWriteOnce - type: string - class: - default: '' - type: string - type: object - type: object - images: - default: - codeserver: - pull_policy: IfNotPresent - registry: docker.io - repository: sebt3/code-server - tag: 4.18 - examples: - - codeserver: - pull_policy: IfNotPresent - registry: docker.io - repository: sebt3/code-server - tag: 4.18 - properties: - codeserver: - default: - pull_policy: IfNotPresent - registry: docker.io - repository: sebt3/code-server - tag: 4.18 - properties: - pull_policy: - default: IfNotPresent - enum: - - Always - - Never - - IfNotPresent - type: string - registry: - default: docker.io - type: string - repository: - default: sebt3/code-server - type: string - tag: - default: 4.18 - type: number - type: object - type: object apps: default: dbgate: @@ -144,6 +82,46 @@ options: type: boolean type: object type: object + backups: + default: + enable: false + endpoint: '' + key_id_key: s3-id + restic_key: bck-password + secret_key: s3-secret + secret_name: backup-settings + use_barman: false + examples: + - enable: false + endpoint: '' + key_id_key: s3-id + restic_key: bck-password + secret_key: s3-secret + secret_name: backup-settings + use_barman: false + properties: + enable: + default: false + type: boolean + endpoint: + default: '' + type: string + key_id_key: + default: s3-id + type: string + restic_key: + default: bck-password + type: string + secret_key: + default: s3-secret + type: string + secret_name: + default: backup-settings + type: string + use_barman: + default: false + type: boolean + type: object distributions: default: core: core @@ -159,6 +137,173 @@ options: default: domain type: string type: object + domain: + default: your-company + examples: + - your-company + type: string + domain_name: + default: your-company.com + examples: + - your-company.com + type: string + external-marias: + default: [] + examples: + - [] + items: + properties: + name: + default: '' + type: string + namespace: + default: '' + type: string + secret: + properties: + key: + default: '' + type: string + name: + default: '' + type: string + type: object + username: + default: '' + type: string + type: object + type: array + external-mongos: + default: [] + examples: + - [] + items: + properties: + dbname: + default: '' + type: string + name: + default: '' + type: string + namespace: + default: '' + type: string + secret: + properties: + key: + default: '' + type: string + name: + default: '' + type: string + type: object + username: + default: '' + type: string + type: object + type: array + external-pgs: + default: [] + examples: + - [] + items: + properties: + dbname: + default: '' + type: string + name: + default: '' + type: string + namespace: + default: '' + type: string + secret: + properties: + key: + default: '' + type: string + name: + default: '' + type: string + type: object + username: + default: '' + type: string + type: object + type: array + external-redis: + default: [] + examples: + - [] + items: + properties: + name: + default: '' + type: string + namespace: + default: '' + type: string + type: object + type: array + haveGitea: + default: false + examples: + - false + type: boolean + images: + default: + codeserver: + pull_policy: IfNotPresent + registry: docker.io + repository: sebt3/code-server + tag: 4.18 + examples: + - codeserver: + pull_policy: IfNotPresent + registry: docker.io + repository: sebt3/code-server + tag: 4.18 + properties: + codeserver: + default: + pull_policy: IfNotPresent + registry: docker.io + repository: sebt3/code-server + tag: 4.18 + properties: + pull_policy: + default: IfNotPresent + enum: + - Always + - Never + - IfNotPresent + type: string + registry: + default: docker.io + type: string + repository: + default: sebt3/code-server + type: string + tag: + default: 4.18 + type: number + type: object + type: object + ingress_class: + default: traefik + examples: + - traefik + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + language: + default: fr_FR + examples: + - fr_FR + type: string organisations: default: [] examples: @@ -200,119 +345,11 @@ options: type: array type: object type: array - external-pgs: - default: [] + sso_vynil: + default: true examples: - - [] - items: - properties: - dbname: - default: '' - type: string - name: - default: '' - type: string - namespace: - default: '' - type: string - secret: - properties: - key: - default: '' - type: string - name: - default: '' - type: string - type: object - username: - default: '' - type: string - type: object - type: array - timezone: - default: Europe/Paris - examples: - - Europe/Paris - type: string - language: - default: fr_FR - examples: - - fr_FR - type: string - domain_name: - default: your-company.com - examples: - - your-company.com - type: string - backups: - default: - enable: false - endpoint: '' - key_id_key: s3-id - restic_key: bck-password - secret_key: s3-secret - secret_name: backup-settings - use_barman: false - examples: - - enable: false - endpoint: '' - key_id_key: s3-id - restic_key: bck-password - secret_key: s3-secret - secret_name: backup-settings - use_barman: false - properties: - enable: - default: false - type: boolean - endpoint: - default: '' - type: string - key_id_key: - default: s3-id - type: string - restic_key: - default: bck-password - type: string - secret_key: - default: s3-secret - type: string - secret_name: - default: backup-settings - type: string - use_barman: - default: false - type: boolean - type: object - external-mongos: - default: [] - examples: - - [] - items: - properties: - dbname: - default: '' - type: string - name: - default: '' - type: string - namespace: - default: '' - type: string - secret: - properties: - key: - default: '' - type: string - name: - default: '' - type: string - type: object - username: - default: '' - type: string - type: object - type: array + - true + type: boolean stations: default: [] examples: @@ -329,75 +366,38 @@ options: type: array type: object type: array - external-redis: - default: [] - examples: - - [] - items: - properties: - name: - default: '' - type: string - namespace: - default: '' - type: string - type: object - type: array - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - haveGitea: - default: false - examples: - - false - type: boolean - domain: - default: your-company - examples: - - your-company - type: string stations-sub_domain: default: code examples: - code type: string - sso_vynil: - default: true + storage: + default: + volume: + accessMode: ReadWriteOnce + class: '' examples: - - true - type: boolean - external-marias: - default: [] + - volume: + accessMode: ReadWriteOnce + class: '' + properties: + volume: + default: + accessMode: ReadWriteOnce + class: '' + properties: + accessMode: + default: ReadWriteOnce + type: string + class: + default: '' + type: string + type: object + type: object + timezone: + default: Europe/Paris examples: - - [] - items: - properties: - name: - default: '' - type: string - namespace: - default: '' - type: string - secret: - properties: - key: - default: '' - type: string - name: - default: '' - type: string - type: object - username: - default: '' - type: string - type: object - type: array - app_group: - default: dev - examples: - - dev + - Europe/Paris type: string dependencies: [] providers: @@ -405,6 +405,7 @@ providers: authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain-erp/apps.tf b/meta/domain-erp/apps.tf index 7a778e7..76a0ded 100644 --- a/meta/domain-erp/apps.tf +++ b/meta/domain-erp/apps.tf @@ -46,9 +46,9 @@ locals { "class" = var.storage.volume.class } dolibarr = merge(local.global,{ for k, v in var.dolibarr : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.dolibarr, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.dolibarr, "backups", {})) storage = merge({ for k, v in lookup(var.dolibarr, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.dolibarr, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.dolibarr, "storage", {}), "volume", {})) }) }) } diff --git a/meta/domain-erp/index.yaml b/meta/domain-erp/index.yaml index fca6655..0cac201 100644 --- a/meta/domain-erp/index.yaml +++ b/meta/domain-erp/index.yaml @@ -6,45 +6,10 @@ metadata: name: domain-erp description: null options: - sso_vynil: - default: true + app_group: + default: apps examples: - - true - type: boolean - timezone: - default: Europe/Paris - examples: - - Europe/Paris - type: string - ingress_class: - default: traefik - examples: - - traefik - type: string - domain: - default: your-company - examples: - - your-company - 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 - domain_name: - default: your-company.com - examples: - - your-company.com + - apps type: string backups: default: @@ -86,21 +51,63 @@ options: default: false type: boolean type: object - language: - default: fr_FR + distributions: + default: + core: core + domain: domain examples: - - fr_FR + - core: core + domain: domain + properties: + core: + default: core + type: string + domain: + default: domain + type: string + type: object + dolibarr: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: dolibarr + domain: + default: your-company + examples: + - your-company type: string - app_group: - default: apps + domain_name: + default: your-company.com examples: - - apps + - your-company.com + type: string + ingress_class: + default: traefik + examples: + - traefik type: string issuer: default: letsencrypt-prod examples: - letsencrypt-prod type: string + language: + default: fr_FR + examples: + - fr_FR + type: string + sso_vynil: + default: true + examples: + - true + type: boolean storage: default: volume: @@ -124,24 +131,18 @@ options: type: string type: object type: object - dolibarr: - default: - enable: true + timezone: + default: Europe/Paris examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - x-vynil-category: apps - x-vynil-package: dolibarr + - Europe/Paris + type: string dependencies: [] providers: kubernetes: true authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain-infra/apps.tf b/meta/domain-infra/apps.tf index ed5b45a..f40406d 100644 --- a/meta/domain-infra/apps.tf +++ b/meta/domain-infra/apps.tf @@ -46,33 +46,33 @@ locals { "class" = var.storage.volume.class } traefik = merge(local.global,{ for k, v in var.traefik : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.traefik, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.traefik, "backups", {})) storage = merge({ for k, v in lookup(var.traefik, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.traefik, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.traefik, "storage", {}), "volume", {})) }) }) dns = merge(local.global,{ for k, v in var.dns : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.dns, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.dns, "backups", {})) storage = merge({ for k, v in lookup(var.dns, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.dns, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.dns, "storage", {}), "volume", {})) }) }) api = merge(local.global,{ for k, v in var.api : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.api, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.api, "backups", {})) storage = merge({ for k, v in lookup(var.api, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.api, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.api, "storage", {}), "volume", {})) }) }) okd = merge({"cluster-admin" = true}, local.global,{ for k, v in var.okd : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.okd, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.okd, "backups", {})) storage = merge({ for k, v in lookup(var.okd, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.okd, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.okd, "storage", {}), "volume", {})) }) }) gramo = merge({"cluster-admin" = true}, local.global,{ for k, v in var.gramo : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.gramo, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.gramo, "backups", {})) storage = merge({ for k, v in lookup(var.gramo, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.gramo, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.gramo, "storage", {}), "volume", {})) }) }) } diff --git a/meta/domain-infra/index.yaml b/meta/domain-infra/index.yaml index 033e8ec..cfc34e6 100644 --- a/meta/domain-infra/index.yaml +++ b/meta/domain-infra/index.yaml @@ -6,46 +6,6 @@ metadata: name: domain-infra description: null options: - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - storage: - default: - volume: - accessMode: ReadWriteOnce - class: '' - examples: - - volume: - accessMode: ReadWriteOnce - class: '' - properties: - volume: - default: - accessMode: ReadWriteOnce - class: '' - properties: - accessMode: - default: ReadWriteOnce - type: string - class: - default: '' - type: string - type: object - type: object - gramo: - default: - enable: false - examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - x-vynil-category: apps - x-vynil-package: gramo api: default: enable: false @@ -56,59 +16,10 @@ options: default: false type: boolean type: object - dns: - default: - enable: false + app_group: + default: infra examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - x-vynil-category: share - x-vynil-package: dns - sso_vynil: - default: true - examples: - - true - type: boolean - domain: - default: your-company - examples: - - your-company - type: string - timezone: - default: Europe/Paris - examples: - - Europe/Paris - type: string - traefik: - default: - enable: false - namespace: traefik - examples: - - enable: false - namespace: traefik - properties: - enable: - default: false - type: boolean - namespace: - default: traefik - type: string - type: object - x-vynil-category: apps - x-vynil-package: traefix-ui - ingress_class: - default: traefik - examples: - - traefik - type: string - language: - default: fr_FR - examples: - - fr_FR + - infra type: string backups: default: @@ -150,28 +61,6 @@ options: default: false type: boolean type: object - okd: - default: - enable: false - examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - x-vynil-category: apps - x-vynil-package: okd - app_group: - default: infra - examples: - - infra - type: string - domain_name: - default: your-company.com - examples: - - your-company.com - type: string distributions: default: core: core @@ -187,12 +76,124 @@ options: default: domain type: string type: object + dns: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: share + x-vynil-package: dns + domain: + default: your-company + examples: + - your-company + type: string + domain_name: + default: your-company.com + examples: + - your-company.com + type: string + gramo: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: gramo + ingress_class: + default: traefik + examples: + - traefik + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + language: + default: fr_FR + examples: + - fr_FR + type: string + okd: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: okd + sso_vynil: + default: true + examples: + - true + type: boolean + storage: + default: + volume: + accessMode: ReadWriteOnce + class: '' + examples: + - volume: + accessMode: ReadWriteOnce + class: '' + properties: + volume: + default: + accessMode: ReadWriteOnce + class: '' + properties: + accessMode: + default: ReadWriteOnce + type: string + class: + default: '' + type: string + type: object + type: object + timezone: + default: Europe/Paris + examples: + - Europe/Paris + type: string + traefik: + default: + enable: false + namespace: traefik + examples: + - enable: false + namespace: traefik + properties: + enable: + default: false + type: boolean + namespace: + default: traefik + type: string + type: object + x-vynil-category: apps + x-vynil-package: traefix-ui dependencies: [] providers: kubernetes: true authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain-mail/apps.tf b/meta/domain-mail/apps.tf index 36729a6..084ad9d 100644 --- a/meta/domain-mail/apps.tf +++ b/meta/domain-mail/apps.tf @@ -46,9 +46,9 @@ locals { "class" = var.storage.volume.class } wildduck = merge(local.global,{ for k, v in var.wildduck : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.wildduck, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.wildduck, "backups", {})) storage = merge({ for k, v in lookup(var.wildduck, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.wildduck, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.wildduck, "storage", {}), "volume", {})) }) }) } diff --git a/meta/domain-mail/index.yaml b/meta/domain-mail/index.yaml index bfe81db..e9af4c7 100644 --- a/meta/domain-mail/index.yaml +++ b/meta/domain-mail/index.yaml @@ -6,89 +6,11 @@ metadata: name: domain-mail description: null options: - domain_name: - default: your-company.com - examples: - - your-company.com - type: string - domain: - default: your-company - examples: - - your-company - type: string - ingress_class: - default: traefik - examples: - - traefik - type: string app_group: default: apps examples: - apps type: string - language: - default: fr_FR - examples: - - fr_FR - 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 - wildduck: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - storage: - default: - volume: - accessMode: ReadWriteOnce - class: '' - examples: - - volume: - accessMode: ReadWriteOnce - class: '' - properties: - volume: - default: - accessMode: ReadWriteOnce - class: '' - properties: - accessMode: - default: ReadWriteOnce - type: string - class: - default: '' - type: string - type: object - type: object - sso_vynil: - default: true - examples: - - true - type: boolean - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string backups: default: enable: false @@ -129,17 +51,96 @@ options: 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 + domain: + default: your-company + examples: + - your-company + type: string + domain_name: + default: your-company.com + examples: + - your-company.com + type: string + ingress_class: + default: traefik + examples: + - traefik + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + language: + default: fr_FR + examples: + - fr_FR + type: string + sso_vynil: + default: true + examples: + - true + type: boolean + storage: + default: + volume: + accessMode: ReadWriteOnce + class: '' + examples: + - volume: + accessMode: ReadWriteOnce + class: '' + properties: + volume: + default: + accessMode: ReadWriteOnce + class: '' + properties: + accessMode: + default: ReadWriteOnce + type: string + class: + default: '' + type: string + type: object + type: object timezone: default: Europe/Paris examples: - Europe/Paris type: string + wildduck: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object dependencies: [] providers: kubernetes: true authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain-monitor/apps.tf b/meta/domain-monitor/apps.tf index c3af2b4..b4cf316 100644 --- a/meta/domain-monitor/apps.tf +++ b/meta/domain-monitor/apps.tf @@ -46,87 +46,87 @@ locals { "class" = var.storage.volume.class } grafana = merge(local.global,{ for k, v in var.grafana : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.grafana, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.grafana, "backups", {})) storage = merge({ for k, v in lookup(var.grafana, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.grafana, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.grafana, "storage", {}), "volume", {})) }) }) prometheus = merge(local.global,{ for k, v in var.prometheus : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.prometheus, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.prometheus, "backups", {})) storage = merge({ for k, v in lookup(var.prometheus, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.prometheus, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.prometheus, "storage", {}), "volume", {})) }) }) alertmanager = merge(local.global,{ for k, v in var.alertmanager : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.alertmanager, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.alertmanager, "backups", {})) storage = merge({ for k, v in lookup(var.alertmanager, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.alertmanager, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.alertmanager, "storage", {}), "volume", {})) }) }) loki = merge(local.global,{ for k, v in var.loki : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.loki, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.loki, "backups", {})) storage = merge({ for k, v in lookup(var.loki, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.loki, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.loki, "storage", {}), "volume", {})) }) }) promtail = merge(local.global,{ for k, v in var.promtail : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.promtail, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.promtail, "backups", {})) storage = merge({ for k, v in lookup(var.promtail, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.promtail, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.promtail, "storage", {}), "volume", {})) }) }) alerts-core = merge(local.global,{ for k, v in var.alerts-core : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.alerts-core, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.alerts-core, "backups", {})) storage = merge({ for k, v in lookup(var.alerts-core, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.alerts-core, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.alerts-core, "storage", {}), "volume", {})) }) }) alerts-containers = merge(local.global,{ for k, v in var.alerts-containers : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.alerts-containers, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.alerts-containers, "backups", {})) storage = merge({ for k, v in lookup(var.alerts-containers, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.alerts-containers, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.alerts-containers, "storage", {}), "volume", {})) }) }) nodeExporter = merge(local.global,{ for k, v in var.node-exporter : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.node-exporter, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.node-exporter, "backups", {})) storage = merge({ for k, v in lookup(var.node-exporter, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.node-exporter, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.node-exporter, "storage", {}), "volume", {})) }) }) kubeStateMetrics = merge(local.global,{ for k, v in var.kube-state-metrics : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.kube-state-metrics, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.kube-state-metrics, "backups", {})) storage = merge({ for k, v in lookup(var.kube-state-metrics, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.kube-state-metrics, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.kube-state-metrics, "storage", {}), "volume", {})) }) }) monitorControlPlan = merge(local.global,{ for k, v in var.monitor-control-plan : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.monitor-control-plan, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.monitor-control-plan, "backups", {})) storage = merge({ for k, v in lookup(var.monitor-control-plan, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.monitor-control-plan, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.monitor-control-plan, "storage", {}), "volume", {})) }) }) dashboards-cluster = merge(local.global,{ for k, v in var.dashboards-cluster : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.dashboards-cluster, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.dashboards-cluster, "backups", {})) storage = merge({ for k, v in lookup(var.dashboards-cluster, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.dashboards-cluster, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.dashboards-cluster, "storage", {}), "volume", {})) }) }) dashboards-minimal = merge(local.global,{ for k, v in var.dashboards-minimal : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.dashboards-minimal, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.dashboards-minimal, "backups", {})) storage = merge({ for k, v in lookup(var.dashboards-minimal, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.dashboards-minimal, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.dashboards-minimal, "storage", {}), "volume", {})) }) }) dashboards-namespace = merge(local.global,{ for k, v in var.dashboards-namespace : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.dashboards-namespace, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.dashboards-namespace, "backups", {})) storage = merge({ for k, v in lookup(var.dashboards-namespace, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.dashboards-namespace, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.dashboards-namespace, "storage", {}), "volume", {})) }) }) dashboards-workload = merge(local.global,{ for k, v in var.dashboards-workload : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.dashboards-workload, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.dashboards-workload, "backups", {})) storage = merge({ for k, v in lookup(var.dashboards-workload, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.dashboards-workload, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.dashboards-workload, "storage", {}), "volume", {})) }) }) } diff --git a/meta/domain-monitor/index.yaml b/meta/domain-monitor/index.yaml index 88b870c..cd2e3bb 100644 --- a/meta/domain-monitor/index.yaml +++ b/meta/domain-monitor/index.yaml @@ -6,7 +6,7 @@ metadata: name: domain-monitor description: null options: - grafana: + alertmanager: default: enable: true examples: @@ -17,79 +17,7 @@ options: type: boolean type: object x-vynil-category: monitor - x-vynil-package: grafana - monitor-control-plan: - default: - enable: false - examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - x-vynil-category: monitor - x-vynil-package: monitor-control-plan - ingress_class: - default: traefik - examples: - - traefik - type: string - dashboards-cluster: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - x-vynil-category: monitor - x-vynil-package: dashboards-cluster - storage: - default: - volume: - accessMode: ReadWriteOnce - class: '' - examples: - - volume: - accessMode: ReadWriteOnce - class: '' - properties: - volume: - default: - accessMode: ReadWriteOnce - class: '' - properties: - accessMode: - default: ReadWriteOnce - type: string - class: - default: '' - type: string - type: object - type: object - sso_vynil: - default: true - examples: - - true - type: boolean - distributions: - default: - core: core - domain: domain - examples: - - core: core - domain: domain - properties: - core: - default: core - type: string - domain: - default: domain - type: string - type: object + x-vynil-package: alertmanager alerts-containers: default: enable: true @@ -102,7 +30,7 @@ options: type: object x-vynil-category: monitor x-vynil-package: alerts-containers - node-exporter: + alerts-core: default: enable: true examples: @@ -113,24 +41,7 @@ options: type: boolean type: object x-vynil-category: monitor - x-vynil-package: node-exporter - dashboards-workload: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - x-vynil-category: monitor - x-vynil-package: dashboards-workload - domain: - default: your-company - examples: - - your-company - type: string + x-vynil-package: alerts-core app_group: default: monitor examples: @@ -176,22 +87,7 @@ options: default: false type: boolean type: object - language: - default: fr_FR - examples: - - fr_FR - type: string - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - timezone: - default: Europe/Paris - examples: - - Europe/Paris - type: string - alerts-core: + dashboards-cluster: default: enable: true examples: @@ -202,43 +98,7 @@ options: type: boolean type: object x-vynil-category: monitor - x-vynil-package: alerts-core - promtail: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - x-vynil-category: monitor - x-vynil-package: promtail - kube-state-metrics: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - x-vynil-category: monitor - x-vynil-package: kube-state-metrics - alertmanager: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - x-vynil-category: monitor - x-vynil-package: alertmanager + x-vynil-package: dashboards-cluster dashboards-minimal: default: enable: true @@ -263,11 +123,82 @@ options: type: object x-vynil-category: monitor x-vynil-package: dashboards-namespace + dashboards-workload: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: monitor + x-vynil-package: dashboards-workload + distributions: + default: + core: core + domain: domain + examples: + - core: core + domain: domain + properties: + core: + default: core + type: string + domain: + default: domain + type: string + type: object + domain: + default: your-company + examples: + - your-company + type: string domain_name: default: your-company.com examples: - your-company.com type: string + grafana: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: monitor + x-vynil-package: grafana + ingress_class: + default: traefik + examples: + - traefik + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + kube-state-metrics: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: monitor + x-vynil-package: kube-state-metrics + language: + default: fr_FR + examples: + - fr_FR + type: string loki: default: enable: true @@ -280,6 +211,30 @@ options: type: object x-vynil-category: monitor x-vynil-package: loki + monitor-control-plan: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: monitor + x-vynil-package: monitor-control-plan + node-exporter: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: monitor + x-vynil-package: node-exporter prometheus: default: enable: true @@ -292,12 +247,58 @@ options: type: object x-vynil-category: monitor x-vynil-package: prometheus + promtail: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: monitor + x-vynil-package: promtail + sso_vynil: + default: true + examples: + - true + type: boolean + storage: + default: + volume: + accessMode: ReadWriteOnce + class: '' + examples: + - volume: + accessMode: ReadWriteOnce + class: '' + properties: + volume: + default: + accessMode: ReadWriteOnce + class: '' + properties: + accessMode: + default: ReadWriteOnce + type: string + class: + default: '' + type: string + type: object + type: object + timezone: + default: Europe/Paris + examples: + - Europe/Paris + type: string dependencies: [] providers: kubernetes: true authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain/index.yaml b/meta/domain/index.yaml index bed3ce9..ac83905 100644 --- a/meta/domain/index.yaml +++ b/meta/domain/index.yaml @@ -6,21 +6,54 @@ metadata: name: domain description: null options: - distributions: + apps: default: - core: core - domain: domain + enable: false + nextcloud: + enable: true examples: - - core: core - domain: domain + - enable: false + nextcloud: + enable: true properties: - core: - default: core - type: string - domain: - default: domain - type: string + enable: + default: false + type: boolean + nextcloud: + default: + enable: true + properties: + enable: + default: true + type: boolean + type: object type: object + x-vynil-category: meta + x-vynil-package: domain-apps + auth: + default: + authentik: + enable: true + enable: true + examples: + - authentik: + enable: true + enable: true + properties: + authentik: + default: + enable: true + properties: + enable: + default: true + type: boolean + type: object + enable: + default: true + type: boolean + type: object + x-vynil-category: meta + x-vynil-package: domain-auth backups: default: enable: false @@ -61,80 +94,6 @@ options: default: false type: boolean 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 - x-vynil-category: meta - x-vynil-package: domain-erp - ingress_class: - default: traefik - examples: - - traefik - type: string - storage: - default: - volume: - accessMode: ReadWriteOnce - class: '' - examples: - - volume: - accessMode: ReadWriteOnce - class: '' - properties: - volume: - default: - accessMode: ReadWriteOnce - class: '' - properties: - accessMode: - default: ReadWriteOnce - type: string - class: - default: '' - type: string - type: object - type: object - mail: - default: - enable: false - wildduck: - enable: true - examples: - - enable: false - wildduck: - enable: true - properties: - enable: - default: false - type: boolean - wildduck: - default: - enable: true - properties: - enable: - default: true - type: boolean - type: object - type: object ci: default: enable: false @@ -171,74 +130,50 @@ options: type: object x-vynil-category: meta x-vynil-package: domain-devspaces - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - auth: + distributions: default: - authentik: - enable: true - enable: true + core: core + domain: domain examples: - - authentik: - enable: true - enable: true + - core: core + domain: domain properties: - authentik: - default: - enable: true - properties: - enable: - default: true - type: boolean - type: object - enable: - default: true - type: boolean + core: + default: core + type: string + domain: + default: domain + type: string type: object - x-vynil-category: meta - x-vynil-package: domain-auth - 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 - x-vynil-category: meta - x-vynil-package: domain-apps - sso_vynil: - default: true - examples: - - true - type: boolean - language: - default: fr_FR - examples: - - fr_FR - 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 + x-vynil-category: meta + x-vynil-package: domain-erp infra: default: enable: false @@ -263,6 +198,43 @@ options: type: object x-vynil-category: meta x-vynil-package: domain-infra + ingress_class: + default: traefik + examples: + - traefik + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + language: + default: fr_FR + examples: + - fr_FR + type: string + mail: + default: + enable: false + wildduck: + enable: true + examples: + - enable: false + wildduck: + enable: true + properties: + enable: + default: false + type: boolean + wildduck: + default: + enable: true + properties: + enable: + default: true + type: boolean + type: object + type: object monitor: default: enable: false @@ -275,6 +247,34 @@ options: type: object x-vynil-category: meta x-vynil-package: domain-monitor + sso_vynil: + default: true + examples: + - true + type: boolean + storage: + default: + volume: + accessMode: ReadWriteOnce + class: '' + examples: + - volume: + accessMode: ReadWriteOnce + class: '' + properties: + volume: + default: + accessMode: ReadWriteOnce + class: '' + properties: + accessMode: + default: ReadWriteOnce + type: string + class: + default: '' + type: string + type: object + type: object timezone: default: Europe/Paris examples: @@ -286,6 +286,7 @@ providers: authentik: null kubectl: true postgresql: null + mysql: null restapi: null http: null gitea: null diff --git a/meta/domain/installs.tf b/meta/domain/installs.tf index cc4a165..22bf10c 100644 --- a/meta/domain/installs.tf +++ b/meta/domain/installs.tf @@ -22,51 +22,51 @@ locals { "class" = var.storage.volume.class } auth = merge(local.global,{ for k, v in var.auth : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.auth, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.auth, "backups", {})) storage = merge({ for k, v in lookup(var.auth, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.auth, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.auth, "storage", {}), "volume", {})) }) }) - infra = merge(local.global,{ for k, v in var.infra : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.infra, "backups", {}), local.global-backups) + infra = merge(local.global, { for k, v in var.infra : k => v if !contains(["enable","storage","backups"],k) },{ + backups = merge(local.global-backups, lookup(var.infra, "backups", {})) storage = merge({ for k, v in lookup(var.infra, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.infra, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.infra, "storage", {}), "volume", {})) }) }) - ci = merge(local.global,{ for k, v in var.ci : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.ci, "backups", {}), local.global-backups) + ci = merge(local.global, { for k, v in var.ci : k => v if !contains(["enable","storage","backups"],k) },{ + backups = merge(local.global-backups, lookup(var.ci, "backups", {})) storage = merge({ for k, v in lookup(var.ci, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.ci, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.ci, "storage", {}), "volume", {})) }) }) erp = merge(local.global,{ for k, v in var.erp : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.erp, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.erp, "backups", {})) storage = merge({ for k, v in lookup(var.erp, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.erp, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.erp, "storage", {}), "volume", {})) }) }) apps = merge(local.global,{ for k, v in var.apps : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.apps, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.apps, "backups", {})) storage = merge({ for k, v in lookup(var.apps, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.apps, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.apps, "storage", {}), "volume", {})) }) }) mail = merge(local.global,{ for k, v in var.mail : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.mail, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.mail, "backups", {})) storage = merge({ for k, v in lookup(var.mail, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.mail, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.mail, "storage", {}), "volume", {})) }) }) monitor = merge(local.global,{ for k, v in var.monitor : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.monitor, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.monitor, "backups", {})) storage = merge({ for k, v in lookup(var.monitor, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.monitor, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.monitor, "storage", {}), "volume", {})) }) }) devspaces = merge(local.global,{ for k, v in var.devspaces : k => v if !contains(["enable","storage","backups"],k) },{ - backups = merge(lookup(var.devspaces, "backups", {}), local.global-backups) + backups = merge(local.global-backups, lookup(var.devspaces, "backups", {})) storage = merge({ for k, v in lookup(var.devspaces, "storage", {}) : k => v if !contains(["volume"],k) }, { - volume = merge(lookup(lookup(var.devspaces, "storage", {}), "volume", {}), local.global-volume) + volume = merge(local.global-volume, lookup(lookup(var.devspaces, "storage", {}), "volume", {})) }) })