summaryrefslogtreecommitdiff
path: root/roles/apps/nextcloud/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/apps/nextcloud/tasks/main.yml')
-rw-r--r--roles/apps/nextcloud/tasks/main.yml198
1 files changed, 8 insertions, 190 deletions
diff --git a/roles/apps/nextcloud/tasks/main.yml b/roles/apps/nextcloud/tasks/main.yml
index d1a11b19..69bbba6a 100644
--- a/roles/apps/nextcloud/tasks/main.yml
+++ b/roles/apps/nextcloud/tasks/main.yml
@@ -1,36 +1,4 @@
---
-- name: create zfs datasets
- when: nextcloud_zfs is defined
- block:
- - name: create zfs base dataset
- zfs:
- name: "{{ nextcloud_zfs.pool }}/{{ nextcloud_zfs.name }}"
- state: present
- extra_zfs_properties: "{{ nextcloud_zfs.properties | dehumanize_zfs_properties | default(omit) }}"
-
- - name: create zfs volumes for instances
- loop: "{{ nextcloud_instances | dict2items }}"
- loop_control:
- label: "{{ item.key }} ({{ (item.value.zfs_properties | default({})).items() | map('join', '=') | join(', ') }})"
- zfs:
- name: "{{ nextcloud_zfs.pool }}/{{ nextcloud_zfs.name }}/{{ item.key }}"
- state: present
- extra_zfs_properties: "{{ item.value.zfs_properties | dehumanize_zfs_properties | default(omit) }}"
-
- - name: configure nextcloud base bath
- set_fact:
- nextcloud_base_path: "{{ (zfs_pools[nextcloud_zfs.pool].mountpoint, nextcloud_zfs.name) | path_join }}"
-
-
-- name: create instance subdirectories
- when: nextcloud_zfs is not defined
- loop: "{{ nextcloud_instances | list }}"
- file:
- path: "{{ nextcloud_base_path }}/{{ item }}"
- state: directory
-
-
-
- name: add group for nextcloud app
group:
name: nc-app
@@ -43,15 +11,6 @@
group: nc-app
password: "!"
-- name: create nextcloud app subdirectory
- loop: "{{ nextcloud_instances | list }}"
- file:
- path: "{{ nextcloud_base_path }}/{{ item }}/nextcloud"
- owner: "{{ nextcloud_app_uid }}"
- group: "{{ nextcloud_app_gid }}"
- state: directory
-
-
- name: add group for nextcloud db
group:
name: nc-db
@@ -64,17 +23,6 @@
group: nc-db
password: "!"
-- name: create nextcloud database subdirectory
- loop: "{{ nextcloud_instances | dict2items }}"
- loop_control:
- label: "{{ item.key }} ({{ item.value.database.type }})"
- file:
- path: "{{ nextcloud_base_path }}/{{ item.key }}/{{ item.value.database.type }}"
- owner: "{{ nextcloud_db_uid }}"
- group: "{{ nextcloud_db_gid }}"
- state: directory
-
-
- name: add group for nextcloud redis
group:
name: nc-redis
@@ -87,154 +35,24 @@
group: nc-redis
password: "!"
-- name: create nextcloud database subdirectory
- loop: "{{ nextcloud_instances | list }}"
- file:
- path: "{{ nextcloud_base_path }}/{{ item }}/redis"
- owner: "{{ nextcloud_redis_uid }}"
- group: "{{ nextcloud_redis_gid }}"
- state: directory
-
-
-- name: create auxiliary config directory
- loop: "{{ nextcloud_instances | list }}"
- file:
- path: "{{ nextcloud_base_path }}/{{ item }}/config"
- state: directory
-
-- name: create apache vhost config
- loop: "{{ nextcloud_instances | list }}"
- template:
- src: apache-site.conf.j2
- dest: "{{ nextcloud_base_path }}/{{ item }}/config/apache-site.conf"
-
-- name: configure apache to run on port 8080 only
- loop: "{{ nextcloud_instances | list }}"
- copy:
- content: |
- Listen 8080
- dest: "{{ nextcloud_base_path }}/{{ item }}/config/ports.conf"
-
-
-- name: build custom image
- loop: "{{ nextcloud_instances | dict2items }}"
- loop_control:
- label: "{{ item.key }}"
- # when: "'custom_image' in item.value"
- include_tasks: custom-image.yml
-
-- name: install pod manifest
- loop: "{{ nextcloud_instances | dict2items }}"
- loop_control:
- label: "{{ item.key }}"
- vars:
- kubernetes_standalone_pod:
- name: "nextcloud-{{ item.key }}"
- spec: "{{ lookup('template', 'pod-spec-with-{{ item.value.database.type }}.yml.j2') }}"
- mode: "0600"
- config_hash_items:
- - path: "{{ nextcloud_base_path }}/{{ item.key }}/config/apache-site.conf"
- properties:
- - checksum
- - path: "{{ nextcloud_base_path }}/{{ item.key }}/config/ports.conf"
- properties:
- - checksum
- - path: "{{ nextcloud_base_path }}/{{ item.key }}/build/Dockerfile"
- properties:
- - checksum
- include_role:
- name: kubernetes/standalone/pod
-
-
-- name: install cron trigger script
- loop: "{{ nextcloud_instances | list }}"
- template:
- src: run-cron.sh.j2
- dest: "{{ nextcloud_base_path }}/{{ item }}/config/run-cron.sh"
- mode: 0755
-
- name: install template systemd unit for cron trigger
template:
src: cron@.service.j2
dest: /etc/systemd/system/nextcloud-cron@.service
-- name: install systemd timer unit
- loop: "{{ nextcloud_instances | list }}"
- template:
- src: cron-.timer.j2
- dest: "/etc/systemd/system/nextcloud-cron-{{ item }}.timer"
-
-- name: start/enable cron trigger systemd timer
- loop: "{{ nextcloud_instances | list }}"
- systemd:
- daemon_reload: yes
- name: "nextcloud-cron-{{ item }}.timer"
- state: started
- enabled: yes
-
-
-- name: configure nginx vhost
- loop: "{{ nextcloud_instances | dict2items }}"
- loop_control:
- label: "{{ item.key }}"
- vars:
- nginx_vhost:
- name: "nextcloud-{{ item.key }}"
- template: generic
- tls:
- certificate_provider: "{{ acme_client }}"
- hostnames: "{{ item.value.hostnames }}"
- locations:
- '/':
- proxy_pass: "http://127.0.0.1:{{ item.value.port }}"
- proxy_redirect:
- - redirect: "http://$host/"
- replacement: "https://$host/"
- - redirect: "http://$host:8080/"
- replacement: "https://$host/"
- extra_directives: |-
- client_max_body_size 0;
- types {
- text/javascript js mjs;
- }
- include_role:
- name: nginx/vhost
-
-
- name: install management scripts
loop:
- - nextcloud-upgrade
- - nextcloud-occ
+ - nextcloud-upgrade
+ - nextcloud-occ
+ - nextcloud-cron
template:
src: "{{ item }}.j2"
dest: "/usr/local/bin/{{ item }}"
mode: 0755
-## TODO:
-# do this automatically!
-- name: print info for new instance
- loop: "{{ nextcloud_instances | dict2items }}"
+- name: instance specific tasks
+ loop: "{{ nextcloud_instances | list }}"
loop_control:
- label: "{{ item.key }}"
- when: "'new' in item.value and item.value.new"
- pause:
- seconds: 5
- prompt: |
- ************* {{ item.key }} is a new instance
- **
- ** Go to https://{{ item.value.hostnames[0] }} and finalize the
- ** installation. After that run the following commands:
- **
- ** $ nextcloud-occ {{ item.key }} config:system:set default_phone_region --value='at'
- ** $ nextcloud-occ {{ item.key }} config:system:set memcache.locking --value '\OC\Memcache\Redis'
- ** $ nextcloud-occ {{ item.key }} config:system:set redis host --value '127.0.0.1'
- ** $ nextcloud-occ {{ item.key }} config:system:set redis port --type integer --value 6379
- ** $ nextcloud-occ {{ item.key }} config:system:set redis timeout --type float --value 0.0
- ** $ nextcloud-occ {{ item.key }} config:system:set redis password
- **
- ** in case you want to use an exteranl collabora/code server:
- **
- ** $ nextcloud-occ {{ item.key }} app:disable richdocumentscode
- ** $ nextcloud-occ {{ item.key }} app:remove richdocumentscode
- **
- ****************************************
+ loop_var: nextcloud_instance
+ include_role:
+ name: apps/nextcloud/instance