diff --git a/roles/lvm_self_backup/templates/backup-lvm.service b/roles/lvm_self_backup/templates/backup-lvm.service index e0257cd..79d1dd2 100644 --- a/roles/lvm_self_backup/templates/backup-lvm.service +++ b/roles/lvm_self_backup/templates/backup-lvm.service @@ -3,4 +3,31 @@ Description=Start lvm backup using duplicity. [Service] Type=oneshot + +TimeoutSec=2h + +# Creating snapshots +{% for item in backup_vols %} +ExecStartPre=/usr/sbin/lvcreate -L 1G -n {{ item.lv_name }}_snap -s {{ item.vg_name }}/{{ item.lv_name }} +{% endfor %} + +# Mounting snapshots +{% for item in backup_vols %} +ExecStartPre=/usr/bin/mount -o ro,nosuid,noexec{% if item.fstype is defined and item.fstype == "xfs" %},nouuid{% endif %} -t {{ item.fstype | default("ext4") }} /dev/{{ item.vg_name }}/{{ item.lv_name }}_snap /backup_snapshots/{{ item.vg_name }}-{{ item.lv_name }} +{% endfor %} + ExecStart=/usr/local/bin/backup-lvm + +# Make sure duplicity container is gone +ExecStopPost=/usr/bin/docker rm --force duplicity-backup-lvm + +# Unmount snapshots +{% for item in backup_vols %} +ExecStopPost=/usr/bin/umount /dev/{{ item.vg_name }}/{{ item.lv_name }}_snap +{% endfor %} + +# Remove snapshots +{% for item in backup_vols %} +ExecStopPost=/usr/sbin/lvremove -f {{ item.vg_name }}/{{ item.lv_name }}_snap +{% endfor %} + diff --git a/roles/lvm_self_backup/templates/backup-lvm.sh b/roles/lvm_self_backup/templates/backup-lvm.sh index 845e0c6..7b85a71 100644 --- a/roles/lvm_self_backup/templates/backup-lvm.sh +++ b/roles/lvm_self_backup/templates/backup-lvm.sh @@ -74,16 +74,6 @@ function backup () {( echo "LVM backup started:" -echo "Creating snapshots:" -{% for item in backup_vols %} -lvcreate -L 1G -n {{ item.lv_name }}_snap -s {{ item.vg_name }}/{{ item.lv_name }} -{% endfor %} - -echo "Mount snapshots:" -{% for item in backup_vols %} -mount -o ro,nosuid,noexec{% if item.fstype is defined and item.fstype == "xfs" %},nouuid{% endif %} -t {{ item.fstype | default("ext4") }} /dev/{{ item.vg_name }}/{{ item.lv_name }}_snap /backup_snapshots/{{ item.vg_name }}-{{ item.lv_name }} -{% endfor %} - backup success=$? if [ $success -gt 0 ]; then @@ -92,14 +82,4 @@ fi echo $success > {{ backup_status_directory }}/backup.status -echo "Unmount snapshots:" -{% for item in backup_vols %} -umount /dev/{{ item.vg_name }}/{{ item.lv_name }}_snap -{% endfor %} - -echo "Remove snapshots:" -{% for item in backup_vols %} -lvremove -f {{ item.vg_name }}/{{ item.lv_name }}_snap -{% endfor %} - exit $success