groups: - name: "Container Images" description: "Image to be used for container" - name: "Nextcloud Configuration" description: "Configuration details for Nextcloud workload" - name: "Storage" description: "Configure Storage for Nextcloud" - name: "Container Configuration" description: "Configure nextcloud container parameters" - name: "Postgresql Configuration" description: "Configure Postgresql for nextcloud" - name: "CronJob configuration" description: "Configure CronJob for nextcloud" - name: "Scaling/Upgrade Policy" description: "Configure how pods are replaced when configuration is upgraded" - name: "Advanced DNS Settings" description: "Configure DNS settings" - name: "Resource Limits" description: "Set CPU/memory limits for Kubernetes Pod" portals: web_portal: protocols: - "$kubernetes-resource_configmap_nginx-configuration_protocol" host: - "$variable-nextcloud.host" ports: - "$variable-service.nodePort" questions: - variable: dnsConfig label: "DNS Configuration" group: "Advanced DNS Settings" schema: type: dict attrs: - variable: options label: "DNS Options" schema: type: list items: - variable: optionsEntry label: "Option Entry Configuration" schema: type: dict attrs: - variable: name label: "Option Name" schema: type: string required: true - variable: value label: "Option Value" schema: type: string required: true - variable: certificate description: "Configure Certificate for Nextcloud" label: "Certificate Configuration" group: "Nextcloud Configuration" schema: type: int $ref: - "definitions/certificate" - variable: nextcloud description: "Nextcloud configuration details" label: "Nextcloud Configuration" group: "Nextcloud Configuration" schema: type: dict required: true additional_attrs: true attrs: - variable: host description: "Nextcloud host to create application URLs" label: "Nextcloud host" schema: type: string $ref: - "definitions/nodeIP" - variable: username label: "Username" description: "Name of the Nextcloud admin user" schema: type: string default: "admin" required: true - variable: password label: "Password" description: "Password for the Nextcloud admin user" schema: type: string private: true default: "changeme" required: true - variable: datadir label: "Nextcloud data directory" description: "Configures the data directory where nextcloud stores all files from the users" schema: type: path default: "/var/www/html/data" required: true - variable: install_ffmpeg label: "Install ffmpeg" description: "Automatically Install ffmpeg when the container starts" schema: type: boolean default: false - variable: cronjob description: "Setup cronjob for nextcloud" label: "Setup cronjob for nextcloud" group: "CronJob configuration" schema: type: dict attrs: - variable: enabled label: "Enable cronjobs for nextcloud" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: schedule label: Schedule schema: type: string default: "1 */24 * * *" empty: false # Update strategy - variable: updateStrategy description: "Upgrade Policy" label: "Update Strategy" group: "Scaling/Upgrade Policy" schema: type: string default: "Recreate" enum: - value: "RollingUpdate" description: "Create new pods and then kill old ones" - value: "Recreate" description: "Kill existing pods before creating new ones" - variable: service description: "Nextcloud Service Configuration" label: "Nextcloud Service Configuration" group: "Nextcloud Configuration" schema: type: dict required: true attrs: - variable: nodePort label: "Node Port to use for Nextcloud" schema: type: int min: 9000 max: 65535 default: 9001 required: true - variable: appVolumeMounts label: "Nextcloud Storage" group: "Storage" schema: type: dict attrs: - variable: nextcloud-data label: "Nextcloud Data Volume" schema: type: dict attrs: - variable: datasetName label: "Nextcloud Data Volume Name" schema: type: string hidden: true $ref: - "normalize/ixVolume" show_if: [["hostPathEnabled", "=", false]] default: "ix-nextcloud_data" editable: false - variable: mountPath label: "Nextcloud Data Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path hidden: true editable: false default: "/var/www" - variable: hostPathEnabled label: "Enable Host Path for Nextcloud Data Volume" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: hostPath label: "Host Path for Nextcloud Data Volume" schema: type: hostpath required: true - variable: extraAppVolumeMounts label: "Nextcloud Extra Host Path Volumes" group: "Storage" schema: type: list items: - variable: extraAppVolume label: "Nextcloud Host Path Volume" description: "Add an extra host path volume for nextcloud application" schema: type: dict attrs: - variable: mountPath label: "Mount Path in Pod" description: "Path where the volume will be mounted inside the pod" schema: type: path required: true - variable: hostPath label: "Host Path" description: "Host path" schema: type: hostpath required: true - variable: postgresAppVolumeMounts label: "Postgres Storage" group: "Storage" schema: type: dict attrs: - variable: postgres-data label: "Postgres Data Volume" schema: type: dict attrs: - variable: datasetName label: "Postgres Data Volume Name" schema: type: string hidden: true $ref: - "normalize/ixVolume" default: "ix-postgres_data" show_if: [["hostPathEnabled", "=", false]] editable: false - variable: mountPath label: "Postgresql Data Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path hidden: true editable: false default: "/var/lib/postgresql/data" - variable: hostPathEnabled label: "Enable Host Path for Postgres Data Volume" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: hostPath label: "Host Path for Postgres Data Volume" schema: type: hostpath required: true - variable: postgres-backup label: "Postgres Backup Volume" schema: type: dict attrs: - variable: datasetName label: "Postgres Backup Volume Name" schema: type: string hidden: true $ref: - "normalize/ixVolume" default: "ix-postgres_backups" show_if: [["hostPathEnabled", "=", false]] editable: false - variable: mountPath label: "Postgresql Backup Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path hidden: true editable: false default: "/postgres_backups" - variable: hostPathEnabled label: "Enable Host Path for Postgres Backup Volume" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: hostPath label: "Host Path for Postgres Backup Volume" schema: type: hostpath required: true - variable: enableResourceLimits label: "Enable Pod resource limits" group: "Resource Limits" schema: type: boolean default: false - variable: cpuLimit label: "CPU Limresource limitsit" description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100." group: "Resource Limits" schema: type: string show_if: [["enableResourceLimits", "=", true]] valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)" default: "4000m" - variable: memLimit label: "Memory Limit" group: "Resource Limits" description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi" schema: type: string show_if: [["enableResourceLimits", "=", true]] valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" default: "8Gi" - variable: environmentVariables label: "Nextcloud environment" group: "Nextcloud Configuration" schema: type: list default: [] items: - variable: environmentVariable label: "Environment Variable" schema: type: dict attrs: - variable: name label: "Name" schema: type: string - variable: value label: "Value" schema: type: string