summaryrefslogtreecommitdiff
path: root/roles/elevate/media/tasks/nextcloud.yml
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2019-01-12 01:39:33 +0100
committerChristian Pointner <equinox@spreadspace.org>2019-01-12 01:39:33 +0100
commit0084d5a915a75d3113ae2a3865a6ec0fc7f8c4d6 (patch)
treec3b78acf002c7abf7fb1ee5ea36abd79cab4d82f /roles/elevate/media/tasks/nextcloud.yml
parentproof-of-concept nextcloud install (diff)
basic nextcloud install works now
Diffstat (limited to 'roles/elevate/media/tasks/nextcloud.yml')
-rw-r--r--roles/elevate/media/tasks/nextcloud.yml141
1 files changed, 84 insertions, 57 deletions
diff --git a/roles/elevate/media/tasks/nextcloud.yml b/roles/elevate/media/tasks/nextcloud.yml
index 6a3faf73..d827a28a 100644
--- a/roles/elevate/media/tasks/nextcloud.yml
+++ b/roles/elevate/media/tasks/nextcloud.yml
@@ -1,4 +1,7 @@
---
+- name: preare nextcloud disks
+ import_tasks: nextcloud-lvm.yml
+
- name: create nextcloud config directory
file:
path: /srv/nextcloud/config/
@@ -9,61 +12,85 @@
src: nextcloud-fpm.conf.j2
dest: /srv/nextcloud/config/nextcloud-fpm.conf
-##### TODO: implement the following steps
-### install
-#
-# docker run --rm --network host --name nextcloud \
-# -e NEXTCLOUD_UPDATE=1 -e NEXTCLOUD_TRUSTED_DOMAINS="media.elevate.at elevate-media.spreadspace.org 89.106.211.61" \
-# -e MYSQL_DATABASE="nextcloud" -e MYSQL_HOST="127.0.0.1:3306" -e MYSQL_USER="nextcloud" -e MYSQL_PASSWORD="testtest" \
-# -e NEXTCLOUD_ADMIN_USER="admin" -e NEXTCLOUD_ADMIN_PASSWORD="test" \
-# -v /srv/nextcloud/config/nextcloud-fpm.conf:/usr/local/etc/php-fpm.d/zzzzz.conf \
-# -v /srv/nextcloud/config/nextcloud:/var/www/html/config \
-# -v /srv/data/nextcloud:/var/www/html/data \
-# -v /srv/data/share:/srv/external \
-# -v /srv/nextcloud/www:/var/www/html nextcloud:15-fpm /bin/true
-#
-#
-## for now we only support http (not needed when nginx and network config is fixed)
-##
-## 'overwriteprotocol' => 'http', -> /srv/nextcloud/config/nextcloud/config.php
-##
-#
-### run
-#
-# docker run --rm -d --network host --name nextcloud \
-# -v /srv/nextcloud/config/nextcloud-fpm.conf:/usr/local/etc/php-fpm.d/zzzzz.conf \
-# -v /srv/nextcloud/config/nextcloud:/var/www/html/config \
-# -v /srv/data/nextcloud:/var/www/html/data \
-# -v /srv/data/share:/srv/external \
-# -v /srv/nextcloud/www:/var/www/html nextcloud:15-fpm
-#
-#
-### post -install
-#
-# docker exec -u root -it nextcloud bash -c "chown root:www-data /srv/external && chmod 02775 /srv/external"
-#
-## this is idempotent
-# docker exec -u www-data -it nextcloud /var/www/html/occ app:enable files_external
-#
-## docker exec -u www-data -it nextcloud /var/www/html/occ group:list -n --output=json
-# docker exec -u www-data -it nextcloud /var/www/html/occ group:add -n Elevate
-#
-## docker exec -u www-data -it nextcloud /var/www/html/occ files_external:list --output=json
-# docker exec -u www-data -it nextcloud /var/www/html/occ files_external:create -n --output=json --config="datadir=/srv/external" Fileserver local null::null
-#
-## this is idempotent
-# docker exec -u www-data -it nextcloud /var/www/html/occ files_external:applicable -n --output=json 1 --add-group=Elevate
-#
-#
-#
-##### not need to implement this...
-#
-### purge
-#
-# docker stop nextcloud
-# rm -rf /srv/nextcloud/config/nextcloud
-# rm -rf /srv/data/nextcloud
-# rm -rf /srv/nextcloud/www
-# echo "drop database nextcloud;" | mysql --defaults-extra-file=/etc/mysql/debian.cnf
-#
+- name: create nextcloud database
+ mysql_db:
+ login_user: root
+ login_password: "{{ mysql_root_password }}"
+ db: "{{ nextcloud_db.db }}"
+ encoding: utf8mb4
+ collation: utf8mb4_general_ci
+ state: present
+
+- name: create nextcloud database user
+ mysql_user:
+ login_user: root
+ login_password: "{{ mysql_root_password }}"
+ name: "{{ nextcloud_db.user }}"
+ password: "{{ nextcloud_db.password }}"
+ priv: "{{ nextcloud_db.db }}.*:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES"
+ state: present
+
+
+- name: check if nextcloud is already configured
+ stat:
+ path: /srv/nextcloud/config/nextcloud/config.php
+ register: nextcloud_config_file
+
+- name: running nextcloud installer
+ when: not nextcloud_config_file.stat.exists
+ docker_container:
+ name: nextcloud
+ image: nextcloud:{{ nextcloud_version }}-fpm
+ command: /bin/true
+ network_mode: host
+ detach: no
+ auto_remove: yes
+ volumes:
+ - /srv/nextcloud/www:/var/www/html
+ - /srv/nextcloud/config/nextcloud-fpm.conf:/usr/local/etc/php-fpm.d/zzzzz.conf
+ - /srv/nextcloud/config/nextcloud:/var/www/html/config
+ - /srv/ncdata/nextcloud:/var/www/html/data
+ - /srv/ncdata/share:/srv/external
+ env:
+ NEXTCLOUD_UPDATE: '1'
+ NEXTCLOUD_TRUSTED_DOMAINS: "{{ nextcloud_hostnames | join(' ') }} 89.106.211.61" ## TODO remove ip when tests are done
+ MYSQL_DATABASE: "{{ nextcloud_db.db }}"
+ MYSQL_HOST: "127.0.0.1:3306"
+ MYSQL_USER: "{{ nextcloud_db.user }}"
+ MYSQL_PASSWORD: "{{ nextcloud_db.password }}"
+ NEXTCLOUD_ADMIN_USER: "{{ nextcloud_admin.username }}"
+ NEXTCLOUD_ADMIN_PASSWORD: "{{ nextcloud_admin.password }}"
+
+
+- name: install nextcloud service unit
+ template:
+ src: nextcloud.service.j2
+ dest: /etc/systemd/system/nextcloud.service
+ register: nextcloud_service
+
+- name: make sure nextcloud is started and enabled
+ systemd:
+ name: nextcloud.service
+ state: "{% if nextcloud_service.changed %}restarted{% else %}started{% endif %}"
+ enabled: yes
+ daemon_reload: yes
+
+- name: basic nextcloud config
+ import_tasks: nextcloud-config.yml
+
+- name: install nextcloud cron systemd units
+ with_items:
+ - service
+ - timer
+ template:
+ src: "nextcloud-cron.{{ item }}.j2"
+ dest: "/etc/systemd/system/nextcloud-cron.{{ item }}"
+
+- name: make sure nextcloud cron is started and enabled
+ systemd:
+ name: nextcloud-cron.timer
+ state: started
+ enabled: yes
+ daemon_reload: yes
+