From 74f8edf02475cb3e51e9bc441cf58ee53956d4c6 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Sat, 4 Apr 2026 21:42:56 +0200 Subject: [PATCH] reconfigure most backups with new system --- plays/emma.yml | 225 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 191 insertions(+), 34 deletions(-) diff --git a/plays/emma.yml b/plays/emma.yml index a089367..1addce4 100644 --- a/plays/emma.yml +++ b/plays/emma.yml @@ -4,10 +4,10 @@ roles: - role: any.common.static-ip vars: - interface: 'enp1s0' - static_ip: '192.168.0.2' - broadcast_ip: '192.168.0.255' - router_ip: '192.168.0.1' + interface: "enp2s0" + static_ip: "192.168.0.2" + broadcast_ip: "192.168.0.255" + router_ip: "192.168.0.1" - any.common.ssh - any.tools.ufw tags: networking @@ -19,6 +19,30 @@ - any.common.raid tags: raid +- name: Set up backup systems + hosts: emma + become: true + tags: backups + roles: + - role: any.tools.restic + vars: + restic_version: "0.18.1" + - role: any.tools.otel-cli + vars: + otel_cli_version: "0.4.5" + # TODO restic-rest subvolumes + - role: any.software.restic-rest + vars: + restic_rest_data_dir: "/mnt/data1/restic-rest" + restic_rest_version: "0.12.1" + +- name: Set up OTEL collector + hosts: emma + tags: [otel-collector, otel] + become: true + roles: + - any.software.otel-collector + - name: Set up Jellyfin hosts: emma become: yes @@ -28,10 +52,10 @@ - name: Set up Miniflux hosts: emma - become: yes tags: miniflux roles: - role: any.common.btrfs-subvolumes + become: true vars: subvolumes: - filesystem_uuid: "{{ btrfs_nvme.uuid }}" @@ -40,10 +64,20 @@ - role: any.software.miniflux-podman vars: postgres_data_dir: '/data/miniflux/postgres' + - role: any.tools.backup-scripts + become: true + vars: + backups: + - name: "miniflux-postgres" + type: "podman-postgres" + user: "debian" + container: "systemd-miniflux-postgres" + pg_user: "miniflux" + database: "miniflux" - name: Set up WebDAV hosts: emma - become: yes + become: true tags: webdav roles: - role: any.common.btrfs-subvolumes @@ -54,12 +88,19 @@ name: "/webdav/data" - role: any.software.webdav vars: - webdav_version: '5.7.4' - data_dir: '{{ btrfs_raid.path }}/webdav/data' + webdav_version: "5.7.4" + data_dir: "{{ btrfs_raid.path }}/webdav/data" webdav_user: "{{ vault_webdav_user }}" webdav_password: "{{ vault_webdav_password }}" webdav_password_bcrypt: "{{ vault_webdav_password_bcrypt }}" + - role: any.tools.backup-scripts + vars: + backups: + - name: "webdav-data" + type: "btrfs-subvolume" + path: "{{ btrfs_raid.path }}/webdav/data" + - name: Set up Gitea hosts: emma @@ -87,10 +128,25 @@ - role: any.software.gitea vars: - gitea_data_dir: '{{ btrfs_raid.path }}/gitea/data' - gitea_lfs_dir: '{{ btrfs_raid.path }}/gitea/lfs' - gitea_repositories_dir: '{{ btrfs_nvme.path }}/data/gitea/repositories' - postgres_data_dir: '{{ btrfs_nvme.path }}/data/gitea/postgres' + gitea_data_dir: "{{ btrfs_raid.path }}/gitea/data" + gitea_lfs_dir: "{{ btrfs_raid.path }}/gitea/lfs" + gitea_repositories_dir: "{{ btrfs_nvme.path }}/data/gitea/repositories" + postgres_data_dir: "{{ btrfs_nvme.path }}/data/gitea/postgres" + + - role: any.tools.backup-scripts + become: true + vars: + backups: + # TODO: gitea-data, gitea-lfs + - name: "gitea-postgres" + type: "podman-postgres" + user: "debian" + container: "systemd-gitea-postgres" + pg_user: "gitea" + database: "gitea" + - name: "gitea-repositories" + type: "btrfs-subvolume" + path: "/data/gitea/repositories" - name: Set up Otter hosts: emma @@ -105,7 +161,13 @@ name: "/@rootfs/otter/data" - role: any.software.otter vars: - data_dir: '{{ btrfs_nvme.path }}/data/otter/data' + data_dir: "{{ btrfs_nvme.path }}/data/otter/data" + - role: any.tools.backup-scripts + vars: + backups: + - name: 'otter-data' + type: 'btrfs-subvolume' + path: '/data/otter/data' - name: Set up Nefarious hosts: emma @@ -144,6 +206,13 @@ - role: any.software.actual-podman vars: data_dir: '/data/actual/data' + - role: any.tools.backup-scripts + become: true + vars: + backups: + - name: 'actual-data' + type: 'btrfs-subvolume' + path: '/data/actual/data' - name: Set up Baikal hosts: emma @@ -165,8 +234,18 @@ become: true - role: any.software.baikal-podman vars: - baikal_config_dir: '/data/baikal/config' - baikal_specific_dir: '/data/baikal/Specific' + baikal_config_dir: "/data/baikal/config" + baikal_specific_dir: "/data/baikal/Specific" + - role: any.tools.backup-scripts + become: true + vars: + backups: + - name: 'baikal-config' + type: 'btrfs-subvolume' + path: '/data/baikal/config' + - name: 'baikal-Specific' + type: 'btrfs-subvolume' + path: '/data/baikal/Specific' - name: Set up Syncthing hosts: emma @@ -187,15 +266,16 @@ name: "/syncthing/home" - role: any.software.syncthing vars: - syncthing_data_dir: '/mnt/data1/syncthing/data' - syncthing_home_dir: '/mnt/data1/syncthing/home' - syncthing_config_dir: '/mnt/data1/syncthing/config' + syncthing_data_dir: "/mnt/data1/syncthing/data" + syncthing_home_dir: "/mnt/data1/syncthing/home" + syncthing_config_dir: "/mnt/data1/syncthing/config" - name: Set up Monica hosts: emma tags: monica roles: - role: any.common.btrfs-subvolumes + become: true vars: subvolumes: - filesystem_uuid: "{{ btrfs_nvme.uuid }}" @@ -204,17 +284,27 @@ - filesystem_uuid: "{{ btrfs_nvme.uuid }}" filesystem_path: "{{ btrfs_nvme.path }}" name: "/@rootfs/data/monica/mariadb" - become: true - role: any.software.monica-podman vars: - monica_data_dir: '/data/monica/data' - mariadb_data_dir: '/data/monica/mariadb' - # - role: any.software.syncthing - # vars: - # syncthing_data_dir: '/mnt/data1/syncthing/data' - # syncthing_home_dir: '/mnt/data1/syncthing/home' - # syncthing_config_dir: '/mnt/data1/syncthing/config' - # + monica_data_dir: "/data/monica/data" + mariadb_data_dir: "/data/monica/mariadb" + + - role: any.tools.backup-scripts + become: true + vars: + backups: + - name: 'monica-data' + type: 'btrfs-subvolume' + path: '/data/monica/config' + + - name: 'monica-mariadb' + type: 'podman-mysql' + user: 'debian' + container: 'systemd-monica-mariadb' + mysql_user: 'monica' + mysql_password: 'monica' + database: 'monica' + - name: Set up Recipya hosts: emma tags: recipya @@ -228,7 +318,14 @@ become: true - role: any.software.recipya-podman vars: - data_dir: '/data/recipya/data' + data_dir: "/data/recipya/data" + - role: any.tools.backup-scripts + become: true + vars: + backups: + - name: "recipya-data" + type: "btrfs-subvolume" + path: "/data/recipya/data" - name: Set up Immich hosts: emma @@ -243,16 +340,30 @@ - filesystem_uuid: "{{ btrfs_raid.uuid }}" filesystem_path: "{{ btrfs_raid.path }}" name: "/photos/immich-upload" + - filesystem_uuid: "{{ btrfs_nvme.uuid }}" + filesystem_path: "{{ btrfs_nvme.path }}" + name: "/@rootfs/data/immich/model-cache" become: true - role: any.software.immich-podman vars: - immich_postgres_dir: '/data/immich/postgres' - immich_upload_dir: '/mnt/data1/photos/immich-upload' + immich_postgres_dir: "/data/immich/postgres" + immich_upload_dir: "/mnt/data1/photos/immich-upload" + immich_model_cache_dir: "/data/immich/model-cache" immich_libraries: - - path: '/mnt/data1/photos/jef' - name: 'jef' - - path: '/mnt/data1/photos/lambroek' - name: 'lambroek' + - path: "/mnt/data1/photos/jef" + name: "jef" + - path: "/mnt/data1/photos/lambroek" + name: "lambroek" + - role: any.tools.backup-scripts + become: true + vars: + backups: + - name: "immich-postgres" + type: "podman-postgres" + user: "debian" + container: "systemd-immich-postgres" + pg_user: "immich" + database: "immich" - name: Set up Tuwunel hosts: emma @@ -268,3 +379,49 @@ - role: any.software.tuwunel vars: tuwunel_data_dir: '/data/matrix-tuwunel/data' + - role: any.tools.backup-scripts + vars: + backups: + - name: "tuwunel-data" + type: "btrfs-subvolume" + path: "/data/matrix-tuwunel/data" + +- name: Set up GreptimeDB + hosts: emma + tags: [greptimedb, otel] + roles: + - role: any.common.btrfs-subvolumes + vars: + subvolumes: + - filesystem_uuid: "{{ btrfs_nvme.uuid }}" + filesystem_path: "{{ btrfs_nvme.path }}" + name: "/@rootfs/data/greptimedb/data" + become: true + - role: any.software.greptimedb-podman + vars: + greptimedb_data_dir: "/data/greptimedb/data" + +- name: Set up Grafana + hosts: emma + tags: [grafana, otel] + roles: + - role: any.common.btrfs-subvolumes + vars: + subvolumes: + - filesystem_uuid: "{{ btrfs_nvme.uuid }}" + filesystem_path: "{{ btrfs_nvme.path }}" + name: "/@rootfs/data/grafana/data" + - filesystem_uuid: "{{ btrfs_nvme.uuid }}" + filesystem_path: "{{ btrfs_nvme.path }}" + name: "/@rootfs/data/grafana/logs" + - role: any.software.grafana + vars: + grafana_data_dir: "/data/grafana/data" + grafana_logs_dir: "/data/grafana/logs" + - role: any.tools.backup-scripts + vars: + backups: + - name: "grafana-data" + type: "btrfs-subvolume" + path: "/data/grafana/data" + become: true