Files

54 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VPNaaS Neutron to Sprut
Инструмент для миграции 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 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) роутера
Если `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
```