Подготовка Windows + WSL2
Подготовьте окружение до первой пары, чтобы обучение не превратилось в ожидание перезагрузок. Нужны Windows 11 или поддерживаемая конфигурация Windows 10 с WSL2, включённая аппаратная виртуализация и права на установку. Команды ниже различают PowerShell и Ubuntu. Если ноутбук управляется организацией, настройку выполняет её администратор; на паре работайте по двое на готовой машине.
1. Ubuntu в WSL2
PowerShell от имени администратора:
wsl --install -d Ubuntu-24.04
wsl --update
Перезагрузите Windows, запустите Ubuntu и создайте Linux-пользователя. Пароль вводится без отображения символов — это нормально. В PowerShell проверьте:
wsl -l -v
Ожидается Ubuntu-24.04 и VERSION 2. Если установлен WSL1, используйте официальный путь перехода; проверьте свободное место и сохраните работу заранее. Если команда установки показывает справку, проверьте wsl --list --online и состояние существующей установки, не удаляйте дистрибутив ради повторной попытки.
2. Инструменты внутри Ubuntu
sudo apt update
sudo apt install -y python3 python3-venv git curl unzip
mkdir -p ~/devops-course
cd ~/devops-course
cat /etc/os-release
uname -r
python3 --version
git --version
Скачайте лабораторный архив, затем скопируйте из Downloads Windows в Linux (имя пользователя Windows замените):
cp /mnt/c/Users/WINDOWS_USER/Downloads/lab.zip ~/devops-course/
cd ~/devops-course
unzip lab.zip
cd lab
python3 -m venv .venv
.venv/bin/python app.py
Во втором окне Ubuntu выполните запросы из lab/README.md. Ожидаются /healthz со status=ok и /predict со score=0.5 для hours=4. Остановите Ctrl+C. Репозиторий держите в /home, чтобы файловая работа соответствовала Linux. Не храните реальные секреты или данные студентов в упражнении.
3. systemd для занятия 9
ps -p 1 -o comm=
systemctl --user status --no-pager
В актуальной Ubuntu WSL systemd может быть включён по умолчанию. Если PID 1 не systemd, следуйте официальной инструкции Microsoft: обновите WSL, добавьте в существующий /etc/wsl.conf, сохраняя другие настройки:
[boot]
systemd=true
Затем сохраните все задачи WSL и в PowerShell выполните wsl --shutdown: команда остановит все текущие WSL-дистрибутивы. Снова откройте Ubuntu и проверьте PID 1. Пользовательская служба курса не обещает доступность после выключения ноутбука.
4. Docker перед ноябрём
Основной путь: установите Docker Desktop из официального источника, включите WSL2 backend и интеграцию Ubuntu в Settings → Resources → WSL Integration. Организация проверяет применимость условий лицензии Desktop. Не устанавливайте одновременно второй Docker Engine в ту же Ubuntu без осознанного выбора контекста.
В Ubuntu:
docker version
docker context show
docker run --rm hello-world
docker compose version
Ожидается наличие Client и Server. Если Server недоступен, запустите Desktop, проверьте WSL2, integration и context. Не лечите проблему sudo docker автоматически: это может обратиться к другой среде.
Запасной путь без Desktop: Docker Engine внутри Ubuntu WSL2 по официальной инструкции Ubuntu, с действующим systemd. Преподаватель выбирает этот путь заранее и проверяет daemon/Compose. Группа docker на Linux имеет широкие привилегии; добавление в неё — изменение полномочий пользователя, а не безобидная настройка. Не скачивайте случайные install-скрипты и не делайте curl | sudo bash из неизвестного источника.
5. Предварительное скачивание образов
Перед занятиями с плохим интернетом:
docker pull hello-world
docker pull alpine:3.22
docker pull python:3.12.12-slim
docker pull prom/prometheus:v3.5.0
docker pull grafana/grafana:12.2.0
cd ~/devops-course/lab
docker build -t studypulse:v1 .
Это фиксированные учебные версии, не обещание актуальности всех компонентов на будущую дату. Рабочие проекты требуют проверяемого обновления версий и digest. Grafana/Prometheus нужны только в декабре. На слабом ноутбуке используйте одну машину на пару студентов. Ориентир — 8 GiB RAM и 10–15 GiB свободного места с запасом для Docker/WSL; фактическая потребность зависит от существующей среды.
6. Первая диагностика
| Симптом | Что проверить |
|---|---|
| WSL installation failed | Виртуализация, версия Windows, права, официальная ошибка установки |
| Linux-команда не найдена | PowerShell или Ubuntu? Правильное окно терминала |
| Нет Docker Server | Desktop/daemon, WSL integration, context |
| Порт 8000 занят | Старый ручной Python/systemd/container; остановить только свой запуск |
| Permission denied | Пользователь, путь, права каталогов; не chmod 777 |
| Grafana не запускается | .env с GRAFANA_PASSWORD и правильный набор Compose-файлов |
| rate/p95 пустые | Target, несколько scrape, наличие запросов и окно времени |
Перед началом пары сдайте короткий паспорт: версии Ubuntu/WSL/Python/Docker, рабочая папка, успешный запрос healthz. Не публикуйте полный env, домашний адрес или пароль.