diff --git a/apps/code-server/index.yaml b/apps/code-server/index.yaml index 32b7d53..3f10ba8 100644 --- a/apps/code-server/index.yaml +++ b/apps/code-server/index.yaml @@ -6,21 +6,63 @@ metadata: name: code-server description: null options: - admin: - default: - cluster: false - namespace: false + sub-domain: + default: code examples: - - cluster: false - namespace: false + - code + type: string + storage: + default: + accessMode: ReadWriteOnce + size: 20Gi + type: Filesystem + examples: + - accessMode: ReadWriteOnce + size: 20Gi + type: Filesystem properties: - cluster: - default: false - type: boolean - namespace: - default: false - type: boolean + accessMode: + default: ReadWriteOnce + enum: + - ReadWriteOnce + - ReadOnlyMany + - ReadWriteMany + type: string + size: + default: 20Gi + type: string + type: + default: Filesystem + enum: + - Filesystem + - Block + type: string type: object + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + ingress-class: + default: traefik + examples: + - traefik + type: string + app-group: + default: dev + examples: + - dev + type: string + no-editor: + default: false + examples: + - false + type: boolean + domain: + default: your-company + examples: + - your-company + type: string images: default: codeserver: @@ -60,72 +102,30 @@ options: type: number type: object type: object - domain: - default: your-company + timezone: + default: Europe/Paris examples: - - your-company - type: string - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - sub-domain: - default: code - examples: - - code + - Europe/Paris type: string domain-name: default: your_company.com examples: - your_company.com type: string - timezone: - default: Europe/Paris - examples: - - Europe/Paris - type: string - ingress-class: - default: traefik - examples: - - traefik - type: string - no-editor: - default: false - examples: - - false - type: boolean - app-group: - default: dev - examples: - - dev - type: string - storage: + admin: default: - accessMode: ReadWriteOnce - size: 20Gi - type: Filesystem + cluster: false + namespace: false examples: - - accessMode: ReadWriteOnce - size: 20Gi - type: Filesystem + - cluster: false + namespace: false properties: - accessMode: - default: ReadWriteOnce - enum: - - ReadWriteOnce - - ReadOnlyMany - - ReadWriteMany - type: string - size: - default: 20Gi - type: string - type: - default: Filesystem - enum: - - Filesystem - - Block - type: string + cluster: + default: false + type: boolean + namespace: + default: false + type: boolean type: object dependencies: - dist: null diff --git a/apps/dbgate/index.yaml b/apps/dbgate/index.yaml index f7a91b4..f820467 100644 --- a/apps/dbgate/index.yaml +++ b/apps/dbgate/index.yaml @@ -6,16 +6,6 @@ metadata: name: dbgate description: null options: - domain: - default: your-company - examples: - - your-company - type: string - app-group: - default: dev - examples: - - dev - type: string maria: default: [] examples: @@ -45,11 +35,50 @@ options: type: string type: object type: array - domain-name: - default: your_company.com + domain: + default: your-company examples: - - your_company.com + - your-company type: string + sub-domain: + default: dbgate + examples: + - dbgate + type: string + app-group: + default: dev + examples: + - dev + type: string + pg: + 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 mongo: default: [] examples: @@ -79,11 +108,6 @@ options: type: string type: object type: array - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string images: default: dbgate: @@ -123,16 +147,30 @@ options: type: string type: object type: object - sub-domain: - default: dbgate - examples: - - dbgate - type: string ingress-class: default: traefik examples: - traefik type: string + redis: + default: [] + examples: + - [] + items: + properties: + name: + default: '' + type: string + namespace: + default: '' + type: string + type: object + type: array + domain-name: + default: your_company.com + examples: + - your_company.com + type: string storage: default: accessMode: ReadWriteOnce @@ -160,49 +198,11 @@ options: - Block type: string type: object - redis: - default: [] + issuer: + default: letsencrypt-prod examples: - - [] - items: - properties: - name: - default: '' - type: string - namespace: - default: '' - type: string - type: object - type: array - pg: - 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 + - letsencrypt-prod + type: string dependencies: - dist: null category: share diff --git a/apps/gitea/index.yaml b/apps/gitea/index.yaml index 55c5ef8..bf11bbb 100644 --- a/apps/gitea/index.yaml +++ b/apps/gitea/index.yaml @@ -9,26 +9,90 @@ metadata: A painless self-hosted Git service. Gitea is a community managed lightweight code hosting solution written in Go. It is published under the MIT license. options: - postgres: - default: - replicas: 1 - storage: 10Gi - version: '14' + ssh-sub-domain: + default: git examples: - - replicas: 1 - storage: 10Gi - version: '14' + - git + type: string + theme: + default: gitea-modern + examples: + - gitea-modern + type: string + webhook: + default: + allowed-hosts: private + skip-tls-verify: false + examples: + - allowed-hosts: private + skip-tls-verify: false properties: - replicas: - default: 1 - type: integer - storage: + allowed-hosts: + default: private + type: string + skip-tls-verify: + default: false + type: boolean + type: object + volume: + default: + accessMode: ReadWriteOnce + size: 10Gi + examples: + - accessMode: ReadWriteOnce + size: 10Gi + properties: + accessMode: + default: ReadWriteOnce + enum: + - ReadWriteOnce + - ReadOnlyMany + - ReadWriteMany + type: string + size: default: 10Gi type: string - version: - default: '14' + type: object + app-group: + default: dev + examples: + - dev + type: string + load-balancer: + default: + ip: '' + examples: + - ip: '' + properties: + ip: + default: '' type: string type: object + disable-registration: + default: true + examples: + - true + type: boolean + default-branch: + default: main + examples: + - main + type: string + replicas: + default: 1 + examples: + - 1 + type: integer + domain: + default: your-company + examples: + - your-company + type: string + release: + default: 8.3.0 + examples: + - 8.3.0 + type: string backups: default: enable: false @@ -135,11 +199,84 @@ options: default: false type: boolean type: object + ssh-port: + default: 2222 + examples: + - 2222 + type: integer + postgres: + default: + replicas: 1 + storage: 10Gi + version: '14' + examples: + - replicas: 1 + storage: 10Gi + version: '14' + properties: + replicas: + default: 1 + type: integer + storage: + default: 10Gi + type: string + version: + default: '14' + type: string + type: object + redis: + default: + exporter: + enabled: true + image: quay.io/opstree/redis-exporter:v1.44.0 + image: quay.io/opstree/redis:v7.0.12 + storage: 2Gi + examples: + - exporter: + enabled: true + image: quay.io/opstree/redis-exporter:v1.44.0 + image: quay.io/opstree/redis:v7.0.12 + storage: 2Gi + properties: + exporter: + default: + enabled: true + image: quay.io/opstree/redis-exporter:v1.44.0 + properties: + enabled: + default: true + type: boolean + image: + default: quay.io/opstree/redis-exporter:v1.44.0 + type: string + type: object + image: + default: quay.io/opstree/redis:v7.0.12 + type: string + storage: + default: 2Gi + type: string + type: object sub-domain: default: git examples: - git type: string + admin: + default: + email: git-admin@git.your_company.com + name: gitea_admin + examples: + - email: git-admin@git.your_company.com + name: gitea_admin + properties: + email: + default: git-admin@git.your_company.com + type: string + name: + default: gitea_admin + type: string + type: object images: default: gitea: @@ -179,15 +316,15 @@ options: type: string type: object type: object - release: - default: 8.3.0 + ingress-class: + default: traefik examples: - - 8.3.0 + - traefik type: string - theme: - default: gitea-modern + domain-name: + default: your_company.com examples: - - gitea-modern + - your_company.com type: string push-create: default: @@ -209,152 +346,15 @@ options: default: 'true' type: string type: object - load-balancer: - default: - ip: '' - examples: - - ip: '' - properties: - ip: - default: '' - type: string - type: object - webhook: - default: - allowed-hosts: private - skip-tls-verify: false - examples: - - allowed-hosts: private - skip-tls-verify: false - properties: - allowed-hosts: - default: private - type: string - skip-tls-verify: - default: false - type: boolean - type: object - admin: - default: - email: git-admin@git.your_company.com - name: gitea_admin - examples: - - email: git-admin@git.your_company.com - name: gitea_admin - properties: - email: - default: git-admin@git.your_company.com - type: string - name: - default: gitea_admin - type: string - type: object - redis: - default: - exporter: - enabled: true - image: quay.io/opstree/redis-exporter:v1.44.0 - image: quay.io/opstree/redis:v7.0.12 - storage: 2Gi - examples: - - exporter: - enabled: true - image: quay.io/opstree/redis-exporter:v1.44.0 - image: quay.io/opstree/redis:v7.0.12 - storage: 2Gi - properties: - exporter: - default: - enabled: true - image: quay.io/opstree/redis-exporter:v1.44.0 - properties: - enabled: - default: true - type: boolean - image: - default: quay.io/opstree/redis-exporter:v1.44.0 - type: string - type: object - image: - default: quay.io/opstree/redis:v7.0.12 - type: string - storage: - default: 2Gi - type: string - type: object - domain-name: - default: your_company.com - examples: - - your_company.com - type: string - ingress-class: - default: traefik - examples: - - traefik - type: string - app-group: - default: dev - examples: - - dev - type: string - disable-registration: - default: true - examples: - - true - type: boolean - default-branch: - default: main - examples: - - main - type: string - volume: - default: - accessMode: ReadWriteOnce - size: 10Gi - examples: - - accessMode: ReadWriteOnce - size: 10Gi - properties: - accessMode: - default: ReadWriteOnce - enum: - - ReadWriteOnce - - ReadOnlyMany - - ReadWriteMany - type: string - size: - default: 10Gi - type: string - type: object - domain: - default: your-company - examples: - - your-company - type: string - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string timezone: default: Europe/Paris examples: - Europe/Paris type: string - ssh-port: - default: 2222 + issuer: + default: letsencrypt-prod examples: - - 2222 - type: integer - replicas: - default: 1 - examples: - - 1 - type: integer - ssh-sub-domain: - default: git - examples: - - git + - letsencrypt-prod type: string dependencies: - dist: null diff --git a/apps/gramo/index.yaml b/apps/gramo/index.yaml index eecd44c..b5112d4 100644 --- a/apps/gramo/index.yaml +++ b/apps/gramo/index.yaml @@ -6,21 +6,16 @@ metadata: name: gramo description: null options: + namespaces: + default: [] + items: + type: string + type: array sub-domain: default: gramo examples: - gramo type: string - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - domain: - default: your-company - examples: - - your-company - type: string ingress-class: default: traefik examples: @@ -31,6 +26,11 @@ options: examples: - your_company.com type: string + cluster-admin: + default: false + examples: + - false + type: boolean managed: default: false examples: @@ -75,21 +75,21 @@ options: type: string type: object type: object + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string app-group: default: infra examples: - infra type: string - cluster-admin: - default: false + domain: + default: your-company examples: - - false - type: boolean - namespaces: - default: [] - items: - type: string - type: array + - your-company + type: string dependencies: - dist: null category: share diff --git a/apps/gramo/presentation.tf b/apps/gramo/presentation.tf index 579b92a..fac580c 100644 --- a/apps/gramo/presentation.tf +++ b/apps/gramo/presentation.tf @@ -16,7 +16,7 @@ locals { } module "service" { - source = "/dist/modules/service" + source = "git::https://git.solidite.fr/vynil/kydah-modules.git//service" component = var.component instance = var.instance namespace = var.namespace @@ -29,7 +29,7 @@ module "service" { } module "ingress" { - source = "/dist/modules/ingress" + source = "git::https://git.solidite.fr/vynil/kydah-modules.git//ingress" component = "" instance = var.instance namespace = var.namespace @@ -45,7 +45,7 @@ module "ingress" { } module "application" { - source = "/dist/modules/application" + source = "git::https://git.solidite.fr/vynil/kydah-modules.git//application" component = var.component instance = var.instance app-group = var.app-group @@ -68,7 +68,7 @@ provider "restapi" { } module "forward" { - source = "/dist/modules/forward" + source = "git::https://git.solidite.fr/vynil/kydah-modules.git//forward" component = var.component instance = var.instance domain = var.domain diff --git a/apps/okd/index.yaml b/apps/okd/index.yaml index baee9bd..4b5d135 100644 --- a/apps/okd/index.yaml +++ b/apps/okd/index.yaml @@ -6,6 +6,16 @@ metadata: name: okd description: null options: + domain-name: + default: your_company.com + examples: + - your_company.com + type: string + cluster-admin: + default: false + examples: + - false + type: boolean domain: default: your-company examples: @@ -16,36 +26,21 @@ options: items: type: string type: array - app-group: - default: infra - examples: - - infra - type: string issuer: default: letsencrypt-prod examples: - letsencrypt-prod type: string - cluster-admin: - default: false - examples: - - false - type: boolean - domain-name: - default: your_company.com - examples: - - your_company.com - type: string - managed: - default: false - examples: - - false - type: boolean ingress-class: default: traefik examples: - traefik type: string + app-group: + default: infra + examples: + - infra + type: string images: default: okd: @@ -60,14 +55,6 @@ options: repository: openshift/origin-console tag: 4.15.0 properties: - dbgate: - default: null - properties: - pullPolicy: - enum: - - Always - - Never - - IfNotPresent okd: default: pullPolicy: IfNotPresent @@ -77,6 +64,10 @@ options: properties: pullPolicy: default: IfNotPresent + enum: + - Always + - Never + - IfNotPresent type: string registry: default: quay.io @@ -94,6 +85,11 @@ options: examples: - okd type: string + managed: + default: false + examples: + - false + type: boolean dependencies: - dist: null category: share diff --git a/apps/traefik-ui/index.yaml b/apps/traefik-ui/index.yaml index 33511b0..ccb332e 100644 --- a/apps/traefik-ui/index.yaml +++ b/apps/traefik-ui/index.yaml @@ -11,12 +11,17 @@ options: examples: - your-company type: string - sub-domain: + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + ingress-class: default: traefik examples: - traefik type: string - ingress-class: + sub-domain: default: traefik examples: - traefik @@ -26,11 +31,6 @@ options: examples: - your_company.com type: string - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string app-group: default: infra examples: diff --git a/meta/domain-apps/index.yaml b/meta/domain-apps/index.yaml index 80b023e..2dbf0e4 100644 --- a/meta/domain-apps/index.yaml +++ b/meta/domain-apps/index.yaml @@ -6,66 +6,6 @@ metadata: name: domain-apps description: null options: - nextcloud: - default: - enable: false - examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - ingress-class: - default: traefik - examples: - - traefik - type: string - storage-classes: - default: - BlockReadWriteMany: '' - BlockReadWriteOnce: '' - FilesystemReadWriteMany: '' - FilesystemReadWriteOnce: '' - examples: - - BlockReadWriteMany: '' - BlockReadWriteOnce: '' - FilesystemReadWriteMany: '' - FilesystemReadWriteOnce: '' - properties: - BlockReadWriteMany: - default: '' - type: string - BlockReadWriteOnce: - default: '' - type: string - FilesystemReadWriteMany: - default: '' - type: string - FilesystemReadWriteOnce: - default: '' - type: string - 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-name: - default: your_company.com - examples: - - your_company.com - type: string backups: default: enable: false @@ -96,15 +36,77 @@ options: default: backup-settings type: string type: object + domain: + default: your-company + examples: + - your-company + 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 + 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 - domain: - default: your-company + domain-name: + default: your_company.com examples: - - your-company + - your_company.com + type: string + storage-classes: + default: + BlockReadWriteMany: '' + BlockReadWriteOnce: '' + FilesystemReadWriteMany: '' + FilesystemReadWriteOnce: '' + examples: + - BlockReadWriteMany: '' + BlockReadWriteOnce: '' + FilesystemReadWriteMany: '' + FilesystemReadWriteOnce: '' + properties: + BlockReadWriteMany: + default: '' + type: string + BlockReadWriteOnce: + default: '' + type: string + FilesystemReadWriteMany: + default: '' + type: string + FilesystemReadWriteOnce: + default: '' + type: string + type: object + ingress-class: + default: traefik + examples: + - traefik type: string dependencies: [] providers: diff --git a/meta/domain-auth/index.yaml b/meta/domain-auth/index.yaml index b2d6a48..ce91516 100644 --- a/meta/domain-auth/index.yaml +++ b/meta/domain-auth/index.yaml @@ -46,7 +46,47 @@ options: examples: - your_company.com type: string - authentik-forward: + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + backups: + default: + enable: false + endpoint: '' + key-id-key: s3-id + secret-key: s3-secret + secret-name: backup-settings + examples: + - enable: false + endpoint: '' + key-id-key: s3-id + secret-key: s3-secret + secret-name: backup-settings + properties: + enable: + default: false + type: boolean + endpoint: + default: '' + type: string + key-id-key: + default: s3-id + type: string + secret-key: + default: s3-secret + type: string + secret-name: + default: backup-settings + type: string + type: object + ingress-class: + default: traefik + examples: + - traefik + type: string + authentik-ldap: default: enable: false examples: @@ -56,6 +96,31 @@ options: default: false type: boolean type: object + storage-classes: + default: + BlockReadWriteMany: '' + BlockReadWriteOnce: '' + FilesystemReadWriteMany: '' + FilesystemReadWriteOnce: '' + examples: + - BlockReadWriteMany: '' + BlockReadWriteOnce: '' + FilesystemReadWriteMany: '' + FilesystemReadWriteOnce: '' + properties: + BlockReadWriteMany: + default: '' + type: string + BlockReadWriteOnce: + default: '' + type: string + FilesystemReadWriteMany: + default: '' + type: string + FilesystemReadWriteOnce: + default: '' + type: string + type: object fournisseurs: default: apps: [] @@ -91,6 +156,46 @@ options: default: false type: boolean type: object + authentik: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + 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 + authentik-forward: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object clients: default: apps: [] @@ -126,111 +231,6 @@ options: default: false type: boolean type: object - storage-classes: - default: - BlockReadWriteMany: '' - BlockReadWriteOnce: '' - FilesystemReadWriteMany: '' - FilesystemReadWriteOnce: '' - examples: - - BlockReadWriteMany: '' - BlockReadWriteOnce: '' - FilesystemReadWriteMany: '' - FilesystemReadWriteOnce: '' - properties: - BlockReadWriteMany: - default: '' - type: string - BlockReadWriteOnce: - default: '' - type: string - FilesystemReadWriteMany: - default: '' - type: string - FilesystemReadWriteOnce: - default: '' - type: string - type: object - ingress-class: - default: traefik - examples: - - traefik - type: string - authentik: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - authentik-ldap: - default: - enable: false - examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object - backups: - default: - enable: false - endpoint: '' - key-id-key: s3-id - secret-key: s3-secret - secret-name: backup-settings - examples: - - enable: false - endpoint: '' - key-id-key: s3-id - secret-key: s3-secret - secret-name: backup-settings - properties: - enable: - default: false - type: boolean - endpoint: - default: '' - type: string - key-id-key: - default: s3-id - type: string - secret-key: - default: s3-secret - type: string - secret-name: - default: backup-settings - type: string - type: object - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - 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 dependencies: [] providers: kubernetes: true diff --git a/meta/domain-ci/index.yaml b/meta/domain-ci/index.yaml index 3d41ae4..e63b7ad 100644 --- a/meta/domain-ci/index.yaml +++ b/meta/domain-ci/index.yaml @@ -36,26 +36,21 @@ options: default: backup-settings type: string type: object - gitea: - default: - enable: true + domain: + default: your-company examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object - woodpecker: - default: - enable: false + - your-company + type: string + ingress-class: + default: traefik examples: - - enable: false - properties: - enable: - default: false - type: boolean - type: object + - traefik + type: string + domain-name: + default: your_company.com + examples: + - your_company.com + type: string storage-classes: default: BlockReadWriteMany: '' @@ -81,6 +76,36 @@ options: default: '' type: string 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 + woodpecker: + default: + enable: false + examples: + - enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: woodpecker + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + x-vynil-enum-source: issuer distributions: default: core: core @@ -96,26 +121,6 @@ options: default: domain type: string type: object - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - domain-name: - default: your_company.com - examples: - - your_company.com - type: string - ingress-class: - default: traefik - examples: - - traefik - type: string - domain: - default: your-company - examples: - - your-company - type: string dependencies: [] providers: kubernetes: true diff --git a/meta/domain-devspaces/apps.tf b/meta/domain-devspaces/apps.tf index 1eb0fe6..841f7f8 100644 --- a/meta/domain-devspaces/apps.tf +++ b/meta/domain-devspaces/apps.tf @@ -28,6 +28,16 @@ locals { ]) ) }, { for k, v in var.apps.okd : k => v if k!="enable" }) + gramo = merge({ + "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}" + ] + ]) + ) + }, { for k, v in var.apps.gramo : k => v if k!="enable" }) dbgate = merge({ "pg" = concat( flatten([for ds in local.sorted-datasets: [for db in lookup(ds, "databases", []): { @@ -159,6 +169,24 @@ resource "kubectl_manifest" "okd" { EOF } +resource "kubectl_manifest" "gramo" { + count = var.apps.okd.enable ? 1 : 0 + depends_on = [kubernetes_namespace_v1.apps-ns] + yaml_body = <<-EOF + apiVersion: "vynil.solidite.fr/v1" + kind: "Install" + metadata: + name: "dev-gramo" + namespace: "${kubernetes_namespace_v1.apps-ns[0].metadata[0].name}" + labels: ${jsonencode(local.common-labels)} + spec: + distrib: "${var.distributions.domain}" + category: "apps" + component: "gramo" + options: ${jsonencode(merge(local.global-apps, local.gramo))} + EOF +} + resource "kubectl_manifest" "dbgate" { count = var.apps.dbgate.enable ? 1 : 0 depends_on = [kubernetes_namespace_v1.apps-ns] diff --git a/meta/domain-devspaces/index.yaml b/meta/domain-devspaces/index.yaml index b43ec7f..9c1e0bd 100644 --- a/meta/domain-devspaces/index.yaml +++ b/meta/domain-devspaces/index.yaml @@ -11,7 +11,48 @@ options: examples: - letsencrypt-prod type: string - external-redis: + organisations: + default: [] + examples: + - [] + items: + properties: + datasets: + default: [] + items: + properties: + databases: + default: [] + items: + properties: + name: + default: db + type: string + type: object + type: array + engine: + default: pg + type: string + name: + default: '' + type: string + type: object + type: array + name: + default: '' + type: string + stages: + default: [] + items: + properties: + name: + default: prod + type: string + type: object + type: array + type: object + type: array + external-marias: default: [] examples: - [] @@ -23,71 +64,30 @@ options: namespace: default: '' type: string + secret: + properties: + key: + default: '' + type: string + name: + default: '' + type: string + type: object + username: + default: '' + type: string type: object type: array - domain: - default: your-company - examples: - - your-company - type: string haveGitea: default: false examples: - false type: boolean - apps: - default: - dbgate: - enable: false - okd: - enable: false - superset: - enable: false - yaade: - enable: false + app-group: + default: dev examples: - - dbgate: - enable: false - okd: - enable: false - superset: - enable: false - yaade: - enable: false - properties: - dbgate: - default: - enable: false - properties: - enable: - default: false - type: boolean - type: object - okd: - default: - enable: false - properties: - enable: - default: false - type: boolean - type: object - superset: - default: - enable: false - properties: - enable: - default: false - type: boolean - type: object - yaade: - default: - enable: false - properties: - enable: - default: false - type: boolean - type: object - type: object + - dev + type: string images: default: codeserver: @@ -127,6 +127,107 @@ options: type: number type: object type: object + apps: + default: + dbgate: + enable: false + gramo: + enable: false + okd: + enable: false + superset: + enable: false + yaade: + enable: false + examples: + - dbgate: + enable: false + gramo: + enable: false + okd: + enable: false + superset: + enable: false + yaade: + enable: false + properties: + dbgate: + default: + enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: dbgate + gramo: + default: + enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: gramo + okd: + default: + enable: false + properties: + enable: + default: false + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: okd + superset: + default: + enable: false + properties: + enable: + default: false + type: boolean + type: object + yaade: + default: + enable: false + properties: + enable: + default: false + type: boolean + type: object + type: object + backups: + default: + enable: false + endpoint: '' + key-id-key: s3-id + secret-key: s3-secret + secret-name: backup-settings + examples: + - enable: false + endpoint: '' + key-id-key: s3-id + secret-key: s3-secret + secret-name: backup-settings + properties: + enable: + default: false + type: boolean + endpoint: + default: '' + type: string + key-id-key: + default: s3-id + type: string + secret-key: + default: s3-secret + type: string + secret-name: + default: backup-settings + type: string + type: object stations: default: [] examples: @@ -143,11 +244,49 @@ options: type: array type: object type: array - domain-name: - default: your_company.com + external-mongos: + default: [] examples: - - your_company.com - type: string + - [] + 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 distributions: default: core: core @@ -163,11 +302,21 @@ options: default: domain type: string type: object + domain: + default: your-company + examples: + - your-company + type: string stations-sub-domain: default: code examples: - code type: string + domain-name: + default: your_company.com + examples: + - your_company.com + type: string storage-classes: default: BlockReadWriteMany: '' @@ -222,137 +371,6 @@ options: type: string type: object type: array - app-group: - default: dev - examples: - - dev - 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 - backups: - default: - enable: false - endpoint: '' - key-id-key: s3-id - secret-key: s3-secret - secret-name: backup-settings - examples: - - enable: false - endpoint: '' - key-id-key: s3-id - secret-key: s3-secret - secret-name: backup-settings - properties: - enable: - default: false - type: boolean - endpoint: - default: '' - type: string - key-id-key: - default: s3-id - type: string - secret-key: - default: s3-secret - type: string - secret-name: - default: backup-settings - type: string - 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 - organisations: - default: [] - examples: - - [] - items: - properties: - datasets: - default: [] - items: - properties: - databases: - default: [] - items: - properties: - name: - default: db - type: string - type: object - type: array - engine: - default: pg - type: string - name: - default: '' - type: string - type: object - type: array - name: - default: '' - type: string - stages: - default: [] - items: - properties: - name: - default: prod - type: string - type: object - type: array - type: object - type: array ingress-class: default: traefik examples: diff --git a/meta/domain-erp/index.yaml b/meta/domain-erp/index.yaml index b21d004..f97dd50 100644 --- a/meta/domain-erp/index.yaml +++ b/meta/domain-erp/index.yaml @@ -6,11 +6,26 @@ metadata: name: domain-erp description: null options: - domain: - default: your-company + domain-name: + default: your_company.com examples: - - your-company + - 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 backups: default: enable: false @@ -41,46 +56,11 @@ options: default: backup-settings type: string type: object - domain-name: - default: your_company.com - examples: - - your_company.com - type: string - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string ingress-class: default: traefik examples: - traefik 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 - dolibarr: - default: - enable: true - examples: - - enable: true - properties: - enable: - default: true - type: boolean - type: object storage-classes: default: BlockReadWriteMany: '' @@ -106,6 +86,28 @@ options: default: '' type: string type: object + domain: + default: your-company + examples: + - your-company + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + dolibarr: + default: + enable: true + examples: + - enable: true + properties: + enable: + default: true + type: boolean + type: object + x-vynil-category: apps + x-vynil-package: dolibarr dependencies: [] providers: kubernetes: true diff --git a/meta/domain-infra/index.yaml b/meta/domain-infra/index.yaml index f132bb8..08008bd 100644 --- a/meta/domain-infra/index.yaml +++ b/meta/domain-infra/index.yaml @@ -6,86 +6,6 @@ metadata: name: domain-infra description: null options: - storage-classes: - default: - BlockReadWriteMany: '' - BlockReadWriteOnce: '' - FilesystemReadWriteMany: '' - FilesystemReadWriteOnce: '' - examples: - - BlockReadWriteMany: '' - BlockReadWriteOnce: '' - FilesystemReadWriteMany: '' - FilesystemReadWriteOnce: '' - properties: - BlockReadWriteMany: - default: '' - type: string - BlockReadWriteOnce: - default: '' - type: string - FilesystemReadWriteMany: - default: '' - type: string - FilesystemReadWriteOnce: - default: '' - type: string - type: object - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - 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 - domain-name: - default: your_company.com - examples: - - your_company.com - type: string - api: - default: - enable: false - examples: - - enable: false - properties: - 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 - app-group: - default: infra - examples: - - infra - type: string backups: default: enable: false @@ -126,6 +46,60 @@ options: default: false type: boolean type: object + x-vynil-category: apps + x-vynil-package: okd + api: + default: + enable: false + examples: + - enable: false + properties: + 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 + 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 + domain: + default: your-company + examples: + - your-company + type: string dns: default: enable: false @@ -136,15 +110,47 @@ options: default: false type: boolean type: object - ingress-class: - default: traefik + x-vynil-category: share + x-vynil-package: dns + issuer: + default: letsencrypt-prod examples: - - traefik + - letsencrypt-prod type: string - domain: - default: your-company + app-group: + default: infra examples: - - your-company + - infra + type: string + storage-classes: + default: + BlockReadWriteMany: '' + BlockReadWriteOnce: '' + FilesystemReadWriteMany: '' + FilesystemReadWriteOnce: '' + examples: + - BlockReadWriteMany: '' + BlockReadWriteOnce: '' + FilesystemReadWriteMany: '' + FilesystemReadWriteOnce: '' + properties: + BlockReadWriteMany: + default: '' + type: string + BlockReadWriteOnce: + default: '' + type: string + FilesystemReadWriteMany: + default: '' + type: string + FilesystemReadWriteOnce: + default: '' + type: string + type: object + domain-name: + default: your_company.com + examples: + - your_company.com type: string dependencies: [] providers: diff --git a/meta/domain/index.yaml b/meta/domain/index.yaml index c5b9a5b..4d1dbcd 100644 --- a/meta/domain/index.yaml +++ b/meta/domain/index.yaml @@ -6,6 +6,35 @@ metadata: name: domain description: null options: + 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 devspaces: default: enable: false @@ -16,6 +45,32 @@ options: default: false type: boolean type: object + x-vynil-category: meta + x-vynil-package: domain-devspaces + 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 infra: default: enable: false @@ -38,21 +93,8 @@ options: type: boolean type: object 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 + x-vynil-category: meta + x-vynil-package: domain-infra storage-classes: default: BlockReadWriteMany: '' @@ -83,6 +125,11 @@ options: examples: - your_company.com type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string apps: default: enable: false @@ -105,6 +152,8 @@ options: type: boolean type: object type: object + x-vynil-category: meta + x-vynil-package: domain-apps mail: default: enable: false @@ -127,82 +176,6 @@ options: type: boolean type: object type: object - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - ci: - default: - enable: false - gitea: - enable: true - examples: - - enable: false - gitea: - enable: true - properties: - enable: - default: false - type: boolean - gitea: - default: - enable: true - properties: - enable: - default: true - type: boolean - type: object - type: object - ingress-class: - default: traefik - examples: - - traefik - type: string - 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 - 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 backups: default: enable: false @@ -233,6 +206,45 @@ options: default: backup-settings type: string 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 + ci: + default: + enable: false + gitea: + enable: true + examples: + - enable: false + gitea: + enable: true + properties: + enable: + default: false + type: boolean + gitea: + default: + enable: true + properties: + enable: + default: true + type: boolean + type: object + type: object + x-vynil-category: meta + x-vynil-package: domain-ci dependencies: [] providers: kubernetes: null diff --git a/share/accounts-management/index.yaml b/share/accounts-management/index.yaml index 8503bcb..22ca2bd 100644 --- a/share/accounts-management/index.yaml +++ b/share/accounts-management/index.yaml @@ -6,6 +6,23 @@ metadata: name: accounts-management description: null options: + employes: + default: + apps: [] + examples: + - apps: [] + properties: + apps: + default: [] + items: + type: string + type: array + type: object + domain: + default: your-company + examples: + - your-company + type: string clients: default: apps: [] @@ -23,23 +40,6 @@ options: default: false type: boolean type: object - domain: - default: your-company - examples: - - your-company - type: string - employes: - default: - apps: [] - examples: - - apps: [] - properties: - apps: - default: [] - items: - type: string - type: array - type: object fournisseurs: default: apps: [] diff --git a/share/authentik-forward/index.yaml b/share/authentik-forward/index.yaml index 87a1b5e..7788c8a 100644 --- a/share/authentik-forward/index.yaml +++ b/share/authentik-forward/index.yaml @@ -6,23 +6,23 @@ metadata: name: authentik-forward description: null options: - ingress-class: - default: traefik + issuer: + default: letsencrypt-prod examples: - - traefik + - letsencrypt-prod type: string domain-name: default: your_company.com examples: - your_company.com type: string + ingress-class: + default: traefik + examples: + - traefik + type: string sub-domain: default: null - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string domain: default: your-company examples: diff --git a/share/division/index.yaml b/share/division/index.yaml index cc520ac..f0ee586 100644 --- a/share/division/index.yaml +++ b/share/division/index.yaml @@ -11,20 +11,6 @@ options: examples: - your-company type: string - teams: - default: [] - items: - properties: - apps: - default: [] - items: - type: string - type: array - name: - default: '' - type: string - type: object - type: array parent: default: employes enum: @@ -39,6 +25,20 @@ options: items: type: string type: array + teams: + default: [] + items: + properties: + apps: + default: [] + items: + type: string + type: array + name: + default: '' + type: string + type: object + type: array dependencies: - dist: null category: share diff --git a/share/organisation/index.yaml b/share/organisation/index.yaml index 5d4bc1e..b03232a 100644 --- a/share/organisation/index.yaml +++ b/share/organisation/index.yaml @@ -6,21 +6,6 @@ metadata: name: organisation description: null options: - haveGitea: - default: false - examples: - - false - type: boolean - issuer: - default: letsencrypt-prod - examples: - - letsencrypt-prod - type: string - app-group: - default: dev - examples: - - dev - type: string domain-name: default: your_company.com examples: @@ -31,11 +16,20 @@ options: examples: - traefik type: string - domain: - default: your-company + haveGitea: + default: false examples: - - your-company - type: string + - false + type: boolean + stages: + default: [] + items: + properties: + name: + default: prod + type: string + type: object + type: array backups: default: enable: false @@ -66,6 +60,38 @@ options: default: backup-settings type: string type: object + datasets: + default: [] + items: + properties: + engine: + default: pg + type: string + name: + default: '' + type: string + type: object + type: array + domain: + default: your-company + examples: + - your-company + type: string + issuer: + default: letsencrypt-prod + examples: + - letsencrypt-prod + type: string + gitea-ssh-domain: + default: '' + examples: + - '' + type: string + app-group: + default: dev + examples: + - dev + type: string distributions: default: core: core @@ -81,32 +107,6 @@ options: default: domain type: string type: object - gitea-ssh-domain: - default: '' - examples: - - '' - type: string - stages: - default: [] - items: - properties: - name: - default: prod - type: string - type: object - type: array - datasets: - default: [] - items: - properties: - engine: - default: pg - type: string - name: - default: '' - type: string - type: object - type: array dependencies: [] providers: kubernetes: true