diff --git a/inventory/host_vars/yggdrasil/vars.yml b/inventory/host_vars/yggdrasil/vars.yml index d3b1706..ee59dea 100644 --- a/inventory/host_vars/yggdrasil/vars.yml +++ b/inventory/host_vars/yggdrasil/vars.yml @@ -215,6 +215,7 @@ services_backups_snapshots_services: "\ { service: { 'user_name': ( 'pod-' ~ service ), 'data_dataset': ( services_data_dataset ~ '/pod-' ~ service ), + 'external_dataset': ( services_external_dataset ~ '/pod-' ~ service ), 'backup_dataset': ( services_backups_snapshots_data_dataset ~ '/pod-' ~ service ), 'recursive': true, 'skip_parent': true, diff --git a/playbooks/roles/backups/snapshots/setup/files/sanoid-templates.conf b/playbooks/roles/backups/snapshots/setup/files/sanoid-templates.conf index c33a5d5..f9ae981 100644 --- a/playbooks/roles/backups/snapshots/setup/files/sanoid-templates.conf +++ b/playbooks/roles/backups/snapshots/setup/files/sanoid-templates.conf @@ -28,6 +28,18 @@ autosnap = yes autoprune = yes +# Template for datasets with external data. Unlike production datasets these are not backed up +# anywhere. External datasets contain data that can be lost and that generally take up a lot of disk +# space. Since they don't have a backup, they keep snapshots around for longer than production/ +[template_external] + frequently = 0 + hourly = 36 + daily = 30 + monthly = 3 + yearly = 0 + autosnap = yes + autoprune = yes + # Template for backup datasets which also doubles as a hot spare. The assumption is that these # backup production datasets. In addition to three months of snapshots, keep 36 hourly snapshots for # quick rollback in case of trouble. No monthly snapshots are kept as that would require the diff --git a/playbooks/roles/backups/snapshots/user/tasks/main.yml b/playbooks/roles/backups/snapshots/user/tasks/main.yml index 11de2de..91065f9 100644 --- a/playbooks/roles/backups/snapshots/user/tasks/main.yml +++ b/playbooks/roles/backups/snapshots/user/tasks/main.yml @@ -10,6 +10,11 @@ recursive = yes process_children_only = yes + [{{ backups_snapshots_user_external_dataset }}] + use_template = external + recursive = yes + process_children_only = yes + [{{ backups_snapshots_user_backup_dataset }}] use_template = backup recursive = yes diff --git a/playbooks/services.yml b/playbooks/services.yml index f78759d..c335ceb 100644 --- a/playbooks/services.yml +++ b/playbooks/services.yml @@ -154,6 +154,8 @@ {{ services_backups_snapshots_services[services_service_name].user_name }}" backups_snapshots_user_data_dataset: "\ {{ services_backups_snapshots_services[services_service_name].data_dataset }}" + backups_snapshots_user_external_dataset: "\ + {{ services_backups_snapshots_services[services_service_name].external_dataset }}" backups_snapshots_user_backup_dataset: "\ {{ services_backups_snapshots_services[services_service_name].backup_dataset }}" backups_snapshots_user_recursive: "\