papanito.borg
Ansible роль "papanito.borg"
Ansible роль для установки и настройки регулярных резервных копий с помощью borg. Роль выполняет следующие действия:
[Необязательно] Удаление существующего репозитория
Инициализация репозитория по адресу
protocol://backup_server:target_dirилиtarget_dirПримечания
Если репозиторий
target_dirуже существует, инициализация будет пропущена. Еслиbackup_serverне указан, роль предполагает локальное резервное копирование, то есть в локальную директорию.Создание службы
systemd, которая регулярно (в соответствии сbackup_schedule) запускает скриптborg.shс borgbackup.org.Будет создан индивидуальный скрипт borg с именем
automatic-backup-{{service_name}}.shв/opt/borg_backup, который настраивается с:backup_source_dirbackup_exclude_fileилиbackup_exclude_listbackup_schedule
Требования
Нет
Переменные роли
Это все переменные
| Параметр | Описание | Значение по умолчанию | 
|---|---|---|
backup_server | 
Имя резервного сервера - если не указано, предполагается локальное резервное копирование | - | 
backup_user | 
Имя пользователя для подключения к серверу | - | 
backup_port | 
Порт для подключения к backup_server | 
- | 
protocol | 
Протокол, используемый для подключения к backup_server | 
ssh | 
backup_name | 
[обязательно] Имя резервной копии | - | 
backup_encryption_key | 
[обязательно] Пароль для ключа шифрования с использованием repokey | 
- | 
backup_encryption_method | 
Метод шифрования Borg метод шифрования, в настоящее время только repokey реализован | 
repokey | 
target_dir | 
Целевая директория резервных копий на backup_server | 
"./backups/{{ backup_name }}" | 
backup_delete | 
ВНИМАНИЕ Если установлено в true, существующий репозиторий резервных копий будет удален | 
false | 
backup_create | 
Создание репозитория. Вы можете использовать роль для явного удаления существующего repository, запустив роль с -e backup_delete=true -e backup_create=false | 
true | 
backup_schedule | 
Нотация расписания systemd для ежедневного резервного копирования | *-*-* 03:00:00 | 
backup_include_list | 
Список исходных директорий для резервного копирования | - | 
backup_exclude_file | 
EXCLUDEFILE, содержащий шаблоны исключенияИмеет приоритет перед backup_exclude_list | 
- | 
backup_exclude_list | 
Список шаблонов, которые будут добавлены как --exclude 'PATTERN' | 
- | 
Следующие параметры связаны с файлом службы systemd:
| Параметр | Описание | Значение по умолчанию | 
|---|---|---|
systemd_target_dir | 
Место, куда копировать файлы .service | 
/etc/systemd/system/ | 
borg_systemd_user | 
Пользователь для службы systemd | backup | 
borg_systemd_group | 
Группа для службы systemd | backup | 
borg_systemd_on_failure | 
Если указано, будет сделан [OnFailure] запись в файле службы | - | 
systemd_script_mode | 
Режим файла скрипта | 0774 | 
systemd_service_mode | 
Режим файла службы | 0644 | 
Скрипт, который разворачивается, также определяет параметры для prune, как описано в borg prune. Если ожидается число, но переменная не определена, параметр не предоставляется.
| Параметр | Описание | Значение по умолчанию | 
|---|---|---|
backup_prune_dryrun | 
-n, --dry-run не изменяет репозиторий | 
false | 
backup_prune_force | 
--force принуждение удаления поврежденных архивов | 
false | 
backup_prune_stats | 
-s, --stats печатает статистику для удаленного архива | 
true | 
backup_prune_list | 
--list выводит подробный список архивов, которые он сохраняет/удаляет | 
true | 
backup_prune_keep_within | 
--keep-within INTERVAL сохраняет все архивы в этом интервале | 
- | 
backup_prune_keep_last | 
--keep-last, --keep-secondly количество архивов в секунду для сохранения | 
- | 
backup_prune_keep_minutely | 
--keep-minutely количество архивов каждую минуту для сохранения | 
- | 
backup_prune_keep_hourly | 
-H, --keep-hourly количество архивов каждый час для сохранения | 
- | 
backup_prune_keep_daily | 
-d, --keep-daily количество дневных архивов для сохранения | 
- | 
backup_prune_keep_weekly | 
-w, --keep-weekly количествоWeekly архива для сохранения | 
- | 
backup_prune_keep_monthly | 
-m, --keep-monthly количество архивов в месяц для сохранения | 
- | 
backup_prune_keep_yearly | 
-y, --keep-yearly количество архивов в год для сохранения | 
- | 
backup_prune_save_space | 
--save-space работает медленнее, но занимает меньше места | 
false | 
Чтобы скрыть конфиденциальную информацию, я рекомендую использовать ansible-vault.
Вы можете определить файл пароля в ansible.cfg, чтобы не указывать параметры шифрования. Таким образом, зашифрованную переменную backup_encryption_key можно создать следующим образом:
ansible-vault encrypt_string 'SupersecretPa$$phrase' --name 'backup_encryption_key'
Зависимости
Нет
Примеры
Пример плейбука для удаленного резервного копирования
Включение примера того, как использовать вашу роль (например, с переменными в качестве параметров) всегда полезно для пользователей:
- hosts: localhost
  vars:
  - backup_server: borg.intra
  - backup_user: borguser
  - backup_name: mybackupname
  - backup_encryption_key: test
  - backup_port: 23
  - target_dir: "/var/backups/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1
  
  roles:
  - role: papanito.borg
Это создаст резервную копию по адресу ssh://[email protected]:/var/backup/mybackupname и следующие файлы systemd:
/opt/borg_backup/automatic-backup-mybackupname-borg.intra.sh(скрипт резервного копирования)/etc/systemd/system/automatic-backup-mybackupname-borg.intra.service(файл службы systemd)/etc/systemd/system/automatic-backup-mybackupname-borg.intra.timer(файл таймеров systemd)
Пример плейбука для локального резервного копирования
Включение примера того, как использовать вашу роль (например, с переменными в качестве параметров) всегда полезно для пользователей:
- hosts: localhost
  vars:
  - backup_name: mybackupname
  - backup_encryption_key: test
  - target_dir: "/var/backup/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1
Это создаст резервную копию по адресу /var/backup/mybackupname и следующие файлы systemd:
/opt/borg_backups/automatic-backup-mybackupname-local.sh(скрипт резервного копирования)/etc/systemd/system/automatic-backup-mybackupname-local.service(файл службы systemd)/etc/systemd/system/automatic-backup-mybackupname-local.timer(файл таймеров systemd)
Лицензия
Это свободное программное обеспечение, выпущенное на условиях лицензии Apache v2.
Информация об авторе
ansible-galaxy install papanito.borg