aboutsummaryrefslogtreecommitdiffstats
path: root/CHANGELOG.md
diff options
context:
space:
mode:
authorColin Wilk <colin@wilk.cx>2026-06-27 21:20:35 +0000
committerColin Wilk <colin@wilk.cx>2026-06-27 21:28:48 +0000
commit8b0175c70cbf3ed63c9a0e617c3f1e5332650ff6 (patch)
tree4bf466fc21c201833d4b1b9612d8b2abeb82649c /CHANGELOG.md
parent8d872069976c5445c4396804ef3a0196f10eb14b (diff)
downloadansible-role-borgbackup-8b0175c70cbf3ed63c9a0e617c3f1e5332650ff6.tar.gz
ansible-role-borgbackup-8b0175c70cbf3ed63c9a0e617c3f1e5332650ff6.zip
feat: add storage quota support
Add borg_storage_quota variable to limit repository storage on the borg server via --storage-quota option in authorized_keys. When not using borg_ssh_key_per_repo, all repos for a host must share the same quota setting (similar to --append-only). Per-repo SSH keys enable independent quotas per repository.
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md112
1 files changed, 112 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..653cbcb
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,112 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+## [Unreleased]
+
+<!-- TODO: High level overview of new major release -->
+
+### Breaking Changes
+
+#### Decryption keys file format changed
+
+**Am I affected?**
+You have a `decryption_keys.yml` file with entries from previous versions.
+
+**What changed?**
+Keys now include the repository name to support multiple repos per host.
+
+Old format:
+
+```yaml
+my-host: BORG_KEY_abc123...
+```
+
+New format:
+
+```yaml
+my-host_repo-name: BORG_KEY_abc123...
+```
+
+Generally a harmless change, just leads to duplicate keys with old and new
+format.
+
+**Migration:**
+
+1. Run the role with the new version (new keys created automatically)
+2. Verify backups work correctly
+3. Remove old hostname-only entries from `decryption_keys.yml`
+
+---
+
+#### Backup script block markers changed
+
+**Am I affected?**
+Yes.
+
+**What changed?**
+Block markers in the backup script now include repository name to support
+multiple repos per host.
+
+Old:
+
+```bash
+## BEGIN ANSIBLE MANAGED BLOCK for server: backup-server
+```
+
+New:
+
+```bash
+## BEGIN ANSIBLE MANAGED BLOCK for backup-server/my-repo
+```
+
+**Migration:**
+
+<!-- TODO: We want to auto-migrate this -->
+
+Delete the script and re-run the role:
+
+```bash
+rm /usr/local/bin/run_borg_backup
+# Then run your playbook
+```
+
+---
+
+#### Default backup argument
+
+**Am I affected?**
+You are using the default value of `borg_backup_argument`.
+
+**What will change?**
+Default will change from `{{ borg_server_host_url }}` to
+`{{ borg_server_host_url }}-{{ borg_repo_name }}`.
+
+**Migration:**
+
+<!-- TODO: Consider if we want to migrate this automatically aswell -->
+
+Systemd unit names will change. Manually migrate:
+
+```bash
+# Stop old units
+systemctl stop borg_backup@OLD-VALUE.timer
+systemctl disable borg_backup@OLD-VALUE.timer
+
+# Run role to create new units
+# Then enable new units
+systemctl enable borg_backup@NEW-VALUE.timer
+systemctl start borg_backup@NEW-VALUE.timer
+```
+
+### Added
+
+- Multi-instance backup support (multiple repositories per client host)
+- Non-root backup user support via `borg_client_user` variable
+- Configurable SSH key type (`borg_ssh_key_type`) with support for
+ ed25519, rsa, and ecdsa
+- Per-repo SSH key support (`borg_ssh_key_per_repo`) for independent keys per repository
+- Storage quota support (`borg_storage_quota`) to limit repository size on server
+- Comprehensive test suite including disaster recovery scenarios
+- Negative security tests for cross-host repository isolation
+- Appendix-only repository mode (`borg_mode_append_only`)