summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2021-05-19 18:55:24 +0200
committerChristian Pointner <equinox@spreadspace.org>2021-05-19 18:55:24 +0200
commita23e7f8055818a1d95b005998f094a249f71b490 (patch)
tree587f74d54eff1d6de7c497fc956840b85e16dceb /roles
parentinitial version of syncoid autosuspender (diff)
syncoid: autosuspend cleanup and cooldown
Diffstat (limited to 'roles')
-rw-r--r--roles/storage/zfs/syncoid/tasks/main.yml15
-rw-r--r--roles/storage/zfs/syncoid/templates/run.service.j23
2 files changed, 18 insertions, 0 deletions
diff --git a/roles/storage/zfs/syncoid/tasks/main.yml b/roles/storage/zfs/syncoid/tasks/main.yml
index 7c489baa..bab61a89 100644
--- a/roles/storage/zfs/syncoid/tasks/main.yml
+++ b/roles/storage/zfs/syncoid/tasks/main.yml
@@ -69,6 +69,21 @@
- name: enable autosuspend
when: zfs_syncoid_autosuspend
block:
+ - name: generate syncoid post script
+ copy:
+ content: |
+ #!/bin/bash
+
+ echo "running sanoid --prune to cleanup old snapshots"
+ sleep 5
+ systemctl start --wait sanoid-prune.service
+
+ echo "wait 60s (autosuspend cooldown period)"
+ sleep 60
+ echo "done."
+ dest: /var/lib/syncoid/syncoid_post
+ mode: 0755
+
- name: install autosuspend script
template:
src: autosuspend.py.j2
diff --git a/roles/storage/zfs/syncoid/templates/run.service.j2 b/roles/storage/zfs/syncoid/templates/run.service.j2
index 0d214595..33283576 100644
--- a/roles/storage/zfs/syncoid/templates/run.service.j2
+++ b/roles/storage/zfs/syncoid/templates/run.service.j2
@@ -6,6 +6,9 @@ Type=oneshot
{% for path,config in item.value.paths.items() %}
ExecStart=/var/lib/syncoid/syncoid_wrapper --dumpsnaps --quiet {{ config.recursive | default(false) | ternary('-r ', '') }}{{ config.skip_parent | default(false) | ternary('--skip-parent ', '') }}{% for re in config.exclude | default([]) %}--exclude='{{ re }}' {% endfor %}{% if 'ssh_port' in item.value %}--sshport {{ item.value.ssh_port }} {% endif %}root@{{ item.value.ssh_hostname }}:{{ path }} {{ zfs_syncoid_target_pool }}/{{ item.key }}/{{ path }}
{% endfor %}
+{% if zfs_syncoid_autosuspend %}
+ExecStart=/var/lib/syncoid/syncoid_post
+{% endif %}
{% if 'periodic' in item.value %}
TimeoutStartSec={{ item.value.periodic.timeout }}
{% endif %}