You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
9.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Руководство для преподавателя. Подготовка среды проведения лабораторных работ
Лабораторные проводятся на виртуальных машинах в системе виртуализации Proxmox. Задания выкладываются в публичный git репозиторий. Для получения новых заданий студенты первоначально скачивают их по ссылке командой `git clone`, а затем в начале каждого урок обновляют их командой `git pull`.
Будем считать, что `N` - количество студентов умноженное на `1.5`, округлённое в большую сторону. X - идентификатор студента от `1` до `N`.
Создайте `N` пользователей в Proxmox с именами `studX` (`stud1`, `stud2`, ...). Используйте Realm "Proxmox VE authentication server".
Загрузите образ `debian-11.4.0-amd64-netinst.iso` в Proxmox хранилище.
Для массового создания виртуальных машин рекомендуется использовать возможность Proxmox конвертации виртуальной машины в шаблон. Из шаблона копия создаётся на порядки быстрее по времени, чем при полном клонировании. Следуйте следующим шагам:
1. настройте машину с общими для всех копий настройками,
2. преобразуйте её в шаблон (template),
3. создайте клоны из шаблона и донастройте, если необходимо,
4. сделайте snapshot с именем `initial` основных машин, чтобы вы и студенты имели возможность отката до рабочего состояния.
Список шаблонов виртуальных машин:
- `stud0-tabularasa-template`
- `stud0-template`
- `stud0-net-[1-2]-template`
- `stud0-troublesome-[1-6]-template`
(TODO Написать скрипт для создания шаблонов.)
(TODO Написать скрипт для создания учётки и виртуалок для студента на основе шаблонов.)
При наличии нескольких дисков рекомендуется RAID оптимизирующий производительность. Неправильный raid или медленный тип диска может привести к существенному замедлению работы во время установки ОС или пакетов.
## 1. Подготовка виртуальной машины к занятиям `01`, `02`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`.
Создайте vlan с доступом в интернет. Например, `bond0.499` и мост `vmbr499` с параметрами:
- Bridge ports: `bond0.499`,
- VLAN aware: `false`,
- IPv4/CIDR: `10.160.179.254/24`,
- Gateway (IPv4): `10.160.179.1`.
До начала занятий создайте N виртуальных машин со следующими характеристиками:
- 1 сокет с 4 ядрами,
- 8 Гб оперативной памяти,
- 16 Гб дискового пространства.
Каждой виртуальной машине назначьте статический IPv4 адрес `10.160.179.10 + X` (`10.160.179.11`, `10.160.179.12`, ...). Используйте инструкцию из задания про настройку сети данного учебного модуля.
Установите минимальный дистрибутив debian на каждую. Установите пакеты:
```
apt install man-db ssh vim tree jq lsof git mc fail2ban
```
Удалите пакет `ifupdown`, так как настройка сети будет производится средствами `systemd-networkd`.
```
apt remove ifupdown
```
Пробросьте порты: `22`, `80`, `443`.
Организуйте удалённый доступ к машинам по `ssh` ключу. Запретите доступ по ssh через пароль.
## 2. Подготовка виртуальной машины к занятиям `00`.
Данные виртуальные машины предназначены для тренировки в установке debian в уроке `00`.
До начала занятий создайте N виртуальных машин со следующими характеристиками:
- 1 сокет с 4 ядрами,
- 8 Гб оперативной памяти,
- 32 Гб дискового пространства,
- сетевой интерфейс `vmbr499` с доступом в интернет.
Студенты могут назначить статический IPv4: `10.160.179.10 + N + X`, Gateway (IPv4): `10.160.179.1`.
Подключите cdrom с образом `debian-11.4.0-amd64-netinst.iso`.
## 3. Подготовка виртуальной машины к занятиям `03`.
Данные виртуальные машины предназначены для настройки сетевого интерфейса в конфигурациях `systemd` в уроке `03`. Студентам необходимо работать в индивидуальных vlan для настройки по DHCP и снижению вероятности ошибок при назначении статического адреса.
Создайте `N` vlan без доступа в интернет. Например, `bond0.X` и мост `vmbrX` с параметрами:
- Bridge ports: `bond0.X`,
- VLAN aware: `false`.
Создайте `N` виртуальных машин `studX-net1` и `N` виртуальных машин `studX-net2` для `vmbrX`. Удалите пакет `ifupdown`.
## 4. Подготовка виртуальной машины к занятиям `12`.
# TODO АВТОМАТИЗИРОВАТЬ
Данные виртуальные
Создайте `N` vlan без доступа в интернет: `bond0.N+X` и мост `vmbrN+X` с параметрами:
- Bridge ports: `bond0.N+X`,
- VLAN aware: `false`.
Создайте `N` виртуальных машин `troublesome-gwX`, играющих роль шлюза для `vmbrN+X`. Установите минимальный образ debian. Удалите пакет `ifupdown`. Каждой виртуальной машине назначьте добавьте два сетевых интерфейса. Для первого интерфейса назначьте IPv4 адрес `10.160.179.100 + X` (`10.160.179.101`, `10.160.179.102`, ...). Для второго интерфейса назначьте IPv4 адрес `192.168.0.1`.
Создайте виртуальную машину `troublesome`. Установите минимальный образ debian. Скопируйте скрипты, приведенные ниже в `/sbin/`. Превратите машину в шаблон Proxmox.
Для каждого из 6 заданий создайте виртуальную машину из шаблона `troublesome`: `troublesomeX-task1`, `troublesomeX-task2`, ..., `troublesomeX-task6`. Каждой виртуальной машине назначьте статический IPv4 адрес `192.168.0.1 + номер задания`. Для 6 задания настройте беспарольный доступ по ssh от пользователя stud к пользователю mike. Команда `ssh localhost -l mike` должна отработать без ввода пароля. Внесите неисправности, активируя скрипты. Превратите машины в шаблоны.
Создайте N виртуальных машин для каждого задания из шаблонов: `troublesomeX-task1`, `troublesomeX-task2`, ..., `troublesomeX-task6`.
Скрипты для внесения неисправностей для заданий.
#### 1.
```bash
#!/bin/bash
# task 1
systemctl disable systemd-networkd
systemctl stop systemd-networkd
```
#### 2.
```bash
#!/bin/bash
# task 2
sed 's/^Gateway=.*$//' -i /etc/systemd/network/ens18.network
networkctl reload
```
#### 3.
```bash
#!/bin/bash
# task 3
sed 's/DNS/#DNS/' -i /etc/systemd/resolved.conf
systemctl restart systemd-resolved
```
#### 4.
```bash
#!/bin/bash
# task 4
sed 's/192\.168/172\.16/' -i /etc/systemd/network/ens18.network
networkctl reload
```
#### 5.
```bash
#!/bin/bash
# task 5
# ping gateway
ping 192.168.0.1 -c 1 2> /dev/null 1> /dev/null
gateway_mac=$(arp -n | egrep '^192.168.0.1\s' | awk '{ print $3 }')
ip link set address "${gateway_mac}" dev ens18
```
Активируйте следующий сервис:
```bash
# /etc/systemd/system/network-problem.service
[Unit]
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/task5.sh
[Install]
WantedBy=multi-user.target
```
#### 6.
```bash
#!/bin/bash
# task 6
chmod 777 /home/stud/.ssh
```
## 5. Подготовка к экзамену
До начала занятий создайте N виртуальных машин со следующими характеристиками:
- 1 сокет с 4 ядрами,
- 8 Гб оперативной памяти,
- 6 Гб дискового пространства,
- сетевой интерфейс vmbr499.
Подключите cdrom с образом `debian-11.4.0-amd64-netinst.iso`.