2019-08-12 17:08:26 +02:00
# Ansible Role: restic
[![Build Status ](https://img.shields.io/travis/projectgroup/ansible.projectname.svg?branch=master&style=popout-square )](https://travis-ci.org/projectgroup/ansible.projectname) [![license ](https://img.shields.io/github/license/mashape/apistatus.svg?style=popout-square )](https://sbaerlo.ch/licence) [![Ansible Galaxy ](https://img.shields.io/badge/ansible--galaxy-projectname-blue.svg?style=popout-square )](https://galaxy.ansible.com/projectgroup/projectname) [![Ansible Role ](https://img.shields.io/ansible/role/d/id.svg?style=popout-square )](https://galaxy.ansible.com/projectgroup/projectname)
## Description
[Restic ](https://github.com/restic/restic ) is a versatile Go based backup
solution which supports multiple backends, deduplication and incremental
backups.
This role installs restic on a client, configures the backup repositories
and optionally sets up cronjobs to run said backups.
Aditionally, it will setup executable scripts to run a Backup manually.
2019-08-13 11:27:13 +02:00
2019-08-13 13:28:31 +02:00
> This Project borrows heavily from the
2019-08-13 11:27:13 +02:00
> [donat-b/ansible-restic](https://github.com/donat-b/ansible-restic)
2019-08-13 13:28:31 +02:00
> ansible role. We try to make this role more semver deployment friendly
> by allowing to use version tags and keep these snapshots and adapting the
> automated backup definition for use with windows systems.
2019-08-12 17:08:26 +02:00
<!-- ## Installation
```bash
ansible-galaxy install restic
``` -->
## Requirements
* bzip2
## Role Variables
2019-08-13 13:28:31 +02:00
| Name | Default | Description |
| ---------------------- | -------------------- | --------------------------------------------------------------------------- |
| `restic_url` | `''` | The URL to download restic from. Use this variable to overwrite the default |
| `restic_version` | `'0.9.5'` | The version of Restic to install |
| `restic_download_path` | `'/opt/restic'` | Download location for the restic binary |
| `restic_install_path` | `'/usr/local/bin'` | Install location for the restic binary |
| `restic_script_dir` | `'~/restic'` | Location of the generated backup scripts |
| `restic_repos` | `{}` | A dictionary of repositories where snapshots are stored |
| `restic_backups` | `[]` | A list of dictionaries specifying the files and directories to be backed up |
| `restic_create_cron` | `false` | Should a cronjob be created for each backup |
| `restic_dir_owner` | `'{{ansible_user}}'` | The owner of all created dirs |
| `restic_dir_group` | `'{{ansible_user}}'` | The group of all created dirs |
2019-08-12 17:08:26 +02:00
### Repos
Restic stores data in repositories. You have to specify at least one repository
to be able to use this role. A repository can be local or remote (see the
official [documentation ](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html )).
> **Using an SFTP repository**
>
> For using an SFTP backend, the user needs passwordless access to the host.
> Please make sure to distribute ssh keys accordingly, as this is outside of
> the scope of this role.
Available variables:
2019-08-12 17:14:33 +02:00
2019-08-12 17:08:26 +02:00
| Name | Required | Description |
| ---------- |:--------:| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `location` | yes | The location of the Backend. Currently, [Local ](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#local ) and [SFTP ](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#sftp ) are supported |
| `password` | yes | The password used to secure this repository |
2019-08-13 13:32:28 +02:00
| `init` | no | Describes if the repository should be initialized or not. Use `false` if you are backuping to an already existing repo. |
2019-08-12 17:08:26 +02:00
Example:
```yaml
restic_repos:
local:
location: /srv/restic-repo
password: securepassword1
2019-08-13 13:32:28 +02:00
init: true
2019-08-12 17:08:26 +02:00
remote:
location: sftp:user@host:/srv/restic-repo
password: securepassword2
2019-08-13 13:32:28 +02:00
init: true
2019-08-12 17:08:26 +02:00
```
### Backups
A backup specifies a directory or file to be backuped. A backup is written to a
Repository defined in `restic_repos` .
Available variables:
2019-08-12 17:14:33 +02:00
2019-08-12 17:08:26 +02:00
| Name | Required | Description |
| ---------------- |:-----------------------------:| ----------------------------------------------------------------------------------------------------------------------- |
| `name` | yes | The name of this backup. Used together with pruning and needs to be unique. |
2019-08-14 16:00:22 +02:00
| `repo` | yes | The name of the repository to backup to. |
2019-08-12 17:08:26 +02:00
| `src` | yes | The source directory or file |
| `stdin` | no | Is this backup created from a [stdin ](https://restic.readthedocs.io/en/stable/040_backup.html#reading-data-from-stdin )? |
| `stdin_cmd` | no (yes if `stdin` == `true` ) | The command to produce the stdin. |
| `stdin_filename` | no | The filename used in the repository. |
| `tags` | no | Array of default tags |
2019-08-14 16:00:22 +02:00
| `keep_last` | no | If set, only keeps the last n 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_weekly ` | no | If set, only keeps the last n weekly snapshots. |
| `keep_monthly` | no | If set, only keeps the last n monthly snapshots. |
| `keep_yearly ` | no | If set, only keeps the last n yearly snapshots. |
| `keep_within` | no | If set, only keeps snapshots in this time period. |
| `keep_tag` | no | If set, keep snapshots with this tags. |
2019-08-12 17:08:26 +02:00
## Dependencies
none
## Example Playbook
```yml
- hosts: all
roles:
- restic
```
## Author
- Matthias Leutenegger
## License
This project is under the MIT License. See the [LICENSE ](https://sbaerlo.ch/licence ) file for the full license text.
## Copyright
(c) 2019, Arillso