From 3a876c13a9627445c1977a258d83748f116a68cd Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Mon, 18 Aug 2025 10:08:39 +0200 Subject: [PATCH] =?UTF-8?q?Playbook=20f=C3=BCr=20die=20Nextcloud=20Notfall?= =?UTF-8?q?einrichtung.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- initnextcloud.yml | 7 ++ inventory.yml | 1 + .../files/resources/borg_dirs.txt | 4 + roles/initnextcloud/files/scripts/borg-daily | 50 ++++++++++ roles/initnextcloud/files/scripts/borg-prune | 33 +++++++ .../initnextcloud/files/scripts/diskspeed.sh | 19 ++++ .../files/scripts/fio_convert_svg | 4 + roles/initnextcloud/files/scripts/fullstress | 92 +++++++++++++++++++ .../files/scripts/installborg.sh | 11 +++ .../files/scripts/overclock_test.sh | 16 ++++ .../files/scripts/pingbrambel.sh | 15 +++ .../files/scripts/run-stressberry.sh | 14 +++ roles/initnextcloud/files/scripts/showtemp | 10 ++ roles/initnextcloud/files/scripts/stressall | 77 ++++++++++++++++ roles/initnextcloud/files/scripts/updatesys | 21 +++++ roles/initnextcloud/tasks/dirs.yml | 27 ++++++ roles/initnextcloud/tasks/docker.yml | 24 +++++ roles/initnextcloud/tasks/install.yml | 13 +++ roles/initnextcloud/tasks/main.yml | 12 +++ roles/initnextcloud/tasks/mount.yml | 16 ++++ roles/initnextcloud/tasks/optional.yml | 13 +++ roles/initnextcloud/vars/dirs.yml | 21 +++++ roles/initnextcloud/vars/partuuid.yml | 1 + roles/initnextcloud/vars/pckg.yml | 15 +++ 24 files changed, 516 insertions(+) create mode 100644 initnextcloud.yml create mode 100644 roles/initnextcloud/files/resources/borg_dirs.txt create mode 100755 roles/initnextcloud/files/scripts/borg-daily create mode 100755 roles/initnextcloud/files/scripts/borg-prune create mode 100755 roles/initnextcloud/files/scripts/diskspeed.sh create mode 100755 roles/initnextcloud/files/scripts/fio_convert_svg create mode 100755 roles/initnextcloud/files/scripts/fullstress create mode 100755 roles/initnextcloud/files/scripts/installborg.sh create mode 100755 roles/initnextcloud/files/scripts/overclock_test.sh create mode 100755 roles/initnextcloud/files/scripts/pingbrambel.sh create mode 100755 roles/initnextcloud/files/scripts/run-stressberry.sh create mode 100755 roles/initnextcloud/files/scripts/showtemp create mode 100755 roles/initnextcloud/files/scripts/stressall create mode 100755 roles/initnextcloud/files/scripts/updatesys create mode 100644 roles/initnextcloud/tasks/dirs.yml create mode 100644 roles/initnextcloud/tasks/docker.yml create mode 100644 roles/initnextcloud/tasks/install.yml create mode 100644 roles/initnextcloud/tasks/main.yml create mode 100644 roles/initnextcloud/tasks/mount.yml create mode 100644 roles/initnextcloud/tasks/optional.yml create mode 100644 roles/initnextcloud/vars/dirs.yml create mode 100644 roles/initnextcloud/vars/partuuid.yml create mode 100644 roles/initnextcloud/vars/pckg.yml diff --git a/initnextcloud.yml b/initnextcloud.yml new file mode 100644 index 0000000..e990d4d --- /dev/null +++ b/initnextcloud.yml @@ -0,0 +1,7 @@ +--- +- hosts: "{{ target }}" + gather_facts: false + remote_user: pi + roles: + - initnextcloud + diff --git a/inventory.yml b/inventory.yml index 3b65657..e03c1c3 100644 --- a/inventory.yml +++ b/inventory.yml @@ -10,6 +10,7 @@ test: hans: cleatus: terry: + testsystem: webs: hosts: diff --git a/roles/initnextcloud/files/resources/borg_dirs.txt b/roles/initnextcloud/files/resources/borg_dirs.txt new file mode 100644 index 0000000..a606f3f --- /dev/null +++ b/roles/initnextcloud/files/resources/borg_dirs.txt @@ -0,0 +1,4 @@ +/opt +/home +/etc +/mnt/nvme diff --git a/roles/initnextcloud/files/scripts/borg-daily b/roles/initnextcloud/files/scripts/borg-daily new file mode 100755 index 0000000..8016fa9 --- /dev/null +++ b/roles/initnextcloud/files/scripts/borg-daily @@ -0,0 +1,50 @@ +#!/bin/bash +######################################################################### +# Copyright (C) 2020 Akito # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +######################################################################### +# https://borgbackup.readthedocs.io/en/stable/deployment/automated-local.html +# 0.2.0 +PURPOSE="SYSTEM" +TARGET_HOST="" +LOCATION="/tank/borg/" +BORG_REPO="${HOSTNAME}" +TARGET="${TARGET_HOST}${LOCATION}${BORG_REPO}" +ARC_NAME="${HOSTNAME}+${USER}:$(date +"%Y%m%dT%H%M%S")" +BORG_COMMENT="Automated \"${PURPOSE}\" backup to repository \"${BORG_REPO}\" at \"${TARGET_HOST}${LOCATION}\" issued $(date +"%Y-%m-%dT%H:%M:%S")." +BORG_OPTS="--paths-from-stdin --compression auto,lzma,9 --checkpoint-interval 900 --warning" +LOGFILE_LOCATION="/tmp" +LOGFILE="borg-${PURPOSE}_$(date +"%Y%m%dT%H%M%S").log" +export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes +export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes +borg create ${BORG_OPTS} \ + --comment "${BORG_COMMENT}" \ + --exclude /media \ + --exclude /dev \ + --exclude /run \ + --exclude /tmp \ + --exclude /sys \ + --exclude /proc \ + --exclude /mnt \ + --exclude /tank \ + --exclude /extusb \ + --exclude /var/log \ + "${TARGET}::${ARC_NAME}" \ + < /home/pi/borg_dirs.txt + + +# 2>> "${LOGFILE_LOCATION}/${LOGFILE}" + +sync diff --git a/roles/initnextcloud/files/scripts/borg-prune b/roles/initnextcloud/files/scripts/borg-prune new file mode 100755 index 0000000..eb5e46c --- /dev/null +++ b/roles/initnextcloud/files/scripts/borg-prune @@ -0,0 +1,33 @@ +#!/bin/bash +######################################################################### +# Copyright (C) 2020 Akito # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +######################################################################### +# https://borgbackup.readthedocs.io/en/stable/deployment/automated-local.html +# 0.2.0 +PURPOSE="SYSTEM" +TARGET_HOST="" +LOCATION="/tank/borg" +BORG_REPO="${HOSTNAME}" +ARC_NAME="${HOSTNAME}+${USER}:$(date +"%Y%m%dT%H%M%S")" +BORG_COMMENT="Automated \"${PURPOSE}\" backup to repository \"${BORG_REPO}\" at \"${TARGET_HOST}${LOCATION}\" issued $(date +"%Y-%m-%dT%H:%M:%S")." +BORG_OPTS="--keep-within 15d" +LOGFILE_LOCATION="/tmp" +LOGFILE="borg-${PURPOSE}_$(date +"%Y%m%dT%H%M%S").log" +export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes +export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes +borg prune ${BORG_OPTS} ${LOCATION}/${BORG_REPO} + +sync diff --git a/roles/initnextcloud/files/scripts/diskspeed.sh b/roles/initnextcloud/files/scripts/diskspeed.sh new file mode 100755 index 0000000..c786afe --- /dev/null +++ b/roles/initnextcloud/files/scripts/diskspeed.sh @@ -0,0 +1,19 @@ +#! /usr/bin/bash +#inspired by Sun Knudsen + +# create the test files +echo "preparing tests" +sysbench fileio --file-total-size=8G prepare > /dev/null + +# Test with 16K block size, random read/write +echo "run test with 16K block size" +sysbench fileio --file-block-size=16K --file-total-size=8G --file-test-mode=rndrw --threads=$(nproc) run + +# Test with 1M block size, random read/write +echo "run test with 1M block size" +sysbench fileio --file-block-size=1M --file-total-size=8G --file-test-mode=rndrw --threads=$(nproc) run + +# cleanup the test files +sysbench fileio --file-total-size=8G cleanup + + diff --git a/roles/initnextcloud/files/scripts/fio_convert_svg b/roles/initnextcloud/files/scripts/fio_convert_svg new file mode 100755 index 0000000..035101a --- /dev/null +++ b/roles/initnextcloud/files/scripts/fio_convert_svg @@ -0,0 +1,4 @@ +# !/usr/bin/bash + + +for f in ${1}*.svg; do rsvg-convert "$f" -o "${f%.svg}.png"; done diff --git a/roles/initnextcloud/files/scripts/fullstress b/roles/initnextcloud/files/scripts/fullstress new file mode 100755 index 0000000..dd58e0c --- /dev/null +++ b/roles/initnextcloud/files/scripts/fullstress @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Dauer des Tests (Default: 10 Minuten, Format z.B. „5m", „600") +DURATION="${1:-10m}" + +# Verzeichnisse / Geräte für File‑IO +DATA_DRIVE="${HOME}/test/sysbench" # bitte anpassen +SYSTEM_DRIVE="/mnt/nextcloud/test/sysbench" # bitte anpassen +CURRENT_DIR=$(pwd) + +# Größe und Einstellungen für sysbench-File‑IO +FILE_TOTAL_SIZE="1G" +FILE_NUM="4" +TEST_MODE="rndrw" +EXTRA_FLAGS="--file-extra-flags=direct" + +echo "== Vorbereitung: File‑IO Testdateien erstellen ==" +echo "testmode=${TEST_MODE}" + +cd ${DATA_DRIVE} +echo "preparing sysbench on ${DATA_DRIVE}" +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + prepare & +cd ${SYSTEM_DRIVE} +echo "preparing sysbench on ${SYSTEM_DRIVE}" +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + prepare +wait +echo "== Vorbereitung fertig, starte Stresstest für ${DURATION} ==" + +# CPU‑Stresstest +echo "running stress-ng" +stress-ng \ + --cpu 8 \ + --cpu-method all \ + --verify \ + --timeout ${DURATION} \ + --metrics-brief \ + > stress-ng.log & + +# File‑IO auf System-Laufwerk +cd ${SYSTEM_DRIVE} +echo "running sysbench on ${SYSTEM_DRIVE}" +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + --file-dir=${DATA_DRIVE} \ + --time=10 run \ + > sysbench-nvme.log & + +# File‑IO auf Daten-Laufwerk +cd ${DATA_DRIVE} +echo "running sysbench on ${DATA_DRIVE}" +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + --file-dir=${SYSTEM_DRIVE} \ + --time=10 run \ + > sysbench-sata.log & + +# Auf alle Hintergrund‐Jobs warten +wait + +echo "== Stresstest abgeschlossen ==" +echo "Ergebnisse:" +echo " - CPU (stress-ng): see stress-ng.log" +echo " - NVMe (sysbench): see sysbench-nvme.log" +echo " - SATA (sysbench): see sysbench-sata.log" + +# Clean up File‑IO Testdateien +echo "== Aufräumen: File‑IO Testdateien löschen ==" +cd ${DATA_DRIVE} +sysbench fileio ${EXTRA_FLAGS} cleanup +cd ${SYSTEM_DRIVE} +sysbench fileio ${EXTRA_FLAGS} cleanup +cd ${CURRENT_DIR} + +echo "Fertig." + diff --git a/roles/initnextcloud/files/scripts/installborg.sh b/roles/initnextcloud/files/scripts/installborg.sh new file mode 100755 index 0000000..0d53524 --- /dev/null +++ b/roles/initnextcloud/files/scripts/installborg.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +sudo apt install python3 python3-dev python3-setuptools python3-wheel python3-pip libssl-dev openssl libacl1-dev libacl1 build-essential libfuse-dev fuse pkg-config ssh +sudo pip3 install borgbackup[fuse] +mkdir /tank/borg/${HOSTNAME} +cd /tank/borg +borg --verbose init --encryption=none $HOSTNAME +borg --verbose --progress create --stats --comment "Initial backup" /tank/borg/$HOSTNAME/::firstbackup /home/$USER + + + diff --git a/roles/initnextcloud/files/scripts/overclock_test.sh b/roles/initnextcloud/files/scripts/overclock_test.sh new file mode 100755 index 0000000..04dab59 --- /dev/null +++ b/roles/initnextcloud/files/scripts/overclock_test.sh @@ -0,0 +1,16 @@ +#! /bin/bash + +cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq +vcgencmd measure_temp +echo -n "Fan-Speed beim Start: " +cat /sys/devices/platform/cooling_fan/hwmon/hwmon2/fan1_input + +sysbench cpu --cpu-max-prime=1000 --threads=4 run >/dev/null 2>&1 + +cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq + +sysbench cpu --cpu-max-prime=50000 --threads=4 run +cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq +vcgencmd measure_temp +echo -n "Fan-Speed am Ende: " +cat /sys/devices/platform/cooling_fan/hwmon/hwmon2/fan1_input diff --git a/roles/initnextcloud/files/scripts/pingbrambel.sh b/roles/initnextcloud/files/scripts/pingbrambel.sh new file mode 100755 index 0000000..cd6e6d6 --- /dev/null +++ b/roles/initnextcloud/files/scripts/pingbrambel.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +bramble=(quimby hans willie kirk brandine) + + +for host in "${bramble[@]}" + do + ping -c 3 ${host} + done + + + + + + diff --git a/roles/initnextcloud/files/scripts/run-stressberry.sh b/roles/initnextcloud/files/scripts/run-stressberry.sh new file mode 100755 index 0000000..284a2ac --- /dev/null +++ b/roles/initnextcloud/files/scripts/run-stressberry.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# from ansible/resources + +mkdir -p /tank/stressberry/${HOSTNAME} +cd /tank/stressberry/${HOSTNAME} + +SRUN=$(which stressberry-run) +SPLOT=$(which stressberry-plot) + +echo "Aufruf ${SRUN}" +${SRUN} -n "${HOSTNAME}" -d 1800 -i 300 -c 4 ${HOSTNAME}.out +echo "Aufruf ${SPLOT}" +${SPLOT} ${HOSTNAME}.out -f -d 300 -f -l 400 3100 -t 25 90 -o ${HOSTNAME}.png --not-transparent + diff --git a/roles/initnextcloud/files/scripts/showtemp b/roles/initnextcloud/files/scripts/showtemp new file mode 100755 index 0000000..8458865 --- /dev/null +++ b/roles/initnextcloud/files/scripts/showtemp @@ -0,0 +1,10 @@ +cpu=$( ${gpu}" +echo "CPU => $((cpu/1000))'C" diff --git a/roles/initnextcloud/files/scripts/stressall b/roles/initnextcloud/files/scripts/stressall new file mode 100755 index 0000000..1cc3327 --- /dev/null +++ b/roles/initnextcloud/files/scripts/stressall @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Dauer des Tests (Default: 10 Minuten, Format z.B. "5m", "600") +DURATION="${1:-10m}" + +# Verzeichnisse / Geräte für File‑IO +NVME_MOUNT="~/test" # bitte anpassen +SATA_MOUNT="/mnt/nextcloud/test" # bitte anpassen + +# Größe und Einstellungen für sysbench-File‑IO +FILE_TOTAL_SIZE="1G" +FILE_NUM="4" +TEST_MODE="rndrw" +EXTRA_FLAGS="--file-extra-flags=direct" + +echo "== Vorbereitung: File‑IO Testdateien erstellen ==" +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + --file-dir=${NVME_MOUNT} prepare & +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + --file-dir=${SATA_MOUNT} prepare & +wait +echo "== Vorbereitung fertig, starte Stresstest für ${DURATION} ==" + +# CPU‑Stresstest +stress-ng \ + --cpu 8 \ + --cpu-method all \ + --verify \ + --timeout ${DURATION} \ + --metrics-brief \ + > stress-ng.log 2>&1 & + +# File‑IO auf NVMe +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + --file-dir=${NVME_MOUNT} \ + --time=${DURATION} run \ + > sysbench-nvme.log 2>&1 & + +# File‑IO auf SATA‑SSD +sysbench fileio \ + --file-total-size=${FILE_TOTAL_SIZE} \ + --file-num=${FILE_NUM} \ + --file-test-mode=${TEST_MODE} \ + ${EXTRA_FLAGS} \ + --file-dir=${SATA_MOUNT} \ + --time=${DURATION} run \ + > sysbench-sata.log 2>&1 & + +# Auf alle Hintergrund‐Jobs warten +wait + +echo "== Stresstest abgeschlossen ==" +echo "Ergebnisse:" +echo " - CPU (stress-ng): see stress-ng.log" +echo " - NVMe (sysbench): see sysbench-nvme.log" +echo " - SATA (sysbench): see sysbench-sata.log" + +# Clean up File‑IO Testdateien +echo "== Aufräumen: File‑IO Testdateien löschen ==" +sysbench fileio ${EXTRA_FLAGS} --file-dir=${NVME_MOUNT} cleanup +sysbench fileio ${EXTRA_FLAGS} --file-dir=${SATA_MOUNT} cleanup + +echo "Fertig." + diff --git a/roles/initnextcloud/files/scripts/updatesys b/roles/initnextcloud/files/scripts/updatesys new file mode 100755 index 0000000..3c0c8be --- /dev/null +++ b/roles/initnextcloud/files/scripts/updatesys @@ -0,0 +1,21 @@ +# System-Updater CC-BY Olli Graf +# V 1.6 2019 + +VERSION="1.7" +TMPFILE="/tmp/updater.txt" + +echo "Updater V ${VERSION}" +sudo rm -f ${TMPFILE} +sudo apt-get update +sudo apt-get dist-upgrade -y --allow-unauthenticated |tee ${TMPFILE} +sudo snap refresh +sudo apt-get autoremove -y +if grep -q linux-header ${TMPFILE}; then + echo "reboot nötig" + read -n1 -p "Neustart? (J/N)" auswahl +if [ "${auswahl}" == "j" ]; then + echo "System wird gestartet." + sudo reboot +fi + +fi diff --git a/roles/initnextcloud/tasks/dirs.yml b/roles/initnextcloud/tasks/dirs.yml new file mode 100644 index 0000000..c435e10 --- /dev/null +++ b/roles/initnextcloud/tasks/dirs.yml @@ -0,0 +1,27 @@ +- name: Abbrechen, wenn /mnt/nextcloud nicht gemountet ist + fail: + msg: "/mnt/nextcloud ist nicht gemountet – Playbook wird abgebrochen." + when: "'/mnt/nextcloud' not in (ansible_mounts | map(attribute='mount') | list)" +- name: create home dirs + file: + path: "~/{{ item }}" + state: directory + loop: "{{ homedirs }}" + +- name: create volume dir + become: true + file: + path: "{{ item }}" + state: directory + owner: pi + group: pi + mode: '0755' + loop: "{{ volumedirs }}" + +- name: create nextcloud dirs + file: + path: ~/{{ item}} + state: directory + loop: "{{ ncdirs }}" + + diff --git a/roles/initnextcloud/tasks/docker.yml b/roles/initnextcloud/tasks/docker.yml new file mode 100644 index 0000000..a94837e --- /dev/null +++ b/roles/initnextcloud/tasks/docker.yml @@ -0,0 +1,24 @@ +- name: Clone docker-compose repository + ansible.builtin.git: + repo: "{{ dockerrepo }}" + dest: "{{ dockerdir }}" + version: master + +- name: Permission für Docker + become: true + file: path=/var/run/docker.sock mode=0660 +# mode: 660 + +- name: adding user pi to docker group + become: true + user: + name: pi + groups: docker,video + + +- name: Run docker-compose up + community.docker.docker_compose: + project_src: '{{dockerdir }}/compose/nextcloud' + state: present + become: true + diff --git a/roles/initnextcloud/tasks/install.yml b/roles/initnextcloud/tasks/install.yml new file mode 100644 index 0000000..71b5a25 --- /dev/null +++ b/roles/initnextcloud/tasks/install.yml @@ -0,0 +1,13 @@ +- name: PI Update + become: true + apt: + update_cache: yes + upgrade: dist +- name: Pakete installieren + become: true + ansible.builtin.apt: + name: "{{ packages }}" + state: present + update_cache: yes + cache_valid_time: 86400 + diff --git a/roles/initnextcloud/tasks/main.yml b/roles/initnextcloud/tasks/main.yml new file mode 100644 index 0000000..9a08c31 --- /dev/null +++ b/roles/initnextcloud/tasks/main.yml @@ -0,0 +1,12 @@ +- include_vars: "roles/initnextcloud/vars/dirs.yml" +- include_vars: "roles/initnextcloud/vars/partuuid.yml" +- include_vars: "roles/initnextcloud/vars/pckg.yml" +- include_tasks: ../subtasks/upgrade.yml +- import_tasks: install.yml +- import_tasks: mount.yml +- import_tasks: dirs.yml +- import_tasks: docker.yml +- import_tasks: optional.yml + + + diff --git a/roles/initnextcloud/tasks/mount.yml b/roles/initnextcloud/tasks/mount.yml new file mode 100644 index 0000000..ba0c933 --- /dev/null +++ b/roles/initnextcloud/tasks/mount.yml @@ -0,0 +1,16 @@ +- name: Add Nextcloud mount to fstab + become: true + ansible.builtin.blockinfile: + path: /etc/fstab + marker: "# {mark} ANSIBLE MANAGED BLOCK nextcloud" + block: | + PARTUUID={{ partuuid }} /mnt/nextcloud ext4 defaults,fail 0 1 + +- name: Mount /mnt/nextcloud + become: true + ansible.posix.mount: + path: /mnt/nextcloud + state: mounted + fstype: ext4 + src: PARTUUID={{ partuuid }} + diff --git a/roles/initnextcloud/tasks/optional.yml b/roles/initnextcloud/tasks/optional.yml new file mode 100644 index 0000000..f416378 --- /dev/null +++ b/roles/initnextcloud/tasks/optional.yml @@ -0,0 +1,13 @@ +- name: copy scripts + copy: + src: "{{ item }}" + dest: /home/pi/bin + mode: '0755' + loop: "{{ query('fileglob', 'files/scripts/*') }}" + +- name: copy resources to ~ + copy: + src: "{{ item }}" + dest: /home/pi + loop: "{{ query('fileglob', 'resources/*') }}" + diff --git a/roles/initnextcloud/vars/dirs.yml b/roles/initnextcloud/vars/dirs.yml new file mode 100644 index 0000000..88d3661 --- /dev/null +++ b/roles/initnextcloud/vars/dirs.yml @@ -0,0 +1,21 @@ +dockerrepo: "https://git.olli-cloud.de/olli/dockercmd" +dockerdir: "/home/pi/git/dockercmd" + +volumedirs: + - /mnt/nextcloud + - /opt/clamav + - /opt/grafana + - /opt/influxdb + +homedirs: + - bin + - git + +ncdirs: + - /mnt/nextcloud/nextcloud/apps + - /mnt/nextcloud/nextcloud/html + - /mnt/nextcloud/nextcloud//data + - /mnt/nextcloud/nextcloud/config + + + diff --git a/roles/initnextcloud/vars/partuuid.yml b/roles/initnextcloud/vars/partuuid.yml new file mode 100644 index 0000000..962b2c2 --- /dev/null +++ b/roles/initnextcloud/vars/partuuid.yml @@ -0,0 +1 @@ +partuuid: "011ad286-01" diff --git a/roles/initnextcloud/vars/pckg.yml b/roles/initnextcloud/vars/pckg.yml new file mode 100644 index 0000000..bc9e321 --- /dev/null +++ b/roles/initnextcloud/vars/pckg.yml @@ -0,0 +1,15 @@ +packages: + - python3-docker + - neofetch + - htop + - cowsay + - docker.io + - docker-compose + - git + - locate + - dnsutils + - nfs-kernel-server + - vim + - lsof + - ripgrep +