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/
This commit is contained in:
parent
0fd01bc13f
commit
0fcbef29a9
@ -10,7 +10,6 @@ An Ansible Role that sets up automated remote backups on the target machine. Use
|
|||||||
|
|
||||||
### Optional Arguments
|
### Optional Arguments
|
||||||
- `borg_encryption_passphrase`: Password to use for repokey or keyfile. Empty if repo is unencrypted.
|
- `borg_encryption_passphrase`: Password to use for repokey or keyfile. Empty if repo is unencrypted.
|
||||||
- `borgmatic_config_name`: Name to use for the borgmatic config file. Defaults to `config.yml`
|
|
||||||
- `borgmatic_large_repo`: Does repo-checking on a weekly basis instead of daily. Good for repos with 100GB+ size.
|
- `borgmatic_large_repo`: Does repo-checking on a weekly basis instead of daily. Good for repos with 100GB+ size.
|
||||||
- `borgmatic_failure_command`: Run this command when an error occurs. E.g. `curl -s -F "token=xxx" -F "user=xxx" -F "message=Error during backup" https://api.pushover.net/1/messages.json`
|
- `borgmatic_failure_command`: Run this command when an error occurs. E.g. `curl -s -F "token=xxx" -F "user=xxx" -F "message=Error during backup" https://api.pushover.net/1/messages.json`
|
||||||
- `borg_exclude_patterns`: Paths or patterns to exclude from backup. See [official documentation](https://borgbackup.readthedocs.io/en/stable/usage/help.html#borg-help-patterns) for more.
|
- `borg_exclude_patterns`: Paths or patterns to exclude from backup. See [official documentation](https://borgbackup.readthedocs.io/en/stable/usage/help.html#borg-help-patterns) for more.
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
borg_encryption_passphrase: ''
|
borg_encryption_passphrase: ''
|
||||||
borg_exclude_patterns: []
|
borg_exclude_patterns: []
|
||||||
borgmatic_config_name: config.yaml
|
|
||||||
borgmatic_large_repo: false
|
borgmatic_large_repo: false
|
||||||
borgmatic_failure_command: echo "`date` - Error while creating a backup."
|
borgmatic_failure_command: echo "`date` - Error while creating a backup."
|
||||||
borg_one_file_system: true
|
borg_one_file_system: true
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
- include: "{{ ansible_pkg_mgr }}.yml"
|
- include: "{{ ansible_pkg_mgr }}.yml"
|
||||||
|
|
||||||
- name: Install required System Packages
|
- name: Install required System Packages
|
||||||
package:
|
package:
|
||||||
pkg: "{{ item }}"
|
pkg: "{{ item }}"
|
||||||
state: present
|
state: present
|
||||||
with_items: "{{ borg_packages }}"
|
with_items: "{{ borg_packages }}"
|
||||||
|
|
||||||
- name: Update setuptools if needed
|
- name: Update setuptools if needed
|
||||||
pip:
|
pip:
|
||||||
name: setuptools
|
name: setuptools
|
||||||
state: latest
|
state: latest
|
||||||
executable: "{{ pip_bin }}"
|
executable: "{{ pip_bin }}"
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
- debug:
|
- debug:
|
||||||
var: root_user['ssh_public_key']
|
var: root_user['ssh_public_key']
|
||||||
|
|
||||||
- name: Create new repository for server
|
- name: Create new repository for server
|
||||||
borgbase:
|
borgbase:
|
||||||
repository_name: "{{ bb_repo_name }}"
|
repository_name: "{{ bb_repo_name }}"
|
||||||
@ -52,9 +52,9 @@
|
|||||||
borg_repository: "{{ repo_creation['data']['repoPath'] }}"
|
borg_repository: "{{ repo_creation['data']['repoPath'] }}"
|
||||||
when: create_repo
|
when: create_repo
|
||||||
|
|
||||||
- name: Ensures /etc/borgmatic exists
|
- name: Ensures /etc/borgmatic.d exists
|
||||||
file:
|
file:
|
||||||
path: /etc/borgmatic
|
path: /etc/borgmatic.d
|
||||||
state: directory
|
state: directory
|
||||||
mode: 0700
|
mode: 0700
|
||||||
owner: root
|
owner: root
|
||||||
@ -62,37 +62,41 @@
|
|||||||
- name: Add Borgmatic Configuration
|
- name: Add Borgmatic Configuration
|
||||||
template:
|
template:
|
||||||
src: config.yaml.j2
|
src: config.yaml.j2
|
||||||
dest: "/etc/borgmatic/{{ borgmatic_config_name }}"
|
dest: "/etc/borgmatic.d/{{ item | regex_replace('\\/$', '') | basename }}.yaml"
|
||||||
mode: 0600
|
mode: 0600
|
||||||
|
with_items: "{{ borg_source_directories }}"
|
||||||
|
|
||||||
|
- debug: msg="/etc/borgmatic.d/{{ item | regex_replace('\\/$', '') | basename }}.yaml"
|
||||||
|
with_items: "{{ borg_source_directories }}"
|
||||||
|
|
||||||
- name: Add cron-job for borgmatic (large repo, create and check separate)
|
- name: Add cron-job for borgmatic (large repo, create and check separate)
|
||||||
block:
|
block:
|
||||||
- cron:
|
- cron:
|
||||||
name: "borgmatic"
|
name: "borgmatic"
|
||||||
hour: "{{ 6 |random }}"
|
hour: "{{ 6 |random }}"
|
||||||
minute: "{{ 59 |random }}"
|
minute: "{{ 59 |random }}"
|
||||||
user: "root"
|
user: "root"
|
||||||
cron_file: borgmatic
|
cron_file: borgmatic
|
||||||
job: "/usr/local/bin/borgmatic -c /etc/borgmatic/{{ borgmatic_config_name }} --create --prune"
|
job: "/usr/local/bin/borgmatic --create --prune"
|
||||||
- cron:
|
- cron:
|
||||||
name: "borgmatic-check"
|
name: "borgmatic-check"
|
||||||
day: "{{ 28 | random }}"
|
day: "{{ 28 | random }}"
|
||||||
hour: "{{ range(7, 24) | random }}"
|
hour: "{{ range(7, 24) | random }}"
|
||||||
minute: "{{ 59 | random }}"
|
minute: "{{ 59 | random }}"
|
||||||
user: "root"
|
user: "root"
|
||||||
cron_file: borgmatic
|
cron_file: borgmatic
|
||||||
job: "/usr/local/bin/borgmatic -c /etc/borgmatic/{{ borgmatic_config_name }} --check"
|
job: "/usr/local/bin/borgmatic --check"
|
||||||
when: borgmatic_large_repo
|
when: borgmatic_large_repo
|
||||||
|
|
||||||
- name: Add cron-job for borgmatic (normal-sized repo)
|
- name: Add cron-job for borgmatic (normal-sized repo)
|
||||||
block:
|
block:
|
||||||
- cron:
|
- cron:
|
||||||
name: "borgmatic"
|
name: "borgmatic"
|
||||||
hour: "{{ 6 | random }}"
|
hour: "{{ 6 | random }}"
|
||||||
minute: "{{ 59 | random }}"
|
minute: "{{ 59 | random }}"
|
||||||
user: "root"
|
user: "root"
|
||||||
cron_file: borgmatic
|
cron_file: borgmatic
|
||||||
job: "/usr/local/bin/borgmatic -c /etc/borgmatic/{{ borgmatic_config_name }}"
|
job: "/usr/local/bin/borgmatic"
|
||||||
- cron:
|
- cron:
|
||||||
name: "borgmatic-check"
|
name: "borgmatic-check"
|
||||||
state: absent
|
state: absent
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
# Full config: https://gist.github.com/coaxial/46e36d89d7b81887f7275d587fe04c44
|
# Full config: https://gist.github.com/coaxial/46e36d89d7b81887f7275d587fe04c44
|
||||||
|
{% set archive_prefix = item | regex_replace("\\/$", "") | basename %}
|
||||||
location:
|
location:
|
||||||
source_directories:
|
source_directories:
|
||||||
{% for dir in borg_source_directories %}
|
- {{ item }}
|
||||||
- {{ dir }}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
# Stay in same file system (do not cross mount points).
|
# Stay in same file system (do not cross mount points).
|
||||||
one_file_system: {{ borg_one_file_system }}
|
one_file_system: {{ borg_one_file_system }}
|
||||||
repositories:
|
repositories:
|
||||||
@ -73,7 +72,7 @@ storage:
|
|||||||
# also specify a prefix in the retention section to avoid accidental pruning of
|
# also specify a prefix in the retention section to avoid accidental pruning of
|
||||||
# archives with a different archive name format. And you should also specify a
|
# archives with a different archive name format. And you should also specify a
|
||||||
# prefix in the consistency section as well.
|
# prefix in the consistency section as well.
|
||||||
archive_name_format: '{hostname}-{now}'
|
archive_name_format: '{{ archive_prefix }}-{now}'
|
||||||
|
|
||||||
# Retention policy for how many backups to keep in each category. See
|
# Retention policy for how many backups to keep in each category. See
|
||||||
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-prune for details.
|
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-prune for details.
|
||||||
@ -117,7 +116,7 @@ retention:
|
|||||||
# When pruning, only consider archive names starting with this prefix.
|
# When pruning, only consider archive names starting with this prefix.
|
||||||
# Borg placeholders can be used. See the output of "borg help placeholders" for
|
# Borg placeholders can be used. See the output of "borg help placeholders" for
|
||||||
# details. Default is "{hostname}-".
|
# details. Default is "{hostname}-".
|
||||||
prefix: '{hostname}-'
|
prefix: '{{ archive_prefix }}-'
|
||||||
|
|
||||||
# Consistency checks to run after backups. See
|
# Consistency checks to run after backups. See
|
||||||
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-check and
|
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-check and
|
||||||
@ -138,7 +137,7 @@ consistency:
|
|||||||
# When performing the "archives" check, only consider archive names starting with
|
# When performing the "archives" check, only consider archive names starting with
|
||||||
# this prefix. Borg placeholders can be used. See the output of
|
# this prefix. Borg placeholders can be used. See the output of
|
||||||
# "borg help placeholders" for details. Default is "{hostname}-".
|
# "borg help placeholders" for details. Default is "{hostname}-".
|
||||||
prefix: '{hostname}-'
|
prefix: '{{ archive_prefix }}-'
|
||||||
|
|
||||||
# Shell commands or scripts to execute before and after a backup or if an error has occurred.
|
# Shell commands or scripts to execute before and after a backup or if an error has occurred.
|
||||||
# IMPORTANT: All provided commands and scripts are executed with user permissions of borgmatic.
|
# IMPORTANT: All provided commands and scripts are executed with user permissions of borgmatic.
|
||||||
|
Loading…
Reference in New Issue
Block a user