From 64fe1829986b38d7b28a44a7dc1ce4b8c44cc2a2 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Mon, 18 Sep 2023 15:25:51 +0200 Subject: [PATCH] feat(plugins): adding default apps install with env New configmap cm-plugin-scripts uses NEXTCLOUD_PLUGIN_LIST env to install apps This script is runned on each pod "start" --- overlays/dev/patches/deployment.yaml | 32 ++++++----------- .../nextcloud/cm-plugins-script.yaml | 34 +++++++++++++++++++ 2 files changed, 44 insertions(+), 22 deletions(-) create mode 100644 overlays/dev/resources/nextcloud/cm-plugins-script.yaml diff --git a/overlays/dev/patches/deployment.yaml b/overlays/dev/patches/deployment.yaml index 3e39575..82be6e3 100644 --- a/overlays/dev/patches/deployment.yaml +++ b/overlays/dev/patches/deployment.yaml @@ -14,21 +14,10 @@ spec: - $(MINIO_BOOTSTRAP_JOB_NAME) containers: - name: nextcloud + #envFrom: + #- configMapRef: + # name: nextcloud-env-update env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: nextcloud-postgres-app - key: username - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: nextcloud-postgres-app - key: password - - name: OBJECTSTORE_S3_BUCKET - value: nxt-minio - - name: OBJECTSTORE_S3_AUTOCREATE - value: "true" - name: OBJECTSTORE_S3_KEY valueFrom: secretKeyRef: @@ -39,14 +28,6 @@ spec: secretKeyRef: name: nextcloud-minio-user key: CONSOLE_SECRET_KEY - - name: OBJECTSTORE_S3_HOST - value: minio:$(MINIO_SERVICE_PORT) - - name: OBJECTSTORE_S3_PORT - value: "443" - - name: OBJECTSTORE_S3_SSL - value: "true" - - name: OBJECTSTORE_S3_USEPATH_STYLE - value: "true" livenessProbe: httpGet: @@ -76,6 +57,9 @@ spec: - mountPath: /docker-entrypoint-hooks.d/post-installation/ldap.sh name: script-config-ldap subPath: poststart-ldap.sh + - mountPath: /docker-entrypoint-hooks.d/before-starting/plugins.sh + name: script-config-plugins + subPath: poststart-plugins.sh - mountPath: /etc/minio-ccerts name: minio-certs readOnly: true @@ -87,5 +71,9 @@ spec: configMap: name: script-config-ldap defaultMode: 0755 + - name: script-config-plugins + configMap: + name: script-config-plugins + defaultMode: 0755 restartPolicy: Always serviceAccountName: nextcloud-sa diff --git a/overlays/dev/resources/nextcloud/cm-plugins-script.yaml b/overlays/dev/resources/nextcloud/cm-plugins-script.yaml new file mode 100644 index 0000000..8bc088f --- /dev/null +++ b/overlays/dev/resources/nextcloud/cm-plugins-script.yaml @@ -0,0 +1,34 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: script-config-plugins +data: + poststart-plugins.sh: | + #!/bin/sh + set -eu + ( + if ! flock -n 7; then + echo "Another process is installing plugins. waiting" + flock 7 + exit 0 + fi + + echo "Installing default apps" + plugin_list="${NEXTCLOUD_PLUGIN_LIST}" + OPTS="" + occ="/var/www/html/occ" + + installed_apps=$(mktemp) + /bin/sh -c "${occ} app:list" | awk '!/Enabled|Disabled/ {print substr($2, 1, length($2)-1)}' > "${installed_apps}" + + for plugin in ${plugin_list}; do + if ! grep -q "${plugin}" "${installed_apps}"; then + /bin/sh -c "${occ} ${OPTS} app:install ${plugin}" + /bin/sh -c "${occ} ${OPTS} app:update ${plugin}" + /bin/sh -c "${occ} ${OPTS} app:enable ${plugin}" + else + echo "${plugin} allready installed" + fi + done + ) 7> /var/www/html/nextcloud-plugin-install.lock + echo "Apps installation finished"