1
0
Fork 0
mirror of https://github.com/roles-ansible/ansible_role_restic.git synced 2024-12-11 23:41:32 +01:00

add ability to specify options to backup

This commit is contained in:
Karl DeBisschop 2024-01-27 02:19:06 -05:00
parent 64ce64c665
commit fa0901b0b3
2 changed files with 15 additions and 7 deletions

View file

@ -14,12 +14,12 @@ backups.
This role installs restic on a client, configures the backup repositories This role installs restic on a client, configures the backup repositories
and optionally sets systemd timer or cronjobs to run the backups. and optionally sets systemd timer or cronjobs to run the backups.
Aditionally, it will setup executable scripts to run a Backup manually. Additionally, it will set up executable scripts to run a Backup manually.
> This Project borrowed heavily from the > This Project borrowed heavily from the
> [donat-b/ansible-restic](https://github.com/donat-b/ansible-restic) and > [donat-b/ansible-restic](https://github.com/donat-b/ansible-restic) and
> the [https://github.com/arillso/ansible.restic](https://github.com/arillso/ansible.restic) > the [https://github.com/arillso/ansible.restic](https://github.com/arillso/ansible.restic)
> ansible role. We try to make this role more easy to anderstand and modern by using systemd timer, > ansible role. We try to make this role easier to understand and more modern by using systemd timer,
> /etc/crontab to define backup paths, more absolute paths and less options. (no S3 Storage, No Windows...) > /etc/crontab to define backup paths, more absolute paths and less options. (no S3 Storage, No Windows...)
### Backup Scripts ### Backup Scripts
@ -144,7 +144,7 @@ restic_repos:
``` ```
### Backups ### Backups
A backup specifies a directory or file to be backuped. A backup is written to a A backup specifies a directory or file to be backed up. A backup is written to a
Repository defined in `restic_repos`. Repository defined in `restic_repos`.
Available variables: Available variables:
@ -159,6 +159,7 @@ Available variables:
| `stdin_filename` | no | The filename used in the repository. | | `stdin_filename` | no | The filename used in the repository. |
| `pre_backup_cmd` | no | A command to run before backup, typically used to dump databases to disk | | `pre_backup_cmd` | no | A command to run before backup, typically used to dump databases to disk |
| `tags` | no | Array of default tags | | `tags` | no | Array of default tags |
| `options` | no | Array of additional options to restic backup |
| `keep_last` | no | If set, only keeps the last n snapshots. | | `keep_last` | no | If set, only keeps the last n snapshots. |
| `keep_hourly` | no | If set, only keeps the last n hourly snapshots. | | `keep_hourly` | no | If set, only keeps the last n hourly snapshots. |
| `keep_daily` | no | If set, only keeps the last n daily snapshots. | | `keep_daily` | no | If set, only keeps the last n daily snapshots. |
@ -178,7 +179,7 @@ Available variables:
| `disable_logging` | no | Optionally disable logging | | `disable_logging` | no | Optionally disable logging |
| `log_to_journald` | no | Optionally switch logging to journald with the name of the backup job as the tag | | `log_to_journald` | no | Optionally switch logging to journald with the name of the backup job as the tag |
| `mail_on_error` | no | Optionally send a mail if the backupjob will fail *(mailx is required)* | | `mail_on_error` | no | Optionally send a mail if the backupjob will fail *(mailx is required)* |
| `mail_address` | if `mail_on_error` is true | The mail addressto recive mails if you enabled ``mail_on_error``. | | `mail_address` | if `mail_on_error` is true | The mail address to receive mails if you enabled ``mail_on_error``. |
| `monitoring_call` | no | A command that will be called if the backup is *successful*. Useful for heartbeat monitoring systems that warn when no heartbeat is received. Use the full command, you need to run. Example: `curl https://monitoring.example.com/api/push/E9Wzm4lJ2O?status=up&msg=OK&ping=` | | `monitoring_call` | no | A command that will be called if the backup is *successful*. Useful for heartbeat monitoring systems that warn when no heartbeat is received. Use the full command, you need to run. Example: `curl https://monitoring.example.com/api/push/E9Wzm4lJ2O?status=up&msg=OK&ping=` |
| `niceness` | no | If set, runs any scheduled backup with given [niceness-value](https://en.wikipedia.org/wiki/Nice_(Unix)). On Linux -20 is highest priority, 0 default and 19 is lowest priority. 10 is a common low priority assigned to backup routines on production systems. | | `niceness` | no | If set, runs any scheduled backup with given [niceness-value](https://en.wikipedia.org/wiki/Nice_(Unix)). On Linux -20 is highest priority, 0 default and 19 is lowest priority. 10 is a common low priority assigned to backup routines on production systems. |
@ -212,7 +213,7 @@ restic_backups:
> You can also specify restic_backups as an array, which is a legacy feature and > You can also specify restic_backups as an array, which is a legacy feature and
> might be deprecated in the future. currently, the name key is used for > might be deprecated in the future. currently, the name key is used for
> namint the access and backup files > naming the access and backup files
#### Exclude #### Exclude
the `exclude` key on a backup allows you to specify multiple files to exclude or the `exclude` key on a backup allows you to specify multiple files to exclude or
@ -233,12 +234,12 @@ Please refer to the use of the specific keys to the
[documentation](https://restic.readthedocs.io/en/latest/040_backup.html#excluding-files). [documentation](https://restic.readthedocs.io/en/latest/040_backup.html#excluding-files).
## Dependencies ## Dependencies
This role does not have any other ansible role as dependencie. This role does not have any other ansible roles as dependencies.
## Example Playbook ## Example Playbook
```yml ```yml
- name: backup your homefolders to /mnt/backup everyday night - name: backup your home folders to /mnt/backup everyday night
hosts: localhost hosts: localhost
roles: roles:
- {role: do1jlr.restic, tags: restic} - {role: do1jlr.restic, tags: restic}

View file

@ -202,6 +202,12 @@ set -uxo pipefail
{% if repo.keep_tag is defined and (repo.keep_tag|length>0) %}{{ keep_tags(repo.keep_tag) }}{% endif %} {% if repo.keep_tag is defined and (repo.keep_tag|length>0) %}{{ keep_tags(repo.keep_tag) }}{% endif %}
{%- endmacro %} {%- endmacro %}
{% macro options(options) %}
{% for option in options %}
{{ option }} \
{% endfor %}
{% endmacro %}
{% macro exclude(exclude) %} {% macro exclude(exclude) %}
{% if exclude.exclude_caches is defined and exclude.exclude_caches == true %} {% if exclude.exclude_caches is defined and exclude.exclude_caches == true %}
--exclude-caches \ --exclude-caches \
@ -268,6 +274,7 @@ fi
{% if item.lvm is defined %}prepare_vol $BACKUP_SOURCE &&{% endif %} {% if item.lvm is defined %}prepare_vol $BACKUP_SOURCE &&{% endif %}
{{ restic_install_path }}/restic backup {% if item.lvm is defined and item.src == '/' %}/rootfs{% endif %}$BACKUP_SOURCE $MODE_TAG \ {{ restic_install_path }}/restic backup {% if item.lvm is defined and item.src == '/' %}/rootfs{% endif %}$BACKUP_SOURCE $MODE_TAG \
{{ tags(item.tags) }} \ {{ tags(item.tags) }} \
{% if item.options is defined %}{{ options(item.options) }}{% endif %} \
{% if item.exclude is defined %}{{ exclude(item.exclude) }}{% endif %} \ {% if item.exclude is defined %}{{ exclude(item.exclude) }}{% endif %} \
$@ $@
} \ } \