diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index ddaed51..c331d0b 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -50,7 +50,17 @@ true root connection to mariadb org.mariadb.jdbc.Driver - jdbc:mariadb://localhost:3307/ + jdbc:mariadb://localhost:3306/ + + + + + + mariadb + true + nextcloud connection to mariadb + org.mariadb.jdbc.Driver + jdbc:mariadb://localhost:3306/ diff --git a/ansible-5/roles/glusterfs-server/defaults/main.yaml b/ansible-5/roles/glusterfs-server/defaults/main.yaml index 1695e1b..c615ffd 100644 --- a/ansible-5/roles/glusterfs-server/defaults/main.yaml +++ b/ansible-5/roles/glusterfs-server/defaults/main.yaml @@ -26,6 +26,7 @@ volumes: - name: vmshares - name: mariadb - name: plex + - name: nextcloud - name: nextcloud2 # - name: prometheus # - name: tmp @@ -35,7 +36,7 @@ volumes: removed: - name: jenkins2 - - name: nextcloud +# - name: nextcloud - name: postgres mounts: diff --git a/ansible-5/roles/prod.k3s/defaults/main.yml b/ansible-5/roles/prod.k3s/defaults/main.yml index 57efdf3..ebe271f 100644 --- a/ansible-5/roles/prod.k3s/defaults/main.yml +++ b/ansible-5/roles/prod.k3s/defaults/main.yml @@ -20,6 +20,12 @@ fstab: - name: mariadb path: "/opt/data/db" state: mounted + - name: nextcloud + path: "/opt/data/nextcloud" + state: mounted + - name: nextcloud2 + path: "/opt/data/nextcloud2" + state: mounted helm: repos: @@ -60,3 +66,8 @@ apps: namespace: default pvc: data-dkregistry-0 state: present + + nextcloud: + enabled: true + namespace: nextcloud + state: absent diff --git a/ansible-5/roles/prod.k3s/files/nextcloud/values.yaml b/ansible-5/roles/prod.k3s/files/nextcloud/values.yaml new file mode 100644 index 0000000..d0539dd --- /dev/null +++ b/ansible-5/roles/prod.k3s/files/nextcloud/values.yaml @@ -0,0 +1,113 @@ +--- + +image: +# repository: dkregistry.xai-corp.net + tag: "21.0" +# flavor: apache +# pullSecrets: regcred + +ingress: + enabled: true + annotations: + kubernetes.io/ingress.class: "traefik" + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" + traefik.ingress.kubernetes.io/custom-response-headers: "Access-Control-Allow-Origin:*||Access-Control-Allow-Methods:GET,POST,OPTIONS||Access-Control-Allow-Headers:DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range||Access-Control-Expose-Headers:Content-Length,Content-Range" + + tls: # < placing a host in the TLS config will determine what ends up in the cert's subjectAltNames + - secretName: xai-corp-production-tls + +nextcloud: +# image: xaicorp/nextcloud + host: xaibox.xai-corp.net + datadir: /var/www/html/data + defaultConfigs: + autoconfig\.php: false + configs: + config.php: |- + true, + 'instanceid' => 'ocxziwl6co38', + 'passwordsalt' => 'FKWh+oXeNAm2EPHg6mz+9xE48gunGb', + 'secret' => 'yC3EEMk31oZpas8U65awdT5rxR40+8uP5NEkD82S3iLNNWqr', + 'trusted_domains' => [ + 0 => 'dkhost.xai-corp.net:8083', + 1 => 'dkhost:8083', + 2 => 'tasks.xaibox_app:8083', + 3 => 'xaibox.xai-corp.net', + 4 => 'localhost', + ], + 'htaccess.RewriteBase' => '/', + 'memcache.local' => '\\OC\\Memcache\\APCu', + 'apps_paths' => [ + 0 => [ + 'path' => '/var/www/html/apps', + 'url' => '/apps', + 'writable' => false, + ], + 1 => [ + 'path' => '/var/www/html/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ], + ], + 'datadirectory' => '/var/www/html/data', + 'dbtype' => 'mysql', + 'dbname' => 'nextcloud', + 'dbhost' => 'mariadb.mariadb', + 'dbport' => '3306', + 'dbtableprefix' => 'oc_', + 'mysql.utf8mb4' => true, + 'dbuser' => 'nextcloud', + 'dbpassword' => 'xh891hx1hc89f239hibndnxc1i', + + 'version' => '21.0.9.1', + 'overwrite.cli.url' => 'http://localhost', + 'log_type' => 'owncloud', + 'logfile' => 'nextcloud.log' + ]; + +# extraVars: +# ServerName: xaibox.xai-corp.net +# + extraVolumes: + - name: extra-data + persistentVolumeClaim: + claimName: nextcloud-data-0 + - name: extra-apps + persistentVolumeClaim: + claimName: nextcloud-apps-0 + +# volumeMounts: +# - name: extra-data +# mountPath: /data +# - name: extra-apps +# mountPath: /apps + +persistence: + enabled: true +# existingClaim: nextcloud-main-0 + nextcloudData: + enabled: true + existingClaim: nextcloud-data-0 + +readinessProbe: + initialDelaySeconds: 30 + +startupProbe: + enabled: true + initialDelaySeconds: 60 + +internalDatabase: + enabled: false +externalDatabase: + enabled: true + type: mysql + host: "sql.xai-corp.net:3306" + database: nextcloud2 + user: nextcloud + password: xh891hx1hc89f239hibndnxc1i + +redis: + enabled: false diff --git a/ansible-5/roles/prod.k3s/tasks/deployments/dkregistry.yaml b/ansible-5/roles/prod.k3s/tasks/deployments/dkregistry.yaml index dd98fe9..a6957cd 100644 --- a/ansible-5/roles/prod.k3s/tasks/deployments/dkregistry.yaml +++ b/ansible-5/roles/prod.k3s/tasks/deployments/dkregistry.yaml @@ -37,7 +37,6 @@ namespace: "{{apps.dkregistry.namespace}}" stringData: htpassword: "richard:$2y$05$Zp.GEiUbsGYYVOYWE71truuERCAE.D5wwGzU3Xi3wIVAWjH60t/U." - become: true - name: create docker-registry resources diff --git a/ansible-5/roles/prod.k3s/tasks/deployments/nextcloud.yaml b/ansible-5/roles/prod.k3s/tasks/deployments/nextcloud.yaml new file mode 100644 index 0000000..8f97623 --- /dev/null +++ b/ansible-5/roles/prod.k3s/tasks/deployments/nextcloud.yaml @@ -0,0 +1,54 @@ +--- +# https://github.com/nextcloud/helm/tree/master/charts/nextcloud + + +- name: Create a namespace for nextcloud + k8s: + kubeconfig: "/etc/rancher/k3s/k3s.yaml" + name: "{{apps.nextcloud.namespace}}" + api_version: v1 + kind: Namespace + state: "{{apps.nextcloud.state}}" + become: true + + +- name: create persistent volume resources + kubernetes.core.k8s: + kubeconfig: "/etc/rancher/k3s/k3s.yaml" + state: "{{apps.nextcloud.state}}" + definition: "{{ lookup('template', item) | from_yaml }}" + loop: + - nextcloud/pv-apps.yaml + - nextcloud/pv-data.yaml + - nextcloud/pv-configs.yaml + - nextcloud/pv-main.yaml + - nextcloud/pv-apps-claim.yaml + - nextcloud/pv-data-claim.yaml + - nextcloud/pv-configs-claim.yaml + - nextcloud/pv-main-claim.yaml + become: true + +- name: Install nextcloud globally available + block: + - name: Add nextcloud chart helm repo + local_action: + module: kubernetes.core.helm_repository + name: nextcloud + repo_url: https://nextcloud.github.io/helm/ + + - name: load variables files/nextcloud/values.yaml + ansible.builtin.include_vars: + file: files/nextcloud/values.yaml + name: stash_values + + - name: Install Nextcloud Release + local_action: + module: kubernetes.core.helm + release_state: "{{apps.nextcloud.state}}" + name: nextcloud + namespace: "{{apps.nextcloud.namespace}}" + create_namespace: yes + update_repo_cache: True + chart_ref: nextcloud/nextcloud + values: "{{stash_values}}" + wait: true diff --git a/ansible-5/roles/prod.k3s/tasks/main.yml b/ansible-5/roles/prod.k3s/tasks/main.yml index ac4b24b..f136b63 100644 --- a/ansible-5/roles/prod.k3s/tasks/main.yml +++ b/ansible-5/roles/prod.k3s/tasks/main.yml @@ -29,6 +29,10 @@ include_tasks: deployments/dkregistry.yaml when: apps.dkregistry.enabled +- name: deploy nextcloud + include_tasks: deployments/nextcloud.yaml + when: apps.nextcloud.enabled + #----------------------------------------------------- #- include_tasks: mariadb.yaml # diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-apps-claim.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-apps-claim.yaml new file mode 100644 index 0000000..fbdd8a2 --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-apps-claim.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nextcloud-apps-0 + namespace: "{{apps.nextcloud.namespace}}" +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-apps.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-apps.yaml new file mode 100644 index 0000000..6fdec26 --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-apps.yaml @@ -0,0 +1,17 @@ +--- +# persistent volume +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nextcloud-pv-apps-local + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 100Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/opt/data/nextcloud2/apps" + diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-configs-claim.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-configs-claim.yaml new file mode 100644 index 0000000..b23d845 --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-configs-claim.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nextcloud-configs-0 + namespace: "{{apps.nextcloud.namespace}}" +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-configs.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-configs.yaml new file mode 100644 index 0000000..8616bae --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-configs.yaml @@ -0,0 +1,17 @@ +--- +# persistent volume +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nextcloud-pv-configs-local + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 100Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/opt/data/nextcloud2/config" + diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-data-claim.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-data-claim.yaml new file mode 100644 index 0000000..749a759 --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-data-claim.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nextcloud-data-0 + namespace: "{{apps.nextcloud.namespace}}" +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-data.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-data.yaml new file mode 100644 index 0000000..d52058a --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-data.yaml @@ -0,0 +1,17 @@ +--- +# persistent volume +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nextcloud-pv-data-local + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 100Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/opt/data/nextcloud2/data" + diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-main-claim.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-main-claim.yaml new file mode 100644 index 0000000..23442bf --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-main-claim.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nextcloud-main-0 + namespace: "{{apps.nextcloud.namespace}}" +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/ansible-5/roles/prod.k3s/templates/nextcloud/pv-main.yaml b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-main.yaml new file mode 100644 index 0000000..c55b4f8 --- /dev/null +++ b/ansible-5/roles/prod.k3s/templates/nextcloud/pv-main.yaml @@ -0,0 +1,17 @@ +--- +# persistent volume +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nextcloud-pv-main-local + labels: + type: emptyDir +spec: + storageClassName: manual + capacity: + storage: 100Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/opt/data/nextcloud2/main" +