# Домашнее задание 27 ## Резервное копирование Для выполнение задания используется vagrant box Ubuntu 22.04 ### Создание Vagrantfile Зададим следующие характеристики для VM - CPU - 1 - Memory - 512mb Для VM **backup-server** добавим дополнительный диск размером 2Gb Только после того, как создасться VM **backup-server** запуститься provision через ansible. Готовый [Vagrantfile](Vagrantfile) ### Cоздание ansible.yml Сценарий для Ansible будет выполнять следующие действия: На всех VM: 1. Создания пользователя **backup-user** 2. Обновление пакетов 3. Установка borgbackup На VM **client**: 1. Генерация ssh ключа 2. Генерируют пароль для шифрование бэкапов (и сохраняет в файле **pass**) 3. Инициализация borg сервера 4. Копирование скрипта для бэкапа 5. Настройка крон для запуска скрипта для бэкапа На VM **backup-server**: 1. Форматирует подлюченный hdd d ext4 2. Монтирует по пути /var/hdd-backup 3. Копирует публичный ключ для **backup-user** Готовый [ansible.yml](ansible.yml) ### Cоздание template_backup.sh Шаблон для создания бэкапов. При копирования ansile автоматически подставит пароль сгенерированный при инициализации borg. Скрипт выполняем следующие действия. 1. Создает бэкап каталога /etc 2. Проверяет, создался бэкап и делает соотвтсвующую запись в логи 3. Удаляет старые бэкапы Готовый [template_backup.sh](template_backup.sh) ### Проверка Запускаем vagrant ```bash alex@ubuntu-pc:~/Документы/27$ vagrant up Bringing machine 'client' up with 'virtualbox' provider... Bringing machine 'backup-server' up with 'virtualbox' provider... ==> client: Importing base box 'ubuntu/jammy64'... ==> client: Matching MAC address for NAT networking... ==> client: Checking if box 'ubuntu/jammy64' version '20241002.0.0' is up to date... ==> client: Setting the name of the VM: 27_client_1771777438146_29216 ==> client: Clearing any previously set network interfaces... ==> client: Preparing network interfaces based on configuration... client: Adapter 1: nat ... ... TASK [show pass] *************************************************************** ok: [client] => { "msg": "ВНИМАНИЕ!!! Сохраните сгенерированный пароль: PASSSSSS" } TASK [borg initialization] ***************************************************** changed: [client] TASK [create backup script] **************************************************** changed: [client] TASK [create cron] ************************************************************* changed: [client] PLAY RECAP ********************************************************************* backup-server : ok=12 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 client : ok=16 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ``` Обязательно сохраним пароль из задачи **show pass**! Ждем 5 минут, и проверим ```bash root@client:/opt# borg list backup-user@192.168.80.30:/var/hdd-backup/backup Enter passphrase for key ssh://backup-user@192.168.80.30/var/hdd-backup/backup: <<<<ТУТ_ВВОДИМ_ПАРОЛЬ_ИЗ_ФАЙЛА_PASS>>>> backup_dir_etc-2026.02.22_16:50:01 Sun, 2026-02-22 16:50:03 [307e46ddb5eae2d003e41869f328a0ff61a9bcf86df8d568279da9e81b816cb5] ``` Все готово!