Commit e27dce06 authored by Vitaly Lipatov's avatar Vitaly Lipatov

plans: add bugzilla upgrade plan and PVE SPNEGO notes

parent 4c1ba069
---
name: bugzilla-5.9-deps
description: "Зависимости для Bugzilla 5.9.1 на ALT: что есть в репо, что нужно собрать. 3 модуля отсутствуют в ALT."
metadata:
type: plan
created: 2026-07-26
---
# Зависимости Bugzilla 5.9.1 на ALT p10
## Контейнер CT 944 (bugzilla-test), 192.168.0.251
## Установлено через epm (~230 пакетов)
Список основных (полный в логе `epm install`):
```
perl-Class-XSAccessor perl-Crypt-CBC perl-Crypt-DES perl-Crypt-DES_EDE3
perl-DBIx-Class perl-HTML-Escape perl-Mojolicious perl-JSON-Validator
perl-Net-DNS perl-Regexp-Common perl-Type-Tiny perl-IPC-System-Simple
perl-Text-Diff perl-Tie-IxHash perl-Scope-Guard perl-Mozilla-CA
perl-File-MimeInfo perl-LWP-Protocol-https perl-LWP-UserAgent-Determined
perl-PerlX-Maybe perl-Sereal perl-URI-Escape-XS perl-Devel-NYTProf
perl-Daemon-Generic perl-Future perl-IO-Async
```
Также установлено ранее для 5.2:
```
perl-Memoize perl-DBIx-Connector perl-GD perl-Chart perl-Template
perl-Email-Sender perl-Email-Address-XS perl-ldap perl-Cache-Memcached
perl-File-Copy-Recursive perl-DBD-MariaDB perl-CPAN perl-autodie
```
## НЕТ в ALT — нужно собрать (3 модуля)
| Модуль | Версия | Где используется | Примечание |
|---|---|---|---|
| **perl-DBIx-Class-Helpers** | ≥2.034002 | DBIx::Class хелперы | Нет в ALT |
| **perl-FFI-Platypus** | any | Bugzilla::Markdown::GFM (GitHub Flavored Markdown) | Нет в ALT |
| **perl-MojoX-Log-Log4perl** | ≥0.04 | Bugzilla::App (логирование Mojolicious) | Нет в ALT |
## Установлено из Sisyphus
| Пакет | Версия | Примечание |
|---|---|---|
| perl-MooX-StrictConstructor | 0.013 | Из Sisyphus |
| perl-Mojo-JWT | 0.12 | Из Sisyphus (обновил Perl 5.34→5.38!) |
| perl-DBIx-Class | 0.082843 | **p10** версия (pin), Sisyphus blocked на DBD/Pg dep chain |
⚠️ **Важно:** установка из Sisyphus обновила Perl с 5.34 до 5.38. Пришлось переустанавливать все perl-* пакеты.
## Также были проблемы (но решены)
- `perl-Text-CSV-XS` — был `perl-Text-CSV_XS` (подчёркивание вместо дефиса)
- `perl-DBIx-Class` из Sisyphus требует `perl-DBD-Pg` (нет в p10) — **РЕШЕНО**: `epm install perl-DBIx-Class=0.082843-alt1` (p10 версия)
## Для сборки пакетов
3 модуля — стандартные CPAN-дистрибутивы. Собрать через gear:
```bash
gear-perl2rpm DBIx-Class-Helpers
gear-perl2rpm FFI-Platypus
gear-perl2rpm MojoX-Log-Log4perl
```
## Статус тестового стенда
- Контейнер CT 944 на gefest, 192.168.0.251, ALT p10 (→Sisyphus после установки пакетов)
- БД MariaDB 10.6.27 локально, копия прод `eter_bugs` (19140 багов)
- Bugzilla 5.9.1 код в `/var/www/bugs.etersoft.ru-test/` (обновлён поверх 5.2)
- Apache на http://bugs.pr.etersoft.ru/ (DocumentRoot = `/var/www/bugs.etersoft.ru-test/`)
- Ветка `version-5.9` на gitlab: `git@gitlab.eterfund.ru:etersoft/bugzilla.git`
- **Блокер:** 3 пакета не собраны → `checksetup.pl` не проходит
## Правила (запомнить!)
- **Пакеты** — только `epm install`, не `apt-get`
- **Sisyphus**`epm install sisyphus/perl-PackageName`
- **CPAN** — никогда напрямую
- **Прод** — только чтение, без изменений без команды
---
name: bugzilla-upgrade
description: "План обновления Bugzilla 5.2.0 5.9.1: тестовый стенд, миграция БД, проверка фич. Уроки RT: runtime-зависимости, неинтерактивный DB upgrade, кэш-очистка."
metadata:
type: plan
created: 2026-07-24
---
# План обновления Bugzilla (bugs.etersoft.ru)
## Текущее состояние
- **Bugzilla 5.2.0** (ручная установка, НЕ rpm)
- **Сервер:** bugs.etersoft.ru (91.232.225.24), nginx → Apache httpd2 (mod_perl) на 127.0.0.1:8080
- **БД:** MySQL 8.0 на mysql.office.etersoft.ru (10.20.30.191), БД `eter_bugs`, юзер `eter_bugs`
- **Каталог:** `/var/www/bugs.etersoft.ru` (root:apache2, 0750)
- **Расширения:** BmpConvert, Example, MoreBugUrl, OldBugMove, Voting
- **Кастомизация:** etersoft-layer (шаблоны, JS: bugsWatcher.js, timer.js, focusManager.js)
- **Кэш:** memcached 192.168.3.188:11211
## Целевая версия
**Bugzilla 5.9.1** (Trunk, активная разработка). Альтернатива — 5.3.3 (Deprecated Trunk, стабильнее).
⚠️ 5.2 → 5.9.1 — мажорный апгрейд (DB schema changes, новые фичи, изменения в шаблонах).
## Уроки из обновления RT (применить!)
1. **Тестовый стенд ОБЯЗАТЕЛЕН** — клон контейнера, отдельная БД, не трогать прод
2. **Runtime-зависимости**`checksetup.pl` может не проверить все Perl-модули; тестировать КАЖДУЮ фичу end-to-end
3. **Неинтерактивный DB upgrade** —避免 `yes|` зацикливания; использовать `--noninteractive` если есть
4. **Кэш-очистка** — после мажорного апгрейда чистить все кэши (модели, шаблоны, memcached)
5. **Снапшоты** — перед каждым шагом `pct snapshot`, чтобы откатиться
6. **Логи** — проверять `error.log`, `rt.log` (для Bugzilla — apache error log + bugzilla logs)
## Шаги
### 1. Подготовка тестового контейнера
- Клонировать существующий CT (или создать новый ALT p11)
- Установить зависимости Bugzilla 5.9.1 (Perl, Apache, модули)
- Сеть: 10.20.30.x (DMZ), тестовый домен `bugs-test.office.etersoft.ru`
```bash
# На PVE (border или gefest)
pct clone <DONOR_VMID> --name bugzilla-test --pool Testing
# Или создать новый
pct create <VMID> local:vztmpl/alt-p11-x86_64.tar.gz --hostname bugzilla-test --storage local-lvm
```
### 2. Установка Bugzilla 5.9.1
```bash
# Скачать Bugzilla 5.9.1
cd /var/www
wget https://github.com/bugzilla/bugzilla/archive/refs/heads/5.9.tar.gz
tar xzf 5.9.tar.gz
mv bugzilla-5.9 bugs.etersoft.ru-test
# Установить зависимости
cd bugs.etersoft.ru-test
./checksetup.pl --check-modules
# Установить недостающие Perl-модули через epm
```
### 3. Миграция БД
- Дамп прод-БД: `mysqldump -h mysql.office.etersoft.ru -u eter_bugs -p eter_bugs > bugzilla_dump.sql`
- Создать тестовую БД на mysql.office.etersoft.ru (или локально)
- Залить дамп: `mysql -u eter_bugs -p eter_bugs_test < bugzilla_dump.sql`
- Настроить `localconfig` на тестовую БД
```bash
# Дамп прод-БД (ОСТОРОЖНО, только чтение!)
ssh root@bugs.etersoft.ru "mysqldump -h 10.20.30.191 -u eter_bugs -p$(grep '\$db_pass' /var/www/bugs.etersoft.ru/data/localconfig | cut -d\" -f2) eter_bugs > /tmp/bugzilla_dump.sql"
# Создать тестовую БД
ssh root@mysql.office.etersoft.ru "mysql -e 'CREATE DATABASE eter_bugs_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'"
ssh root@mysql.office.etersoft.ru "mysql eter_bugs_test < /tmp/bugzilla_dump.sql"
```
### 4. Конфигурация тестового экземпляра
- Скопировать `data/params.json` из прод-версии
- Обновить `localconfig`:
- `$db_name = 'eter_bugs_test'`
- `$webservergroup = 'apache2'`
- `$index_html = 0`
- Скопировать расширения и кастомные шаблоны
### 5. Запуск checksetup.pl (DB schema upgrade)
```bash
cd /var/www/bugs.etersoft.ru-test
./checksetup.pl
```
⚠️ **Ожидаемые проблемы:**
- DB schema changes между 5.2 и 5.9.1
- Новые обязательные поля
- Изменения в таблицах
- checksetup.pl может потребовать интерактивного ввода
**Неинтерактивный запуск (если поддерживает):**
```bash
./checksetup.pl --noninteractive
```
### 6. Проверка фич (чек-лист из уроков RT)
Прокачать end-to-end каждую фичу:
- [ ] **Web UI** — логин, просмотр бага, создание, редактирование
- [ ] **REST API**`/rest/bug?id=X` с token и без
- [ ] **Расширения** — каждое расширение отдельно:
- [ ] BmpConvert
- [ ] MoreBugUrl
- [ ] OldBugMove
- [ ] Voting
- [ ] **Кастомные шаблоны** — etersoft-layer (bugswatcher.html.tmpl, timersplash.html.tmpl)
- [ ] **bugsWatcher.js** — worker-клиент
- [ ] **Почта** — отправка уведомлений
- [ ] **Поиск** — buglist.cgi, saved searches
- [ ] **Вложения** — загрузка, просмотр
- [ ] **Группы** — Etersoft insider group, права доступа
### 7. Проверка логов
```bash
# Apache error log
tail -f /var/log/httpd2/error_log
# Bugzilla logs
tail -f /var/www/bugs.etersoft.ru-test/data/errorlog
# nginx logs
tail -f /var/log/nginx/error.log
```
### 8. Сравнение с продом
- Сравнить количество багов в тестовой и продовой БД
- Проверить ключевые баги (примеры из bugs-watcher)
- Проверить REST API ответы (сравнить формат JSON)
## Риски и митигация
| Риск | Митигация |
|---|---|
| Несовместимость Perl-модулей | Проверить `checksetup.pl --check-modules` заранее |
| Изменения в REST API формате | Сравнить ответы 5.2 и 5.9.1 |
| Потеря кастомных шаблонов | Бэкап etersoft-layer перед обновлением |
| Новые зависимости | `epm search` для ALT-пакетов, girar-сборка при необходимости |
| Долгий DB upgrade | Терпение, мониторить `SHOW PROCESSLIST` |
## Откат
- Снапшот контейнера перед каждым шагом
- Дамп БД перед миграцией
- Бэкап `/var/www/bugs.etersoft.ru` (data/, extensions/, template/en/default/etersoft/)
## Следующие шаги (после успешного теста)
1. Запланировать окно обслуживания для прод-обновления
2. Дамп прод-БД
3. Обновить Bugzilla на прод-сервере
4. Проверить все фичи
5. Обновить документацию в bugzilla.md
## Связанные
- [[reference_mysql_servers]] — MySQL серверы
- [[bugzilla.md]] — текущая документация
- [[lesson_rt6_runtime_deps_missed]] — урок: runtime-зависимости
- [[lesson_rt_setup_database_noninteractive]] — урок: неинтерактивный DB upgrade
- [[lesson_rt_upgrade_clear_mason_cache]] — урок: кэш-очистка
---
name: project_pve_kerberos_spnego_gefest
description: PVE на gefest — добавить настоящий Kerberos SSO (SPNEGO) для веб-логина; пользователь настраивает сам, потом проверить
metadata:
type: project
---
**Задача:** включить настоящий Kerberos SSO (SPNEGO/GSSAPI) автовход в веб-морду PVE на **gefest** (192.168.0.13, кластер MIAC). Пользователь (Vitaly) настраивает сам; моя роль — **проверить после**.
**Контекст (состояние на 2026-07-24):**
- AD = **ETERSOFT.RU**, DC = dc.etersoft.ru (10.20.30.20), Kerberos :88, LDAP :389 (SRV-записи есть).
- gefest **уже в AD через winbind** (`realm list`: `client-software: winbind`, `login-formats: ETERSOFT\%U`), есть `/etc/krb5.keytab`. sssd тоже active/enabled (гибрид/legacy).
- В PVE сейчас realm только `pam` + `pve`. Доменные юзеры сидят как `user@pam` (aalyaev@pam, lav@pam …) — `pam` уже проверяет пароли по AD (PAM→winbind→Kerberos). Т.е. AD-аутентификация УЖЕ работает, просто не как SSO.
- **Важно:** PVE из коробки НЕ поддерживает SPNEGO в web UI → настоящий SSO требует reverse-proxy (nginx/apache + GSSAPI) спереди PVE, либо иной обвязки. Уточнить у пользователя архитектуру когда скажет «готово».
**Как проверять (когда пользователь попросит):**
1. У клиента валидный TGT: `klist` (на lav/builder64 — `kinit lav@ETERSOFT.RU`).
2. `curl --negotiate -u : http(s)://<pve-proxy-url>/` — должен вернуть ответ без падения в 401/логин-форму.
3. Браузер: `network.negotiate-auth.trusted-uris` (Firefox) / group policy (Chromium) на хост PVE-прокси.
4. Падение в форму ввода пароля = SSO НЕ работает (откат на обычную аутентификацию).
5. Уточнить у пользователя: какой URL/порт прокси, на каком хосте он крутится (gefest? отдельный контейнер?), доступ снаружи или только office-LAN.
Связано: [[reference_create_lxc_container_pve]], [[feedback_test_servers_on_dmz]].
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment