# Задания

## 1. 
Установите Proxmox на две виртуальные машины Proxmox. Используйте образ диска `proxmox_7.2.1.iso`. 

Параметры виртуальных машин:
- объем памяти RAM 32ГБ,
- число ядер 8,
- объем жёсткого диска 32ГБ,
- сетевое устройство в vlan 15+X (подключенное к мосту vmbr15+X, без указания vlan тега), 
- IP из сети `192.168.1.0/24`, 
- шлюз `192.168.1.1`,
- любой общедоступный DNS,
- стандартный пароль для пользователя root,
- доменные имена `n[1-2].studX.myoffice.ru`.

Используйте утилиту `pveversion`, чтобы узнать версию Proxmox.

## 2.
Объедините узлы в Proxmox кластер. Используйте утилиту `pvecm` (документация утилиты `man pvecm`). Чтобы использовать доменные имена на данном этапе внесите их в `/etc/hosts` каждой машины.
```
root@n1 # pvecm create stud15-cluster
root@n1 # systemctl restart corosync
root@n1 # pvecm status
```

```
root@n2 # pvecm add n1.stud15.myoffice.ru
root@n2 # pvecm status
```

## 3.
Настройте доступ к веб-интерфейсу с помощью прокси сервера или туннелей. Прокси-машина должна иметь два сетевых интерфейса, каждый в своей vlan: 499 и 15+X. Первая vlan позволяет подключиться к прокси из сети интернет, вторая позволяет обмениваться данными между прокси и новым кластером Proxmox. 

Схема с 2 туннелями
```
Ноутбук --туннель--> (vmbr499) ens18 studX.myoffice.ru ens19 (vmbr30) <--туннель-- ens18 (vmbr30) n1.studX.myoffice.ru[192.168.1.200] (vlan 15+X)

n1 $ ssh -R 8006:localhost:8006 stud@studX.myoffice.ru
notebook $ ssh -L 8006:localhost:8006 stud@studX.myoffice.ru
```
Параметры `-L` и `-R` обозначают точку входа, локальную или на машине, к который подключается ssh. Пакеты отправленные на точку входа будут переданы через туннель, а затем направлены на адрес и порт, указанные после первого порта 8006.

Возможен более простой вариант с одним туннелем:
```
Ноутбук --туннель--> (vmbr499) ens18 studX.myoffice.ru ens19 (vmbr30) ------> ens18 (vmbr30) n1.studX.myoffice.ru[192.168.1.200] 
notebook $ ssh -L 8006:192.168.1.200:8006 stud@studX.myoffice.ru
```

Пример настройки прокси сервера nginx. 
```
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        return 301 https://$host$request_uri;
}
server {
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/stud15.myoffice.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/stud15.myoffice.ru/privkey.pem;
        ssl_verify_client off;
        server_name _;

        location / {
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass https://192.168.1.200:8006;
        }
        location /nginx_ha {
              rewrite ^/nginx_ha(.*)$ $1 break;
              proxy_pass http://10.160.179.183:80;
        }
}
```
Настроено перенаправление с 80 порта на 443, letsencrypt сертификаты, отключена проверка сертификатов для проксируемого сервера (в новом proxmox используются самоподписанные сертификаты на текущий момент). В локации `/` настроено проксирование на `n1.stud15.myoffice.ru`, а также добавление заголовков `Upgrade` и `Connection` для переключения с протокола http на websocket при необходимости (http://nginx.org/en/docs/http/websocket.html). Таким образом узел нового Proxmox кластера доступен по адресу `https://stud15.myoffice.ru/`. Сервер из задания `03_nginx_ha` доступен при обращении к адресу `https://stud15.myoffice.ru/nginx_ha`.

## 4.
Создайте виртуальную машину в новом Proxmox. Скачайте образ `Core` проекта `Tiny Core Linux` http://tinycorelinux.net/downloads.html.

## 5.
Сделать резервное копирование (Backup) виртуальной машины из консоли или в терминале командой `vzdump` (документация утилиты `man vzdump`). Выберите тип режима `--mode stop` без сжатия `--compress 0`. Извлеките образ из архивного формата vma (https://pve.proxmox.com/wiki/VMA)
```
vma extract -v /var/lib/vz/dump/vzdump-qemu-100-2022_10_28-17_24_31.vma /tmp/exported_vm_100_archive
``` 

Сконвертируйте образ диска в формат VDI утилитой `qemu-img`. Пример команды
```
$ qemu-img convert -f raw -O vdi /tmp/exported_vm_100_archive/disk-drive-scsi0.raw /tmp/exported_vm_100.vdi
```

Объем пространства, занимаемый образом, можно определить с помощью команд `qemu-img info` или `ls -ls`;

Предупреждение: Никогда не используйте `qemu-img` для изменения образов, используемых запущенной виртуальной машиной или любым другим процессом; это может привести к уничтожению образа. Кроме того, имейте в виду, что запрос образа, которое изменяется другим процессом, может привести к несогласованному состоянию.

## 6.
Для восстановления из бекапа используется утилита `qmrestore` (`man qmrestore`). Восстановите из бэкапа виртуальную машину под другим идентификатором.

## 7.
Сделайте снимок (Snapshot) виртуальной машины командой `qm snapshot`. Найдите снимки в веб-интерфейсе. В каком виде хранятся снимки на диске?

## 8.
Создайте новый мост `Linux Bridge` в настройках узла `n2`.  

## 9.
Проведите миграцию виртуальной машины с одного узла на другой командой `qm migrate` или из веб-интерфейса.

## 10.
Увеличить объем диска виртуальной машины командой `qm resize`.

## 11.
Посмотрите параметры виртуальной машины в терминале утилитой `qm config`.

## 12.
Настроите перезапуск виртуальной машины в случае отказа.

## 13.
Выведите список виртуальных машин в терминале.

## 14.
Создайте новых пользователей Proxmox `mike` и `vera` в Realm `Proxmox VE authentication server`. Установите пользователю сложный пароль. В настройках `Datacenter -> Permissions` дайте пользователю `mike` права администратора `Administrator` на директорию `/vms`.

Установите пользователю `vera` права пользователя виртуальными машинами `PVEVMUser` на директорию `/vms` в терминале узла утилитой `pveum` (Proxmox VE User Manager).
```
pveum acl modify /vms -user vera@pve -role PVEVMUser
```

## 15.
Создайте пользователя `serg` в Realm `Proxmox VE authentication server`. Установите пользователю сложный пароль. Создайте ресурсный пул для этого пользователя. Назначьте в настройках пула для `serg` права `PVEVMAdmin`, `PVEPoolUser`. Убедитесь, что `serg` может создавать виртуальные машины в своём пуле.

## 16.
Попробуйте утилиту `pveperf` для анализа производительности узла.

## Релевантные источники
- https://pve.proxmox.com/wiki/Command_line_tools
- https://pve.proxmox.com/wiki/Backup_and_Restore
- https://pve.proxmox.com/wiki/User_Management