🚀 Ansible Role: Restic – Автоматизированное резервное копирование

Этот проект содержит Ansible Role для установки и настройки Restic, мощного инструмента для резервного копирования с поддержкой дедупликации, инкрементальных бэкапов и множества бэкендов хранения данных.

🔗 Репозиторий: GitHub

📌 Что такое Restic и зачем он нужен?

Restic – это кроссплатформенное решение для резервного копирования, написанное на Go. Оно обеспечивает:

  • 📂 Поддержку различных хранилищ (локальные, SFTP, S3, Azure, B2 и другие).
  • 🔄 Инкрементальные бэкапы для минимизации занимаемого места.
  • 🔒 Шифрование резервных копий.
  • 🛠 Гибкость конфигурации, включая планировщики задач (cron/systemd).

Применение Restic:
✅ Резервное копирование серверных файлов и баз данных.
✅ Автоматизация создания снапшотов данных.
✅ Использование облачных сервисов для хранения бэкапов.


📂 Структура Playbook

  • tasks/main.yml – Основные задачи установки и настройки Restic.
  • templates/backup_script.sh.j2 – Шаблон скрипта для запуска бэкапов вручную.
  • vars/main.yml – Глобальные переменные для настройки роли.
  • handlers/main.yml – Обработчики событий Ansible (рестарт, обновление и т. д.).

🛠 Требования

Перед запуском Playbook убедитесь, что:

✔️ Ansible 2.9+ установлен на управляющем узле.
✔️ SSH-доступ к целевому серверу.
✔️ Linux-сервер с доступом в интернет.
✔️ bzip2 установлен на сервере (используется для сжатия данных).


🔧 Основные переменные роли

Вы можете настроить роль, изменяя следующие переменные:

vars:
  restic_version: '0.15.1'
  restic_download_path: '/opt/restic'
  restic_install_path: '/usr/local/bin'
  restic_script_dir: '/opt/restic'
  restic_log_dir: '{{ restic_script_dir }}/log'
  restic_repos:
    local:
      location: '/srv/restic-repo'
      password: 'securepassword0'
      init: true
  restic_create_schedule: true
  restic_schedule_type: 'systemd'

📌 Описание переменных:

  • restic_version – Версия Restic для установки.
  • restic_download_path – Путь для загрузки бинарного файла Restic.
  • restic_install_path – Путь для установки исполняемого файла Restic.
  • restic_repos – Репозитории хранения бэкапов (локальные или удаленные).
  • restic_create_schedule – Включение автоматического расписания бэкапов.
  • restic_schedule_type – Использование cron или systemd для запуска бэкапов.

📦 Установка роли Ansible Galaxy

Перед выполнением Playbook установите роль:

ansible-galaxy install roles-ansible.restic

Если роль уже установлена, можно выполнить обновление:

ansible-galaxy install -g -f roles-ansible.restic

🚀 Запуск резервного копирования через Ansible

🔹 1. Клонирование репозитория

git clone https://github.com/Shipssv83/Ansible-Role-Restic.git
cd Ansible-Role-Restic

🔹 2. Запуск установки Restic

ansible-playbook -i inventory --user root --extra-vars "host=host_name" playbooks/install-restic.yml

📌 Что делает этот Playbook?
✅ Устанавливает Restic.
✅ Настраивает репозитории для хранения резервных копий.
✅ Готовит расписание для автоматического выполнения бэкапов.


🛠 Использование Restic для ручного резервного копирования

Вы можете запустить бэкап вручную, используя сгенерированные скрипты:

/path/to/backup/script/backup-example.sh

Чтобы отметить бэкап определенным тегом:

/path/to/backup/script/backup-example.sh --tag deployment

Для выполнения вручную через cron:

CRON=true /path/to/backup/script/backup-example.sh

🎯 Заключение

Теперь ваш сервер защищен с помощью Restic, а бэкапы выполняются автоматически по расписанию. Вы можете хранить копии локально или в облаке, обеспечивая безопасность ваших данных.🚀