borgbackup

Роль бэкапа Borg

Debian Ubuntu Rocky Multiple

Эта роль устанавливает бэкап Borg на серверах и клиентах borgbackup. В роли есть обертка-скрипт 'borg-backup', чтобы упростить использование на клиенте. Поддерживаемые команды включают borg-backup info | init | list | backup | mount. Если Automysqlbackup установлен, он будет запущен как предшествующая команда перед созданием бэкапа. Роль поддерживает как собственные хранилища, так и удалённые хранилища, такие как rsync.net и hetzner storage box как сервер Borg.

Можно настроить репозитории только для добавления, чтобы защитить бэкапы от удаления с клиента.

Для запуска этой роли требуется Ansible версии 2.9 или выше.

Требуемые переменные

Определите группу borgbackup_servers в вашем инвентаре с одним или несколькими хостами. Группа borgbackup_management необходима только в случае, если вы хотите включить режим только для добавления и очищать бэкапы с защищенных хостов.

[borgbackup_servers]
backup1.fiaas.co

[borgbackup_management]
supersecurehost

Определите group- или hostvars для ваших конечных точек бэкапа и хранения:

borgbackup_servers:
  - id: fiaas
    fqdn: backup1.fiaas.co
    user: borgbackup
    type: normal
    home: /backup/
    pool: repos
    options: ""
  - id: rsync
    fqdn: yourhost.rsync.net
    user: userid
    type: rsync.net
    home: ""
    pool: repos
    options: "--remote-path=borg1"
  - id: hetzner
    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

По умолчанию роль создает cron-задачу в /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. Только управляющая станция будет иметь разрешение на очистку старых бэкапов для (всех) клиентов. Это сгенерирует сервер с параметрами --append-only для ssh-ключей. Если вы установите borgbackup_appendonly_repoconfig в True, это также отключит возможность удаления бэкапов с управляющей станции. (Или, по крайней мере, удалить их невозможно, пока вы не перенастроите репозиторий, и это в настоящее время не поддерживается в скрипте prune) Обратите внимание на ограничения режима только для добавления: очищенные бэкапы кажутся удаленными, но на самом деле они только удаляются в журнале транзакций, пока что-то не запишет их в обычном режиме в репозиторий)

Убедитесь, что проверили заданные значения по умолчанию для этой роли, которые содержат список местоположений по умолчанию, которые сохраняются в backup_include. Переопределите это в вашем инвентаре, где это необходимо.

Установка Borg из пакета

Borg можно установить из пакета, установив переменную:

borgbackup_install_from_pkg: true

На системах EPEL (RedHat/CentOS) репозиторий epel-release будет добавлен автоматически с помощью роли geerlingguy.repo-epel.

Использование

Настройте Borg на сервере и на клиенте:

ansible-playbook -i inventory/test backup.yml -l backup1.fiaas.co
ansible-playbook -i inventory/test backup.yml -l client1.fiaas.co

Тестирование

Вся функциональность роли тестируется с помощью molecule, используя локальное соединение Docker для избежания сложности. Для получения дополнительной информации о тестировании molecule, см. https://molecule.readthedocs.io/en/latest/. Тесты написаны с использованием Testinfra, см. https://testinfra.readthedocs.io/en/latest/.

Из-за разнообразия сценариев тесты сами хранятся в molecule/generic_files, чтобы оптимизировать повторное использование. Их можно применять к хостам/группам, используя группы.

Начать тестирование так же просто, как выполнить следующее на любом компьютере с запущенным локальным Docker-движком: (из корневого каталога этой роли)

$ virtualenv -p python3 ~/.venv/fiaasco-borgbackup-docu
$ source ~/.venv/fiaasco-borgbackup-docu/bin/activate
$ pip3 install -r requirements.txt
$ molecule test

Убедитесь, что протестирована вся функциональность. Непрохождение сборок не будет допускаться при проверке PR! Каждый тестовый сценарий выполняет полное развертывание с сервером бэкапа, выполняет бэкап, тест восстановления и различные другие небольшие тесты, обеспечивая функциональную стабильность.

Тестовые сценарии

default

molecule test

Этот сценарий тестирует наиболее распространённую функциональность на платформах Debian. Он запускает сервер бэкапа на 2 последних официальных выпусках Debian.

centos

molecule test -s centos

Этот сценарий тестирует наиболее распространённую функциональность на платформах EPEL. Он запускает сервер бэкапа на 2 последних официальных выпусках CentOS.

ubuntu

molecule test -s ubuntu

Этот сценарий тестирует наиболее распространённую функциональность на платформах Ubuntu. Он запускает сервер бэкапа на 2 последних официальных выпусках Ubuntu.

multiple

molecule test -s multiple

Этот сценарий гарантирует, что функциональность роли работает, когда определено 2 или более серверов бэкапа.

lamp

molecule test -s lamp

Тестирование функциональности, когда роль fiaas.lamp применяется к машине, обеспечивая совместимость с хостом 'Fiaas'. См. molecule.yml для деталей.

clients

molecule test -s clients

Этот тест является самым большим сценарием, так как он включает тестирование всех поддерживаемых платформ и их комбинаций. Например, Debian 8 + 9 + 10, Fedora 31 и т.д. Поскольку мы все используем разные системы и платформы, это может быть безопасно расширено при условии, что этот сценарий продолжает работать!

Дополнительное чтение

О проекте

Install Borg backup server and client (with rsync.net server support)

Установить
ansible-galaxy install fiaasco/borgbackup
Лицензия
mit
Загрузки
12795
Владелец
Full install as a service