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_dir
backup_exclude_file
илиbackup_exclude_list
backup_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/ansible-role-borg