borgbackup
Роль резервного копирования Borg
Это форк https://github.com/FiaasCo/borgbackup, который изначально был написан Люком Стробантом и Дитером Вергелстом. Этот форк поддерживается компанией Tag1 Consulting, Inc.
Эта роль устанавливает резервное копирование Borg на серверах и клиентах borgbackup. В роли есть обертка-скрипт 'borg-backup', что упрощает использование на клиентской стороне. Поддерживаемые опции включают borg-backup info | init | list | backup | mount. Automysqlbackup будет выполнен как предшествующая команда резервного копирования, если он установлен. Роль поддерживает как самофинансируемое, так и удаленное хранилище резервных копий, такие как rsync.net и storage box от Hetzner в качестве сервера Borg.
Есть возможность настроить репозитории только для добавления, чтобы защитить резервные копии от удаления с клиента.
Для работы этой роли необходим Ansible версии 2.4 или выше.
Ansible Galaxy
Эта роль доступна как tag1consulting.borgbackup
на Ansible Galaxy. Чтобы использовать это в плейбуке, добавьте следующее в ваш файл requirements.txt
:
# https://github.com/tag1consulting/ansible-role-borgbackup
- src: "tag1consulting.borgbackup"
Требуемые переменные
Определите группу borgbackup_servers в вашем инвентаре с одним или несколькими хостами. Группа borgbackup_management необходима только в случае, если вы хотите включить режим только для добавления и обрезать резервные копии с защищенных хостов.
[borgbackup_servers]
backup1.fiaas.co
[borgbackup_management]
supersecurehost
Определите переменные group- или hostvars для ваших конечных точек резервного копирования и хранения:
borgbackup_servers:
- fqdn: backup1.fiaas.co
user: borgbackup
type: normal
home: /backup/
pool: repos
options: ""
- fqdn: yourhost.rsync.net
user: userid
type: rsync.net
home: ""
pool: repos
options: "--remote-path=borg1"
- fqdn: username.your-storagebox.de
user: username
type: hetzner
home: ""
pool: repos
options: ""
borgbackup_retention:
hourly: 12
daily: 7
weekly: 4
monthly: 6
yearly: 1
ВНИМАНИЕ: слэш в item.home обязателен.
Определите borg_passphrase для каждого хоста. host_vars\client1:
borgbackup_passphrase: Ahl9EiNohr5koosh1Wohs3Shoo3ooZ6p
По умолчанию роль создает cronjob в /etc/cron.d/borg-backup, который выполняется от имени root каждый день в случайный час между 0 и 5 утра и в случайную минуту. При необходимости переопределите значения по умолчанию:
borgbackup_client_user: root
borgbackup_cron_day: "*"
borgbackup_cron_minute: "{{ 59|random }}"
borgbackup_cron_hour: "{{ 5|random }}"
Переопределите borgbackup_client_user, где это необходимо, например, если у вас есть ноутбук с зашифрованным домашним каталогом, вам нужно будет выполнять резервное копирование от имени этого пользователя.
Установите borgbackup_appendonly: True в переменные хоста или группы, если вы хотите репозитории только для добавления. В этом случае можно определить имя хоста в borgbackup_management_station, где будет настроен скрипт borg prune. Только управляющая станция будет иметь разрешение на удаление старых резервных копий для (всех) клиентов. Это создаст сервер с ключевыми параметрами ssh по умолчанию --append-only. Если вы установите borgbackup_appendonly_repoconfig в True, это также отключит возможность удаления резервных копий с управляющей станции. (Или, по крайней мере: это невозможно удалить, пока вы не перенастроите репозиторий, и это в настоящее время не поддерживается в скрипте prune). Обратите внимание на ограничения режима только для добавления: обрезанные резервные копии кажутся удаленными, но они просто удалены из журнала транзакций, пока что-то не запишет в нормальном режиме в репозиторий)
Убедитесь, что проверили заданные по умолчанию параметры для этой роли, которые содержат список стандартных мест, подлежащих резервному копированию в backup_include. Переопределите это в вашем инвентаре, где это необходимо.
Установка Borg из пакета EPEL
Borg можно установить из пакета EPEL, установив переменную:
borgbackup_install_from_pkg: true
Репозиторий EPEL должен быть доступен для успешной установки. Чтобы установить репозиторий EPEL с помощью роли
geerlingguy.repo-epel
, установите:
borgbackup_install_epel: true
Использование
Настройте Borg на сервере и на клиенте:
ansible-playbook -i inventory/test backup.yml -l backup1.fiaas.co
ansible-playbook -i inventory/test backup.yml -l client1.fiaas.co
Дополнительные материалы
Install Borg backup server and client (with rsync.net server support)
ansible-galaxy install tag1consulting/ansible-role-borgbackup