add: documentation

This commit is contained in:
“Naeel”
2026-06-30 15:45:24 +04:00
parent 540c1f7293
commit ca276d200f
1055 changed files with 47294 additions and 0 deletions
@@ -0,0 +1,158 @@
# Анализ сбоя создания VM (f12vmbad.har)
## Операция: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`
### Статус операции
- **isSuccessful**: `false`
- **isInProgress**: `false`
- **Время выполнения**: 15:08:01 → 15:11:42 (≈3 минуты 40 секунд)
- **Причина**: Зависание на этапе **"Добавление правил FW"**
---
## Хронология выполнения (Stages)
### ✅ Этап 1: Подготовка среды
- **Статус**: Успешно
- **Длительность**: 13 секунд
- **Действия**:
- Определение ресурсной платформы: OK
- Подготовка операции: OK
- Определение переменных для работы с VM: OK
### ✅ Этап 2: Работа с сервисом (Cloud Director)
- **Статус**: Успешно
- **Длительность**: 192.8 секунды (~3 минуты)
- **Действия**:
- Подготовка конфигурационных файлов: OK
- Авторизация в Cloud Director: OK
- **Установка сервиса**: OK ✓
- **VM `ff12web01` успешно создана в Cloud Director**
### ❌ Этап 3: Работа с сервисом (Firewall Rules)
- **Статус**: **FAILED** ❌
- **Длительность**: 15.5 секунд (зависание)
- **Действие**: "Добавление правил FW [PROCESS]"
- **Проблема**:
- Процесс начался в 15:11:35.807
- `dtFinish`: `null` (не завершился)
- Сообщение осталось в статусе `[PROCESS]`
### ✅ Этап 4: Настройка vIP
- **Статус**: Успешно
- **Длительность**: 0.7 секунды
- **Действия**: Выделение VIP-адресов: OK
### ✅ Этап 5: Настройка DNS
- **Статус**: Успешно
- **Длительность**: 1 секунда
- **Действия**: Подготовка DNS записей: OK
---
## Корневая причина сбоя
### 🔥 Систематический сбой на этапе Firewall
**Факты**:
1. VM успешно создана в Cloud Director (VCD).
2. VIP-адреса выделены корректно.
3. DNS-записи настроены.
4. **Firewall Rules НЕ применены** → операция застопорилась и упала по таймауту.
5. Процесс завис именно на вызове **"Добавление правил FW [PROCESS]"** без финализации.
### Возможные причины
#### 1. Проблемы с доступом к NSX Manager/Edge Gateway
- При применении правил FW оркестратор обращается к NSX-T API.
- Возможен таймаут из-за сетевой недоступности или перегрузки NSX Manager.
- Отсутствие `errorLog` в ответе говорит о том, что запрос "завис", а не упал с явной ошибкой.
#### 2. Конфликт конфигурации Firewall
- VM `ff12web01` создана в vApp `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`.
- Если в этом vApp или Edge Gateway уже существуют противоречивые правила, новые правила могут не применяться.
- Возможна попытка создания дублирующих NAT/FW правил.
#### 3. Недостаточность прав или квот
- Пустое значение `accessIpList: ""` могло быть интерпретировано бэкендом как запрос на открытие доступа со всех адресов (`0.0.0.0/0`).
- Если в организации есть политики безопасности, запрещающие такие правила, запрос может быть заблокирован без явной ошибки.
#### 4. Анализ переданных параметров
**Все основные параметры корректны**:
- **vappUid**: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` ✓
- **vmName**: `ff12web01` ✓
- **CPU**: `1` ✓
- **RAM**: `1` GB ✓
- **osImage**: `Ubuntu_22-20G` ✓
- **userPublicKey**: Валидный SSH-ключ `ssh-ed25519 AAAAC3Nz...` ✓
- **userName**: `myuser` ✓
- **accessPortList**: `["22"]` (SSH) ✓
- **needEnableExternalIp**: `true` ✓
**Потенциально проблемные значения**:
1. **Пустые строки в опциональных полях**:
- **svcOperationCfsParamId 411** (вероятно `vmDisk`): `""` — лучше передавать `null` или число.
- **svcOperationCfsParamId 413** (вероятно `accessIpList`): `""` — ожидается JSON-массив типа `["0.0.0.0/0"]`.
- **svcOperationCfsParamId 415** (вероятно `cloudInit`): `""` — опционально.
2. **Значение "no-needed" (ID 412)**:
- Неясное назначение параметра. Возможно, это placeholder для неиспользуемого поля.
**Вывод**: Основные параметры валидны. Пустые строки в опциональных полях технически допустимы, но могут некорректно обрабатываться бэкендом.
---
## Рекомендации
### Немедленные действия для отладки
1. **Проверить логи NSX Manager**:
- Посмотреть, поступал ли запрос на создание FW правил в момент `15:11:35.807`.
- Если запрос отсутствует → проблема на стороне оркестратора (не дошел до NSX).
- Если запрос есть, но с ошибкой → причина в конфигурации или правах.
2. **Проверить текущее состояние Edge Gateway**:
- Посмотреть список правил FW для vApp `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`.
- Убедиться, что нет конфликтующих правил для VM `ff12web01`.
3. **Проверить доступность NSX Manager**:
- Убедиться, что NSX API отвечает на запросы.
- Проверить сетевую связность между Jenkins (оркестратор) и NSX Manager.
4. **Повторить создание с улучшенными параметрами**:
- Передавать `accessIpList` как JSON-массив: `["0.0.0.0/0"]` вместо пустой строки.
- Для `vmDisk` указать либо `null`, либо конкретное значение (например, `"10"` для 10 GB).
### Для Terraform Provider
1. **Добавить проверку статуса стадий**:
- Если `stage.dtFinish == null` и `duration > 30s` → считать операцию зависшей.
- Отдавать понятное сообщение: "VM создана, но Firewall не настроен".
2. **Повторная попытка при Firewall Timeout**:
- Если сбой на этапе "Добавление правил FW", попробовать `retry` с экспоненциальной задержкой.
- Добавить опцию `skip_firewall_on_timeout` для продолжения деплоя без FW.
3. **Валидация параметров перед отправкой**:
- Не передавать пустые строки для списков (`accessIpList`, `cloudInit`).
- Для числовых полей использовать либо валидное значение, либо `null`.
- Проверять формат JSON-массивов перед сериализацией.
4. **Расширенное логирование**:
- Записывать в лог полный JSON всех отправленных параметров.
- Логировать промежуточные статусы стадий для отладки таймаутов.
---
## Заключение
VM физически создана в Cloud Director, но из-за **таймаута на этапе применения Firewall Rules** ресурс считается неуспешно развернутым (`isSuccessful: false`).
**Основные подозреваемые**:
1. Недоступность NSX Manager или перегрузка API.
2. Конфликт правил FW в целевом Edge Gateway.
3. Пустые значения в параметрах (`accessIpList: ""`, `vmDisk: ""`), которые могли некорректно обработаться бэкендом.
Для точной диагностики необходимо проверить логи Jenkins (оркестратор) и NSX Manager на момент `15:11:35 → 15:11:42`.