Files
homework27/README.md
2026-02-22 20:04:43 +03:00

105 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Домашнее задание 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]
```
Все готово!