54 lines
3.7 KiB
Markdown
54 lines
3.7 KiB
Markdown
# VPNaaS-миграция: Neutron → Sprut (`ipsec_migrator`)
|
||
|
||
Инструмент для миграции VPNaaS (IPsec site-to-site) с Neutron-роутера OpenStack на «продвинутый» роутер (DC Router) в SDN **Sprut**.
|
||
|
||
Каждый Neutron-роутер из входного CSV сопоставлен с advanced-роутером в Sprut. Переносятся все IPsec-туннели, IKE/IPsec policy и endpoint groups, связанные с этим Neutron-роутером; объекты других роутеров того же OpenStack-проекта не затрагиваются.
|
||
|
||
## Режимы запуска
|
||
|
||
### 1. Полный прогон (аудит + настройка Sprut)
|
||
|
||
```bash
|
||
python3 -m ipsec_migrator <input.csv> [output.json] [--dry-run]
|
||
```
|
||
|
||
Выполняет всё последовательно: аудит конфигурации Neutron (STAGE 1) → сбор существующих объектов в Sprut (STAGE 2) → создание недостающих объектов и site connection'ов (STAGE 3–4). `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) роутера
|
||
|
||
Если `advanced_router_id` пуст, порт сам создаёт DC Router в Sprut.
|
||
|
||
В `input.csv` для порта вторая колонка (`advanced_router_id`) может быть
|
||
пустой:
|
||
|
||
```
|
||
neutron_router_id1,advanced_router_id1
|
||
neutron_router_id2,,MS1,standard
|
||
neutron_router_id3
|
||
```
|
||
|
||
|