Commit Graph

53 Commits

Author SHA1 Message Date
Manu
747b4698b5 Ensure borgmatic is in PATH 2026-01-06 16:35:16 +00:00
Manu
bdee5114a6 fix: correct systemd timer reference and enable timer by default
Fixes #143 and #164.

- Fix incorrect timer reference in borgmatic.service.j2
  (backup_normal_repo.timer -> borgmatic.timer)
- Add borgmatic_timer_enabled variable (default: true) to control
  whether the systemd timer is enabled after installation
- Simplify timer management logic in noauto_create_timer_systemd.yml

Previously, the timer was always created but never enabled, causing
users to think backups were running when they weren't. Now the timer
is enabled by default. Users who need manual control can set
borgmatic_timer_enabled: false.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 14:46:21 +00:00
Manu
91e793975f Fix venv recreation after Python version change
After an OS upgrade, the Python version may change but the existing
virtualenv at /opt/borgmatic still references the old Python binary.
This causes ModuleNotFoundError when trying to run borgmatic.

This fix adds checks before venv creation to:
1. Get the system's current Python version
2. Check the Python version in the existing venv (if any)
3. Remove the venv if versions don't match, allowing it to be recreated

Fixes #113

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 14:45:48 +00:00
Emiel Molenaar
4cb112712b
Add support for custom configuration for borgmatic (#195)
* Add support for custom configuration for borgmatic
* Restrict borgmatic_custom_config to version 1.8+
2026-01-06 14:43:47 +00:00
Manu
51e099e553 Allow skipping SSH key and config generation
Add when conditions to skip SSH key generation and borgmatic config
creation when corresponding variables are empty. This allows users
to install only borg/borgmatic without configuring them.

Closes #188 #152

Co-Authored-By: Leonidas Avdelas <avdelasleonidas@gmail.com>
2026-01-05 13:42:10 +00:00
Manu
1d16b64d24 Improve borgmatic version handling and fix deprecated options
- Rename templates to version-based naming (config_1.7.yaml.j2)
- Use command module instead of shell for version detection
- Add check_mode: false for version detection task
- Fix deprecated remote_rate_limit → upload_rate_limit for 1.8+

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 13:15:40 +00:00
Tomas Kopal
0ff3e2f38e Use name for setting a fact, fixes ansible-lint error. 2025-11-05 15:28:28 +01:00
Tomas Kopal
c700844f75 Add support for configuration syntax of borgmatic > 1.8.0 2025-10-24 15:12:13 +02:00
AJ Jordan
0dd2f88033 Add none installation method 2025-07-09 18:37:42 +01:00
Max Fuxjäger
e2f8e75155 Fix linting messages
- fix truthy values to proper booleans
- fix too long lines: wrapped
- fix indentation
- fix amount of preceding whitespace
- fix argument_spec syntax: borg_retention_policy as type dict with specific options
2025-04-28 19:59:35 +01:00
Matthias Stegmann
320975170d Add option to add flags to borgmatic in cron/systemd-timer job 2025-04-07 16:03:00 +01:00
Matthias Stegmann
4c7f8d86bf Add option to set ssh key comment 2025-04-04 23:29:03 +01:00
AJ Jordan
c91bf0e9b4 Remove unneeded execute bit on YAML file 2025-03-31 10:44:25 +01:00
AJ Jordan
e179627077 Extract asserts into their own file
These don't really belong in the "install" file.
2025-03-30 12:38:01 +01:00
Manu
c8a295aa26
Test and dependency fixes (#153) 2024-10-18 11:35:39 +01:00
Woomy
702299f861
Don't fail if cron isn't installed when setting up systemd timer (#147)
* `cron` isn't always installed and is not required when using a systemd
  timer, so make sure setup doesn't fail when we check if there's
  already an installed cron timer

Signed-off-by: Woomymy <woomy@woomy.be>
2024-03-07 21:11:02 +00:00
Sam Hartsfield
7efeb1be5e
Fix failing on EPEL check in Fedora (#111)
* Fix failing on EPEL check in Fedora

Only applies when using the "package" install method.
Added a separate variable "borg_require_epel" to make it easy to disable
the check in any other situations (e.g. using a custom mirror instead of
the epel-release package).

* Explain default value of borg_require_epel
2023-04-19 11:07:29 +01:00
Frank Dornheim
dd960dcf4e
Restructure role, add Systemd timer option. By @conloos (#112)
* add full path

* Update Readme.me: reorder optional Arguments, update cron -> systemd timer

* remove ssh_key_file; change cron to timer

* Removed cronie from package installation because systemd timer is used

* docker.sh - Stops all or selected containers to save the persistent data intact. The containers are started in reverse order

* Created arguments_specs.yml

* Role restructured:
  - if needed creation of a service user incl. creation of the ssh-key,
  - add the ssh key to authorized_keys,
  - auto init of the repos,
  - creation and start of systemd timer and services and
  - installation of the Docker helperscript.

* restructure role add import logic

* cleanup: user backup_user

* - "borg_source_directories" is not longer a required Argument
- add "borg_keys_directory" to load key from Service user during starting borgmatic by sudo

* Add borgmatic_initialization_repo (bool) as option to disable init of repo

* cleanup

* fix ansible-lint errors and warnings

* fix letter turner

* add option: borgmatic_timer

* add:
  - borgmatic_timer_systemd: true
readd:
  - borgmatic_cron_name: "borgmatic"

* - renamed borgmatic_cron_name to borgmatic_timer_cron_name to be more convergent.
- Change recommendations implemented by m3nu so that creation of a timer (systemd or cron) is optional and can be selected via borgmatic_timer.

* Add description to borgmatic_timer_cron_name and borgmatic_timer

* Add variable borg_cron_package to install the cron-packages in case of using timer: cron

* reworked timer install logic

* reworked timer install logic

* Add comments for running backup with service account

* add new parameters for tests

* Switch created to perform the backup as root or service account. If a service account is to be used, it will be created.

* Refactored: Check for ssh-key if not present, genereate them.

* Refactored

* Refactored

* renamed tasks/03_configure.yml to tasks/04_create_links_to_borg_and_borgmatic.yml

* Refactored

* Refactored

* add example for service account

* Update Python version for testing

* No auto init

* Add description to install_backup

* Add description to install_backup

* set coverage back to: m3nu.ansible_role_borgbackup

* The initialization of the repository must be activated and does not take place automatically.

* The initialization of the repository must be activated and does not take place automatically.

* Removed install_backup as var (bool) to prevent that this role run

* Rename backup_ssh_command to borg_ssh_command, tis was a double definition

* Renamed backup_repository to borg_repository and add better explanations

* remove copy ssh-keys and cert parts

* Add comments to borg_ssh_key_file and borg_ssh_key_type

* Set allways the borg_ssh_key_file and borg_ssh_command to load the right ssh-key. Add borg_ssh_key_type to select the key type by user

* Add borg_ssh_key_type

* renamed id_rsa to backup

* generate ssh-keys (backup and backup.pub) and add better explanation

* Print out key if borgmatic_initialization_repo is false

* Remove 'su - {{ borgbackup_user }} -c' to execute the borgmatic by the right user

* Add Check frequency, therefore, we no longer need to distinguish between normal and large repos

* Add link to Article

* renamed backup_ssh_command and backup_ssh_key_file to borg_ssh_command and borg_ssh_key_file

* Removed: borgmatic_initialization_repo

* Removed: borgmatic_initialization_repo

* Removed: borgmatic_initialization_repo

* revert changes

* Add Full Automation

* polishing

* rename backup.timer and bakup.service to borgmatic.timer and borgmatic.service

* remove debug

* Try to find services in ansible_facts

* Forgot to install Cron

* change borg_ssh_key_type to ed25519

* remove conditional checks

* - add hint to using a service user
- renamed: borg_ssh_key_file to borg_ssh_key_file_path
- removed advanced example

* add borg_ssh_key_name, renamed borg_ssh_key_file to borg_ssh_key_file_path

* removed static pointing to ~/.ssh/backup SSH private key

* Add README-Advanced-Examples.md for storing more examples

* Fix test idempotence

* Dont symlink when using distro packages

* Remove old test targets, consistent wording, remove tag

* Remove helper scripts, fix absolute path

* Fix cron job, add assert to prevent duplicate timers

* nit-pick

* Create bin links as root, no borg_ssh_command by default.

* Add breaking changes note to README

---------

Co-authored-by: Manu <manu@snapdragon.cc>
2023-03-28 18:01:12 +01:00
Stefan Morgenthaler
981d4f9072
Allow to installation via OS package manager or pip (#106)
* allow to installation via os package manager or pip

* Run a second time to install via package manager

* Check for EPEL if distro package requested.

* Split dep lists to avoid installing build deps when using distro pkg

Co-authored-by: Stefan Morgenthaler <dev@morgenthaler.at>
Co-authored-by: Manu <manu@snapdragon.cc>
2022-12-15 17:40:53 +01:00
Sébastien Clément
e34f9311d8
Allow setting borg/borgmatic version (#107) 2022-11-22 20:54:31 +01:00
Manu
e1ba1d1364
Adjust Borgmatic arguments for v1.7.0 (#102) 2022-09-03 11:07:50 +02:00
Manuel Riel
1def545c86
Remove borgbase module, now separate (#100) 2022-05-13 11:17:47 +04:00
Luc Stroobant
740e9fe758
Upgrade pip and setuptools during installation. By @stroobl (#95) 2022-03-06 10:01:25 +04:00
Manu
8429ec5bc1
Support Borg 1.2.0 (#94)
* Move common Python packages to main.yml, install dependent Python packages first.
2022-02-28 10:28:37 +04:00
Manu
29d0c5f480
Unify all Borgmatic hooks in one variable (#93) 2022-02-20 14:42:09 +04:00
Manu
bb5b6afd4c
Add RHEL9 support, fix empty exclude option (#92) 2022-02-20 13:56:14 +04:00
michalroxorpl
aa5830aca0
Introduce support for Archlinux. By @michalroxorpl (#79) 2021-09-23 14:07:49 +04:00
Manu
cce04c3648
Use borgmatic_config_name for normal-sized cron job. Fixes #69 (#70) 2021-06-22 10:36:26 +04:00
Luc Stroobant
b99de011fc
Install borgmatic in virtualenv. By @stroobl. Fixes #60 (#68) 2021-06-21 21:58:51 +04:00
savoiringfaire
995c866c22
Don't specify full path in cron (#67) 2021-06-21 21:38:55 +04:00
Manu
3bd0b3d497
Add Manjaro support (by @verbumfeit), CI fixes. (#65)
Co-authored-by: verbumfeit <verbumfeit@tuta.io>
2021-04-20 14:53:35 +08:00
Manu
bebe44d080
Rebased: cron name setable by @debauer (#59)
See #51
2021-02-17 10:16:34 +08:00
Luc Stroobant
9193c18128
Use inventory_hostname as random seed to keep same Cron time. By @stroobl (#54) 2021-01-12 09:58:47 +08:00
Juan Orti Alcaine
e29c4df98c
Update packages installed in Fedora (#48)
Remove Fedora 31 as it's EOL and use the borgbackup, borgmatic and
cython packages from Fedora's repositories.
2020-12-07 19:52:40 +08:00
Dick Visser
5c67c0d935
Install packages in one step. By @dnmvisser (#43) 2020-11-27 07:46:55 +08:00
Philipp Rintz
ee6f93f71b
Support for multiple repositories. By @p-rintz (#41) 2020-11-18 11:41:57 +08:00
Jonas
54c270acdc
Update package list for Fedora 32 (#39)
* Add specific package lists for Fedora.

The python packages have been renamed in Fedora 32 (python3-* -> python-*).
To further support Fedora 31, the RedHat vars have been copied for this case.

* Enable molecule tests for Fedora.
2020-09-22 18:32:44 +08:00
Gonéri Le Bouder
e8b992fc1d
enable EPEL only on RHEL and CentOS (#37)
Fedora has `ansible_os_family==RedHat`, but it does not use EPEL.
2020-07-21 17:21:00 +08:00
em0lar
51e89d6e24
Make cron fully times configureable. By @em0lar 2020-07-15 11:40:38 +08:00
Manu
b97d42e71c
Make less frequent checking the default and correctly run check only. (#30) 2020-02-18 16:10:02 +08:00
Manu
e5738e9114
CentOS 8 support (#29)
* Load vars and tasks by OS family instaed of package manager. Fix Dockerfile for CentOS 8.
* Config for CentOS 8 and others
* Make monthly repo checking the default
2020-02-18 14:35:20 +08:00
Manu
5c883a734b
Add testing with Molecule/Ansible-lint, undo #9 (#26)
* Add testing with Molecule/Ansible-lint and fix linting errors
* Undo PR #9 for now (sorry)
2020-02-18 00:21:21 +08:00
Marien Fressinaud
85211377b6
Add a ssh_key_file optional argument (#21)
I already had an existing SSH key, with a different name. I wanted to be
able to use this one instead of creating another key, potentially used
for another server.
2020-01-29 15:29:33 +08:00
madhermit
0fcbef29a9 Allow per-app configurations (#9)
This PR allows for multiple per application borgmatic configurations as per this article: https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/
2019-10-24 13:05:19 +08:00
Philipp Rintz
f9e1fa9161 Auto-creation of Borgbase.com repositories (#7) 2019-09-23 18:30:22 +02:00
Manu
e809ec597d Add support for RPM-based distros (CentOS, RHEL, Fedora) 2019-05-27 18:12:13 +08:00
Manu
e30ce279c4 Improve Borgmatic cron-job names. 2019-05-15 12:44:10 +08:00
Manu
6787e98f08 Add option to check large repos only on Sunday. 2019-05-01 10:39:07 +08:00
Manu
3e78fd069d Ensure setuptools is updated, avoid updating too many packages. 2019-02-28 18:40:24 +08:00
Manu
78c7d3a99b Add 4 new config options. (#2) 2018-10-29 11:50:18 +08:00