fix(helmfile): Use dictionaries for defining customization.yaml, please read migrations.md for more details

This commit is contained in:
Thorsten Roßner
2024-11-26 16:59:18 +01:00
parent df144fe3d3
commit 86ef0be542
15 changed files with 159 additions and 69 deletions

View File

@@ -11,6 +11,7 @@ SPDX-License-Identifier: Apache-2.0
* [Releases upgrade details](#releases-upgrade-details) * [Releases upgrade details](#releases-upgrade-details)
* [From v1.0.0](#from-v100) * [From v1.0.0](#from-v100)
* [Pre-upgrade: Manual steps](#pre-upgrade-manual-steps) * [Pre-upgrade: Manual steps](#pre-upgrade-manual-steps)
* [`customization.release`](#customizationrelease)
* [Redis 7.4](#redis-74) * [Redis 7.4](#redis-74)
* [From v0.9.0](#from-v090) * [From v0.9.0](#from-v090)
* [Pre-upgrade: Manual steps](#pre-upgrade-manual-steps-1) * [Pre-upgrade: Manual steps](#pre-upgrade-manual-steps-1)
@@ -57,7 +58,7 @@ Explanation of the table's columns:
| Coming from | Mandatory (minimum) release | Automatic migration | Manual activities | | Coming from | Mandatory (minimum) release | Automatic migration | Manual activities |
| ------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | | ------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| v0.9.0 | v1.x.x | [run_2.py](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/-/blob/main/odmigs-python/odmigs_runs/run_2.py) | See [From v0.9.0](#from-v090) | | v0.9.0 | v1.x.x | [run_2.py](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/-/blob/main/odmigs-python/odmigs_runs/run_2.py) | See [From v0.9.0](#from-v090) |
| v0.8.1 | v0.9.0 | Initializes migration system | See [From v0.8.1](#from-v081) | | v0.8.1 | v0.9.0 | Initializes migration system | See [From v0.8.1](#from-v081) |
| not supported | v0.8.1 | First release that supporting updates | | | not supported | v0.8.1 | First release that supporting updates | |
# Releases upgrade details # Releases upgrade details
@@ -66,6 +67,27 @@ Explanation of the table's columns:
### Pre-upgrade: Manual steps ### Pre-upgrade: Manual steps
#### `customization.release`
If you make use of the `customization.release` option, you have to switch to a dictionary based definition of customization files e.g. from
```
customization:
release:
collaboraOnline: "./my_custom_templating.yaml"
```
to
```
customization:
release:
collaboraOnline:
file1: "./my_custom_templating.yaml"
```
You can freely choose the `file1` dictionary key used in the example above, but it should start with a letter.
#### Redis 7.4 #### Redis 7.4
The update from openDesk 1.0.0 contains Redis 7.4.1, like the other openDesk bundled services the bundled Redis is as well not meant to be used in production. The update from openDesk 1.0.0 contains Redis 7.4.1, like the other openDesk bundled services the bundled Redis is as well not meant to be used in production.

View File

@@ -18,7 +18,9 @@ releases:
version: "{{ .Values.charts.collabora.version }}" version: "{{ .Values.charts.collabora.version }}"
values: values:
- "values.yaml.gotmpl" - "values.yaml.gotmpl"
- {{ .Values.customization.release.collaboraOnline | default "additionalValues: false" }} {{ range .Values.customization.release.collaboraOnline }}
- {{ . }}
{{ end }}
installed: {{ .Values.collabora.enabled }} installed: {{ .Values.collabora.enabled }}
commonLabels: commonLabels:

View File

@@ -18,7 +18,9 @@ releases:
version: "{{ .Values.charts.cryptpad.version }}" version: "{{ .Values.charts.cryptpad.version }}"
values: values:
- "values.yaml.gotmpl" - "values.yaml.gotmpl"
- {{ .Values.customization.release.cryptpad | default "additionalValues: false" }} {{ range .Values.customization.release.cryptpad }}
- {{ . }}
{{ end }}
installed: {{ .Values.cryptpad.enabled }} installed: {{ .Values.cryptpad.enabled }}
commonLabels: commonLabels:

View File

@@ -91,7 +91,9 @@ releases:
version: "{{ .Values.charts.elementWeb.version }}" version: "{{ .Values.charts.elementWeb.version }}"
values: values:
- "values-element.yaml.gotmpl" - "values-element.yaml.gotmpl"
- {{ .Values.customization.release.opendeskElement | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskElement }}
- {{ . }}
{{ end }}
installed: {{ .Values.element.enabled }} installed: {{ .Values.element.enabled }}
timeout: 900 timeout: 900
@@ -100,7 +102,9 @@ releases:
version: "{{ .Values.charts.elementWellKnown.version }}" version: "{{ .Values.charts.elementWellKnown.version }}"
values: values:
- "values-well-known.yaml.gotmpl" - "values-well-known.yaml.gotmpl"
- {{ .Values.customization.release.opendeskWellKnown | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskWellKnown }}
- {{ . }}
{{ end }}
installed: {{ .Values.element.enabled }} installed: {{ .Values.element.enabled }}
timeout: 900 timeout: 900
@@ -109,7 +113,9 @@ releases:
version: "{{ .Values.charts.synapseWeb.version }}" version: "{{ .Values.charts.synapseWeb.version }}"
values: values:
- "values-synapse-web.yaml.gotmpl" - "values-synapse-web.yaml.gotmpl"
- {{ .Values.customization.release.opendeskSynapseWeb | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskSynapseWeb }}
- {{ . }}
{{ end }}
installed: {{ .Values.element.enabled }} installed: {{ .Values.element.enabled }}
timeout: 900 timeout: 900
@@ -118,7 +124,9 @@ releases:
version: "{{ .Values.charts.synapse.version }}" version: "{{ .Values.charts.synapse.version }}"
values: values:
- "values-synapse.yaml.gotmpl" - "values-synapse.yaml.gotmpl"
- {{ .Values.customization.release.opendeskSynapse | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskSynapse }}
- {{ . }}
{{ end }}
installed: {{ .Values.element.enabled }} installed: {{ .Values.element.enabled }}
timeout: 900 timeout: 900

View File

@@ -18,7 +18,9 @@ releases:
version: "{{ .Values.charts.jitsi.version }}" version: "{{ .Values.charts.jitsi.version }}"
values: values:
- "values-jitsi.yaml.gotmpl" - "values-jitsi.yaml.gotmpl"
- {{ .Values.customization.release.jitsi | default "additionalValues: false" }} {{ range .Values.customization.release.jitsi }}
- {{ . }}
{{ end }}
installed: {{ .Values.jitsi.enabled }} installed: {{ .Values.jitsi.enabled }}
timeout: 900 timeout: 900

View File

@@ -21,7 +21,9 @@ releases:
values: values:
- "values.yaml.gotmpl" - "values.yaml.gotmpl"
- "../../shared/migrations.yaml.gotmpl" - "../../shared/migrations.yaml.gotmpl"
- {{ .Values.customization.release.migrationsPost | default "additionalValues: false" }} {{ range .Values.customization.release.migrationsPost }}
- {{ . }}
{{ end }}
installed: {{ .Values.migrations.enabled }} installed: {{ .Values.migrations.enabled }}
timeout: 900 timeout: 900

View File

@@ -21,7 +21,9 @@ releases:
values: values:
- "values.yaml.gotmpl" - "values.yaml.gotmpl"
- "../../shared/migrations.yaml.gotmpl" - "../../shared/migrations.yaml.gotmpl"
- {{ .Values.customization.release.migrationsPre | default "additionalValues: false" }} {{ range .Values.customization.release.migrationsPre }}
- {{ . }}
{{ end }}
installed: {{ .Values.migrations.enabled }} installed: {{ .Values.migrations.enabled }}
timeout: 900 timeout: 900

View File

@@ -25,7 +25,9 @@ releases:
version: "{{ .Values.charts.nextcloudManagement.version }}" version: "{{ .Values.charts.nextcloudManagement.version }}"
values: values:
- "values-nextcloud-mgmt.yaml.gotmpl" - "values-nextcloud-mgmt.yaml.gotmpl"
- {{ .Values.customization.release.opendeskNextcloudManagement | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskNextcloudManagement }}
- {{ . }}
{{ end }}
waitForJobs: true waitForJobs: true
wait: true wait: true
installed: {{ .Values.nextcloud.enabled }} installed: {{ .Values.nextcloud.enabled }}
@@ -35,7 +37,9 @@ releases:
version: "{{ .Values.charts.nextcloud.version }}" version: "{{ .Values.charts.nextcloud.version }}"
values: values:
- "values-nextcloud.yaml.gotmpl" - "values-nextcloud.yaml.gotmpl"
- {{ .Values.customization.release.opendeskNextcloud | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskNextcloud }}
- {{ . }}
{{ end }}
needs: needs:
- "opendesk-nextcloud-management" - "opendesk-nextcloud-management"
installed: {{ .Values.nextcloud.enabled }} installed: {{ .Values.nextcloud.enabled }}

View File

@@ -46,7 +46,9 @@ releases:
- "values-nubus.yaml.gotmpl" - "values-nubus.yaml.gotmpl"
- "values-opendesk-customization.yaml.gotmpl" - "values-opendesk-customization.yaml.gotmpl"
- "values-opendesk-images.yaml.gotmpl" - "values-opendesk-images.yaml.gotmpl"
- {{ .Values.customization.release.ums | default "additionalValues: false" }} {{ range .Values.customization.release.ums }}
- {{ . }}
{{ end }}
installed: {{ .Values.nubus.enabled }} installed: {{ .Values.nubus.enabled }}
timeout: 900 timeout: 900
# Intercom-Service # Intercom-Service
@@ -55,7 +57,9 @@ releases:
version: "{{ .Values.charts.intercomService.version }}" version: "{{ .Values.charts.intercomService.version }}"
values: values:
- "values-intercom-service.yaml.gotmpl" - "values-intercom-service.yaml.gotmpl"
- {{ .Values.customization.release.intercomService | default "additionalValues: false" }} {{ range .Values.customization.release.intercomService }}
- {{ . }}
{{ end }}
installed: {{ .Values.nubus.enabled }} installed: {{ .Values.nubus.enabled }}
# openDesk Keycloak Bootstrap Chart # openDesk Keycloak Bootstrap Chart
@@ -64,7 +68,9 @@ releases:
version: "{{ .Values.charts.opendeskKeycloakBootstrap.version }}" version: "{{ .Values.charts.opendeskKeycloakBootstrap.version }}"
values: values:
- "values-opendesk-keycloak-bootstrap.yaml.gotmpl" - "values-opendesk-keycloak-bootstrap.yaml.gotmpl"
- {{ .Values.customization.release.opendeskKeycloakBootstrap | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskKeycloakBootstrap }}
- {{ . }}
{{ end }}
needs: needs:
- "ums" - "ums"
installed: {{ .Values.nubus.enabled }} installed: {{ .Values.nubus.enabled }}
@@ -76,7 +82,9 @@ releases:
version: "{{ .Values.charts.nginxS3Gateway.version }}" version: "{{ .Values.charts.nginxS3Gateway.version }}"
values: values:
- "values-nginx-s3-gateway.yaml.gotmpl" - "values-nginx-s3-gateway.yaml.gotmpl"
- {{ .Values.customization.release.nginxS3Gateway | default "additionalValues: false" }} {{ range .Values.customization.release.nginxS3Gateway }}
- {{ . }}
{{ end }}
installed: {{ not .Values.minio.enabled }} installed: {{ not .Values.minio.enabled }}
timeout: 900 timeout: 900

View File

@@ -45,7 +45,9 @@ releases:
version: "{{ .Values.charts.dovecot.version }}" version: "{{ .Values.charts.dovecot.version }}"
values: values:
- "values-dovecot.yaml.gotmpl" - "values-dovecot.yaml.gotmpl"
- {{ .Values.customization.release.dovecot | default "additionalValues: false" }} {{ range .Values.customization.release.dovecot }}
- {{ . }}
{{ end }}
installed: {{ .Values.dovecot.enabled }} installed: {{ .Values.dovecot.enabled }}
timeout: 900 timeout: 900
@@ -55,7 +57,9 @@ releases:
values: values:
- "values-openxchange.yaml.gotmpl" - "values-openxchange.yaml.gotmpl"
- "values-openxchange-enterprise-contact-picker.yaml.gotmpl" - "values-openxchange-enterprise-contact-picker.yaml.gotmpl"
- {{ .Values.customization.release.openXchange | default "additionalValues: false" }} {{ range .Values.customization.release.openXchange }}
- {{ . }}
{{ end }}
installed: {{ .Values.oxAppsuite.enabled }} installed: {{ .Values.oxAppsuite.enabled }}
timeout: 900 timeout: 900
@@ -64,7 +68,9 @@ releases:
version: "{{ .Values.charts.openXchangeAppSuiteBootstrap.version }}" version: "{{ .Values.charts.openXchangeAppSuiteBootstrap.version }}"
values: values:
- "values-openxchange-bootstrap.yaml.gotmpl" - "values-openxchange-bootstrap.yaml.gotmpl"
- {{ .Values.customization.release.opendeskOpenXchangeBootstrap | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskOpenXchangeBootstrap }}
- {{ . }}
{{ end }}
installed: {{ .Values.oxAppsuite.enabled }} installed: {{ .Values.oxAppsuite.enabled }}
timeout: 900 timeout: 900
@@ -73,7 +79,9 @@ releases:
version: "{{ .Values.charts.oxConnector.version }}" version: "{{ .Values.charts.oxConnector.version }}"
values: values:
- "values-oxconnector.yaml.gotmpl" - "values-oxconnector.yaml.gotmpl"
- {{ .Values.customization.release.oxConnector | default "additionalValues: false" }} {{ range .Values.customization.release.oxConnector }}
- {{ . }}
{{ end }}
installed: {{ .Values.oxAppsuite.enabled }} installed: {{ .Values.oxAppsuite.enabled }}
needs: needs:
- "open-xchange" - "open-xchange"

View File

@@ -20,7 +20,9 @@ releases:
waitForJobs: true waitForJobs: true
values: values:
- "values.yaml.gotmpl" - "values.yaml.gotmpl"
- {{ .Values.customization.release.opendeskOpenprojectBootstrap | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskOpenprojectBootstrap }}
- {{ . }}
{{ end }}
installed: {{ .Values.openproject.enabled }} installed: {{ .Values.openproject.enabled }}
timeout: 900 timeout: 900

View File

@@ -20,7 +20,9 @@ releases:
waitForJobs: true waitForJobs: true
values: values:
- "values.yaml.gotmpl" - "values.yaml.gotmpl"
- {{ .Values.customization.release.openproject | default "additionalValues: false" }} {{ range .Values.customization.release.openproject }}
- {{ . }}
{{ end }}
installed: {{ .Values.openproject.enabled }} installed: {{ .Values.openproject.enabled }}
timeout: 1800 timeout: 1800

View File

@@ -119,7 +119,9 @@ releases:
version: "{{ .Values.charts.otterize.version }}" version: "{{ .Values.charts.otterize.version }}"
values: values:
- "values-otterize.yaml.gotmpl" - "values-otterize.yaml.gotmpl"
- {{ .Values.customization.release.opendeskOtterize | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskOtterize }}
- {{ . }}
{{ end }}
installed: {{ .Values.security.otterizeIntents.enabled }} installed: {{ .Values.security.otterizeIntents.enabled }}
timeout: 900 timeout: 900
@@ -128,7 +130,9 @@ releases:
version: "{{ .Values.charts.home.version }}" version: "{{ .Values.charts.home.version }}"
values: values:
- "values-home.yaml.gotmpl" - "values-home.yaml.gotmpl"
- {{ .Values.customization.release.opendeskHome | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskHome }}
- {{ . }}
{{ end }}
installed: {{ .Values.home.enabled }} installed: {{ .Values.home.enabled }}
- name: "opendesk-certificates" - name: "opendesk-certificates"
@@ -136,7 +140,9 @@ releases:
version: "{{ .Values.charts.certificates.version }}" version: "{{ .Values.charts.certificates.version }}"
values: values:
- "values-certificates.yaml.gotmpl" - "values-certificates.yaml.gotmpl"
- {{ .Values.customization.release.opendeskCertificates | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskCertificates }}
- {{ . }}
{{ end }}
installed: {{ .Values.certificates.enabled }} installed: {{ .Values.certificates.enabled }}
timeout: 900 timeout: 900
@@ -145,7 +151,9 @@ releases:
version: "{{ .Values.charts.redis.version }}" version: "{{ .Values.charts.redis.version }}"
values: values:
- "values-redis.yaml.gotmpl" - "values-redis.yaml.gotmpl"
- {{ .Values.customization.release.redis | default "additionalValues: false" }} {{ range .Values.customization.release.redis }}
- {{ . }}
{{ end }}
installed: {{ .Values.redis.enabled }} installed: {{ .Values.redis.enabled }}
timeout: 900 timeout: 900
@@ -154,7 +162,9 @@ releases:
version: "{{ .Values.charts.memcached.version }}" version: "{{ .Values.charts.memcached.version }}"
values: values:
- "values-memcached.yaml.gotmpl" - "values-memcached.yaml.gotmpl"
- {{ .Values.customization.release.memcached | default "additionalValues: false" }} {{ range .Values.customization.release.memcached }}
- {{ . }}
{{ end }}
installed: {{ .Values.memcached.enabled }} installed: {{ .Values.memcached.enabled }}
timeout: 900 timeout: 900
@@ -163,7 +173,9 @@ releases:
version: "{{ .Values.charts.postgresql.version }}" version: "{{ .Values.charts.postgresql.version }}"
values: values:
- "values-postgresql.yaml.gotmpl" - "values-postgresql.yaml.gotmpl"
- {{ .Values.customization.release.postgresql | default "additionalValues: false" }} {{ range .Values.customization.release.postgresql }}
- {{ . }}
{{ end }}
installed: {{ .Values.postgresql.enabled }} installed: {{ .Values.postgresql.enabled }}
timeout: 900 timeout: 900
@@ -172,7 +184,9 @@ releases:
version: "{{ .Values.charts.mariadb.version }}" version: "{{ .Values.charts.mariadb.version }}"
values: values:
- "values-mariadb.yaml.gotmpl" - "values-mariadb.yaml.gotmpl"
- {{ .Values.customization.release.mariadb | default "additionalValues: false" }} {{ range .Values.customization.release.mariadb }}
- {{ . }}
{{ end }}
installed: {{ .Values.mariadb.enabled }} installed: {{ .Values.mariadb.enabled }}
timeout: 900 timeout: 900
@@ -181,7 +195,9 @@ releases:
version: "{{ .Values.charts.postfix.version }}" version: "{{ .Values.charts.postfix.version }}"
values: values:
- "values-postfix.yaml.gotmpl" - "values-postfix.yaml.gotmpl"
- {{ .Values.customization.release.postfix | default "additionalValues: false" }} {{ range .Values.customization.release.postfix }}
- {{ . }}
{{ end }}
installed: {{ .Values.postfix.enabled }} installed: {{ .Values.postfix.enabled }}
timeout: 900 timeout: 900
@@ -190,7 +206,9 @@ releases:
version: "{{ .Values.charts.dkimpy.version }}" version: "{{ .Values.charts.dkimpy.version }}"
values: values:
- "values-dkimpy.yaml.gotmpl" - "values-dkimpy.yaml.gotmpl"
- {{ .Values.customization.release.opendeskDkimpyMilter | default "additionalValues: false" }} {{ range .Values.customization.release.opendeskDkimpyMilter }}
- {{ . }}
{{ end }}
installed: {{ .Values.dkimpy.enabled }} installed: {{ .Values.dkimpy.enabled }}
timeout: 900 timeout: 900
@@ -199,7 +217,9 @@ releases:
version: "{{ .Values.charts.clamav.version }}" version: "{{ .Values.charts.clamav.version }}"
values: values:
- "values-clamav-distributed.yaml.gotmpl" - "values-clamav-distributed.yaml.gotmpl"
- {{ .Values.customization.release.clamav | default "additionalValues: false" }} {{ range .Values.customization.release.clamav }}
- {{ . }}
{{ end }}
installed: {{ .Values.clamavDistributed.enabled }} installed: {{ .Values.clamavDistributed.enabled }}
timeout: 900 timeout: 900
@@ -208,7 +228,9 @@ releases:
version: "{{ .Values.charts.clamavSimple.version }}" version: "{{ .Values.charts.clamavSimple.version }}"
values: values:
- "values-clamav-simple.yaml.gotmpl" - "values-clamav-simple.yaml.gotmpl"
- {{ .Values.customization.release.clamavSimple | default "additionalValues: false" }} {{ range .Values.customization.release.clamavSimple }}
- {{ . }}
{{ end }}
installed: {{ .Values.clamavSimple.enabled }} installed: {{ .Values.clamavSimple.enabled }}
timeout: 900 timeout: 900
@@ -217,7 +239,9 @@ releases:
version: "{{ .Values.charts.minio.version }}" version: "{{ .Values.charts.minio.version }}"
values: values:
- "values-minio.yaml.gotmpl" - "values-minio.yaml.gotmpl"
- {{ .Values.customization.release.minio | default "additionalValues: false" }} {{ range .Values.customization.release.minio }}
- {{ . }}
{{ end }}
installed: {{ .Values.minio.enabled }} installed: {{ .Values.minio.enabled }}
timeout: 900 timeout: 900

View File

@@ -19,7 +19,9 @@ releases:
wait: true wait: true
values: values:
- "values.yaml.gotmpl" - "values.yaml.gotmpl"
- {{ .Values.customization.release.xwiki | default "additionalValues: false" }} {{ range .Values.customization.release.xwiki }}
- {{ . }}
{{ end }}
installed: {{ .Values.xwiki.enabled }} installed: {{ .Values.xwiki.enabled }}
timeout: 1800 timeout: 1800

View File

@@ -9,50 +9,50 @@
customization: customization:
release: release:
# collabora # collabora
collaboraOnline: ~ collaboraOnline: {}
# cryptpad # cryptpad
cryptpad: ~ cryptpad: {}
# element # element
opendeskElement: ~ opendeskElement: {}
opendeskWellKnown: ~ opendeskWellKnown: {}
opendeskSynapseWeb: ~ opendeskSynapseWeb: {}
opendeskSynapse: ~ opendeskSynapse: {}
# jitsi # jitsi
jitsi: ~ jitsi: {}
# migrations-post # migrations-post
migrationsPost: ~ migrationsPost: {}
# migrations-pre # migrations-pre
migrationsPre: ~ migrationsPre: {}
# nextcloud # nextcloud
opendeskNextcloudManagement: ~ opendeskNextcloudManagement: {}
opendeskNextcloud: ~ opendeskNextcloud: {}
# nubus # nubus
ums: ~ ums: {}
intercomService: ~ intercomService: {}
opendeskKeycloakBootstrap: ~ opendeskKeycloakBootstrap: {}
nginxS3Gateway: ~ nginxS3Gateway: {}
# open-xchange # open-xchange
dovecot: ~ dovecot: {}
openXchange: ~ openXchange: {}
opendeskOpenXchangeBootstrap: ~ opendeskOpenXchangeBootstrap: {}
oxConnector: ~ oxConnector: {}
# openproject # openproject
openproject: ~ openproject: {}
# openproject-bootstrap # openproject-bootstrap
opendeskOpenprojectBootstrap: ~ opendeskOpenprojectBootstrap: {}
# services # services
opendeskOtterize: ~ opendeskOtterize: {}
opendeskHome: ~ opendeskHome: {}
opendeskCertificates: ~ opendeskCertificates: {}
redis: ~ redis: {}
memcached: ~ memcached: {}
postgresql: ~ postgresql: {}
mariadb: ~ mariadb: {}
postfix: ~ postfix: {}
opendeskDkimpyMilter: ~ opendeskDkimpyMilter: {}
clamav: ~ clamav: {}
clamavSimple: ~ clamavSimple: {}
minio: ~ minio: {}
# xwiki # xwiki
xwiki: ~ xwiki: {}
... ...