Подготовка 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, домашний адрес или пароль.