borg

Ansible роль "papanito.borg"

Ansible Role Ansible Quality Score Ansible Role GitHub issues GitHub pull requests

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.

Информация об авторе

Написано Papanito - Gitlab / Github

О проекте

Ansible role do install and setup regular backups with borg

Установить
ansible-galaxy install papanito/ansible-role-borg
Лицензия
apache-2.0
Загрузки
177
Владелец
A passionate DevOps Engineer from Switzerland, father of five and husband of the most beautiful and most amazing woman in the world.