Files
VPNaaS-Migrator/README.md
T

54 lines
3.7 KiB
Markdown
Raw Normal View History

2026-07-21 15:05:52 +03:00
# VPNaaS-миграция: Neutron → Sprut (`ipsec_migrator`)
2026-07-21 15:15:52 +03:00
Инструмент для миграции VPNaaS (IPsec site-to-site) с Neutron-роутера OpenStack на «продвинутый» роутер (DC Router) в SDN **Sprut**.
2026-07-21 15:05:52 +03:00
2026-07-21 15:15:52 +03:00
Каждый Neutron-роутер из входного CSV сопоставлен с advanced-роутером в Sprut. Переносятся все IPsec-туннели, IKE/IPsec policy и endpoint groups, связанные с этим Neutron-роутером; объекты других роутеров того же OpenStack-проекта не затрагиваются.
2026-07-21 15:05:52 +03:00
## Режимы запуска
### 1. Полный прогон (аудит + настройка Sprut)
```bash
python3 -m ipsec_migrator <input.csv> [output.json] [--dry-run]
```
Выполняет всё последовательно: аудит конфигурации Neutron (STAGE 1) → сбор существующих объектов в Sprut (STAGE 2) → создание недостающих объектов и site connection'ов (STAGE 34). `output.json` необязателен, по умолчанию — `vpnaas_audit_<YYYYmmdd_HHMMSS>.json` в текущей директории.
### 2. Только аудит (без обращений к Sprut на запись)
```bash
python3 -m ipsec_migrator --audit-only <input.csv> [output.json]
```
Выполняет только STAGE 1: проверяет, что Neutron- и advanced-роутеры существуют, собирает полную конфигурацию VPNaaS из Neutron и пишет её в JSON-файл. STAGE 2–4 (создание объектов в Sprut) не запускаются — скрипт завершается сразу после записи аудита.
### 3. Dry-run по ранее собранному аудиту
```bash
python3 -m ipsec_migrator --from-audit <audit.json> --dry-run
```
Пропускает повторный опрос OpenStack: все данные (IKE/IPsec policy, endpoint groups, VPN service, site connections) берутся из ранее сохранённого `audit.json`. Заново получает Keystone-токен и перепроверяет, что advanced-роутеры из аудита всё ещё существуют в Sprut (аудит мог быть сделан заранее). Дальше выполняются STAGE 2–4 в режиме симуляции: `GET`-запросы к Sprut выполняются по-настоящему (для сверки, что уже существует), но ни один объект не создаётся — вместо `POST` в лог пишется, что было бы отправлено (с маскированным PSK).
### 4. Реальная настройка продвинутого роутера по аудиту
```bash
python3 -m ipsec_migrator --from-audit <audit.json>
```
**Рекомендуемый порядок для боевого прогона:** `--audit-only` → ревью получившегося `audit.json``--from-audit` (без `--dry-run`). Так реальное создание объектов в Sprut — отдельный, осознанный шаг после проверки того, что именно будет создано.
### Авто-создание целевого (advanced) роутера
2026-07-21 15:15:52 +03:00
Если `advanced_router_id` пуст, порт сам создаёт DC Router в Sprut.
2026-07-21 15:05:52 +03:00
В `input.csv` для порта вторая колонка (`advanced_router_id`) может быть
пустой:
```
neutron_router_id1,advanced_router_id1
neutron_router_id2,,MS1,standard
neutron_router_id3
```