From 4ca00a2810fccc880dcaa27aab5b487fd561231a Mon Sep 17 00:00:00 2001 From: Pig Monkey Date: Fri, 8 May 2026 08:38:23 -0700 Subject: [PATCH] add resnap Users must provide their own password and restore files. --- .gitmodules | 3 +++ group_vars/all | 28 ++++++++------------------- playbook.yml | 1 + roles/resnap/files/resnap | 1 + roles/resnap/tasks/main.yml | 31 ++++++++++++++++++++++++++++++ roles/resnap/templates/drives.j2 | 3 +++ roles/resnap/templates/excludes.j2 | 8 ++++++++ 7 files changed, 55 insertions(+), 20 deletions(-) create mode 160000 roles/resnap/files/resnap create mode 100644 roles/resnap/tasks/main.yml create mode 100644 roles/resnap/templates/drives.j2 create mode 100644 roles/resnap/templates/excludes.j2 diff --git a/.gitmodules b/.gitmodules index a69f2ab..2dbac91 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "roles/cryptshot/files/cryptshot"] path = roles/cryptshot/files/cryptshot url = https://github.com/pigmonkey/cryptshot +[submodule "roles/resnap/files/resnap"] + path = roles/resnap/files/resnap + url = https://github.com/pigmonkey/resnap diff --git a/group_vars/all b/group_vars/all index 9877e81..0b198ee 100644 --- a/group_vars/all +++ b/group_vars/all @@ -181,17 +181,15 @@ firejail: - ~/.vdirsyncer - ~/library +resnap: + exclude_user_cache: True + drives: + - name: alta + uuid: a71fda0d-a2a4-4b29-a9dd-2cbaba9731f8 + - name: pilchuck + uuid: b19dbe02-5447-4031-b08d-73380117bf44 + cryptshot: - - name: alta - uuid: a71fda0d-a2a4-4b29-a9dd-2cbaba9731f8 - keyfile: /home/pigmonkey/.keys/usb-alta.key - retain: - - level: daily - interval: 7 - - level: weekly - interval: 6 - - level: monthly - interval: 3 - name: bishorn uuid: baeb40a2-b19e-4adc-8ef6-44ee720a4d1a keyfile: /home/pigmonkey/.keys/usb-bishorn.key @@ -212,16 +210,6 @@ cryptshot: interval: 6 - level: monthly interval: 3 - - name: pilchuck - uuid: d96a0fc3-7ea1-42f7-b0d0-42e573c478bd - keyfile: /home/pigmonkey/.keys/usb-pilchuck.key - retain: - - level: daily - interval: 7 - - level: weekly - interval: 6 - - level: monthly - interval: 3 journal: max_size: 500M diff --git a/playbook.yml b/playbook.yml index f7b8f33..92aa81f 100644 --- a/playbook.yml +++ b/playbook.yml @@ -65,6 +65,7 @@ - { role: virtualbox, tags: ["virtualbox"] } - { role: backitup, tags: ["backitup"] } - { role: cryptshot, tags: ["cryptshot"], when: "cryptshot is defined" } + - { role: resnap, tags: ["resnap"], when: "resnap is defined" } - { role: borg, tags: ["borg"] } - { role: tarsnap, tags: ["tarsnap"] } - { role: mapping, tags: ["mapping"] } diff --git a/roles/resnap/files/resnap b/roles/resnap/files/resnap new file mode 160000 index 0000000..080db83 --- /dev/null +++ b/roles/resnap/files/resnap @@ -0,0 +1 @@ +Subproject commit 080db83d7bc44c580fba38c18af0590eb9d1e7a0 diff --git a/roles/resnap/tasks/main.yml b/roles/resnap/tasks/main.yml new file mode 100644 index 0000000..560c926 --- /dev/null +++ b/roles/resnap/tasks/main.yml @@ -0,0 +1,31 @@ +--- +- name: Install resnap + ansible.builtin.copy: + src: resnap/resnap + dest: /usr/local/bin/ + mode: "0755" + +- name: Install resnap-restore + ansible.builtin.copy: + src: resnap/resnap-restore + dest: /usr/local/bin/ + mode: "0755" + +- name: Create resnap config directory + ansible.builtin.file: + path: /usr/local/etc/resnap + state: directory + mode: "0755" + +- name: Push resnap drives configuration + ansible.builtin.template: + src: drives.j2 + dest: /usr/local/etc/resnap/drives + mode: "0644" + when: resnap.drives is defined + +- name: Push resnap exclude configuration + ansible.builtin.template: + src: excludes.j2 + dest: /usr/local/etc/resnap/excludes + mode: "0644" diff --git a/roles/resnap/templates/drives.j2 b/roles/resnap/templates/drives.j2 new file mode 100644 index 0000000..99a5969 --- /dev/null +++ b/roles/resnap/templates/drives.j2 @@ -0,0 +1,3 @@ +{% for drive in resnap.drives %} +{{ drive.name}} {{ drive.uuid }} +{% endfor %} diff --git a/roles/resnap/templates/excludes.j2 b/roles/resnap/templates/excludes.j2 new file mode 100644 index 0000000..157f119 --- /dev/null +++ b/roles/resnap/templates/excludes.j2 @@ -0,0 +1,8 @@ +/lost+found +/swapfile +/tmp +/var/cache +/var/lib/dhcpcd +/var/lib/docker +/var/lib/pacman/sync +{% if resnap.exclude_user_cache %}/home/{{ user.name }}/.cache{% endif %}