1c50e9aa3c3a3def0f7052ffd5226da2157d6b5a
Домашнее задание 27
Резервное копирование
Для выполнение задания используется vagrant box Ubuntu 22.04
Создание Vagrantfile
Зададим следующие характеристики для VM
- CPU - 1
- Memory - 512mb
Для VM backup-server добавим дополнительный диск размером 2Gb
Только после того, как создасться VM backup-server запуститься provision через ansible.
Готовый Vagrantfile
Cоздание ansible.yml
Сценарий для Ansible будет выполнять следующие действия:
На всех VM:
- Создания пользователя backup-user
- Обновление пакетов
- Установка borgbackup
На VM client:
- Генерация ssh ключа
- Генерируют пароль для шифрование бэкапов (и сохраняет в файле pass)
- Инициализация borg сервера
- Копирование скрипта для бэкапа
- Настройка крон для запуска скрипта для бэкапа
На VM backup-server:
- Форматирует подлюченный hdd d ext4
- Монтирует по пути /var/hdd-backup
- Копирует публичный ключ для backup-user
Готовый ansible.yml
Cоздание template_backup.sh
Шаблон для создания бэкапов. При копирования ansile автоматически подставит пароль сгенерированный при инициализации borg.
Скрипт выполняем следующие действия.
- Создает бэкап каталога /etc
- Проверяет, создался бэкап и делает соотвтсвующую запись в логи
- Удаляет старые бэкапы
Готовый template_backup.sh
Проверка
Запускаем vagrant
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 минут, и проверим
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]
Все готово!
Description
Languages
Shell
100%