diff --git a/backups.yml b/backups.yml index edc0b2f..26c00a8 100644 --- a/backups.yml +++ b/backups.yml @@ -1,38 +1,39 @@ --- - hosts: - olios.kde.org - mason.kde.org - cano.kde.org - shrek.kde.org - overwatch.kde.org - bluemchen.kde.org - fiesta.kde.org - recluse.kde.org - code.kde.org - stumptown.kde.org - mimi.kde.org - gohma.kde.org - spring.kde.org - silk.kde.org - bugs.kde.org - nellie.kde.org - racnoss.kde.org - orbi.kde.org - dalca.kde.org - ange.kde.org - pirate.kde.org - library.kde.org - rosetta.kde.org - letterbox.kde.org - thera.kde.org - mygalo.kde.org + - komaci.kde.org vars_files: - vars/backups.yml - vars/backups-vault.yml roles: - kde-backup diff --git a/production/host_vars/komaci.kde.org/vars.yml b/production/host_vars/komaci.kde.org/vars.yml new file mode 100644 index 0000000..9ae023d --- /dev/null +++ b/production/host_vars/komaci.kde.org/vars.yml @@ -0,0 +1,8 @@ +--- +backup_directory: backups +hetzner_backup_host: nephilia +backup_apt_dependencies: [borgbackup] +backup_borg_passphrase: "{{vault_backup_borg_passphrase}}" +backup_cron: + hour: 5 + minute: 10 diff --git a/production/host_vars/komaci.kde.org/vault.yml b/production/host_vars/komaci.kde.org/vault.yml new file mode 100644 index 0000000..0a25cb1 --- /dev/null +++ b/production/host_vars/komaci.kde.org/vault.yml @@ -0,0 +1,8 @@ +$ANSIBLE_VAULT;1.1;AES256 +65666161336639656434346132636335643863343164333666396663656365363163353238343435 +6537323231356462636433623032323938303034633631630a643538393732346637336233633564 +66333066663936666631396431373034616136303065386565343332646561626134643239633835 +3436393861353166660a323437656134653132663932323639313966623333333735323737316164 +36353134636530623863613862383263343734623238306330303866666630636439313336613035 +31306536653532646432316563373366353862336131383039653733646364643639366330326437 +646466383363366462366332656464396563 diff --git a/roles/kde-backup/templates/backup-komaci.sh b/roles/kde-backup/templates/backup-komaci.sh new file mode 100755 index 0000000..c848138 --- /dev/null +++ b/roles/kde-backup/templates/backup-komaci.sh @@ -0,0 +1,35 @@ +#!/bin/bash +LOCATION=/root/{{backup_directory}} + +# Cleanup old backups +find $LOCATION -mtime +3 | xargs rm -f + +# Backup the installed software +tar -cJf $LOCATION/srv-bugs.`date +%w`.tar.xz -C / srv/ + +# Backup all our home directories +tar -cJf $LOCATION/homes.`date +%w`.tar.xz -C / home + +# Grab the system config, package listing and cronjobs +dpkg -l > $LOCATION/dpkg.`date +%w` +tar -czf $LOCATION/crontabs.`date +%w`.tgz -C / var/spool/cron/ +tar -czf $LOCATION/etc.`date +%w`.tar.gz -C / etc + +chmod -R 700 $LOCATION + +# Transfer them to the backup server +cd $LOCATION/.. +lftp -f ~/bin/backup-options + + +# Prepare to run Borg backups +export BORG_PASSPHRASE='{{backup_borg_passphrase}}' + +{% set backup_creds = hetzner_backup_creds[hetzner_backup_host] %} +BORG_SERVER="ssh://{{backup_creds.username}}@{{backup_creds.username}}.your-backup.de:23" + +# Backup databases into Borg +export BORG_REPO="$BORG_SERVER/./borg-backups/bugs-database" +mysqldump --opt --quick --single-transaction --skip-extended-insert --events --create-options --set-charset $DATABASE | borg create --compression lzma,3 ::'{hostname}-db-backups-{now}' - 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>&1 | grep -v "Compacting segments" +