diff --git a/site-cookbooks/kosmos_kvm/files/prune_vm_backups.sh b/site-cookbooks/kosmos_kvm/files/prune_vm_backups.sh new file mode 100644 index 0000000..8d7d386 --- /dev/null +++ b/site-cookbooks/kosmos_kvm/files/prune_vm_backups.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# GENERATED BY CHEF +# DO NOT EDIT +set -e + +echo "Pruning backups of VM: $1" + +borg prune --prefix $1 \ + --keep-hourly 4 --keep-daily 4 --keep-weekly 1 \ + --keep-monthly 1 --keep-yearly 1 \ + --stats $BORG_REPO diff --git a/site-cookbooks/kosmos_kvm/recipes/backup.rb b/site-cookbooks/kosmos_kvm/recipes/backup.rb index e7e7f49..d3bc822 100644 --- a/site-cookbooks/kosmos_kvm/recipes/backup.rb +++ b/site-cookbooks/kosmos_kvm/recipes/backup.rb @@ -45,6 +45,11 @@ cookbook_file "/root/backups/backup_vm.sh" do mode "0750" end +cookbook_file "/root/backups/prune_vm_backups.sh" do + source "prune_vm_backups.sh" + mode "0750" +end + # Search all guests and filter by presence on current host vm_domains = search(:node, "role:kvm_guest").map{|n| n["hostname"] } \ & `virsh list --name`.strip.chomp.split("\n") diff --git a/site-cookbooks/kosmos_kvm/templates/backup_all_vms.sh.erb b/site-cookbooks/kosmos_kvm/templates/backup_all_vms.sh.erb index e1d443b..365b04d 100644 --- a/site-cookbooks/kosmos_kvm/templates/backup_all_vms.sh.erb +++ b/site-cookbooks/kosmos_kvm/templates/backup_all_vms.sh.erb @@ -8,4 +8,7 @@ echo "Backing up all VMs with kvm_guest chef role..." for domain in <%= @vm_domains.join(" ") %> do /root/backups/backup_vm.sh $domain + /root/backups/prune_vm_backups.sh $domain + # TODO Enable this when upgrading borg to 1.2 + # borg compact $BORG_REPO done