**Language / Язык:** [English](../seed-profiles.md) | [Русский](seed-profiles.md) # Профили seed Seed **атомарно** заменяет инвентарь vSphere, используя детерминированные MOID, чтобы лаборатории были воспроизводимыми. Определения находятся в [`app/vsphere/profiles.py`](../../app/vsphere/profiles.py). ```bash make seed # по умолчанию: large (10 хостов / 1000 ВМ) VSPHERE_PROFILE=small make seed ``` ## Профили | Профиль | Содержимое | |---|---| | `small` | 3 хоста ESXi, 2 datastore, 2 сети, один datacenter/cluster/resource-pool и пять именованных ВМ: `web-01`, `web-02`, `db-01`, `app-01`, `jumpbox` (смешанные состояния питания). Используется unit/integration-тестами. | | `large` (по умолчанию) | Настраиваемое число хостов/ВМ (`SEED_VSPHERE_LARGE_HOSTS` по умолчанию 10, `SEED_VSPHERE_LARGE_VMS` по умолчанию 1000), 4 datastore, 4 сети/portgroup, `VmwareDistributedVirtualSwitch`, папки ВМ production/staging/templates. Первые пять ВМ совпадают по именам с `small` для стабильности кулинарных книг; остальные генерируются (префиксы ролей `web-`, `app-`, `db-`, `cache-`, `batch-`, `jump-`, `ci-`, `mon-`, `log-`, `ml-`). | | `demo-cluster` | `large` с 20 хостами / 1000 ВМ — набор данных в форме предприятия для демо UI. | Каждый профиль также загружает четыре лабораторные учётные записи, права, привязанные к ролям (см. [Авторизация](domains/authz.md)), и — там, где существуют таблицы платформы — стартовую content library, категории/теги тегирования и метаданные файлов datastore (`seed_platform_extras`). ## Примеры ```bash make seed # large, 10 хостов / 1000 ВМ VSPHERE_PROFILE=small make seed VSPHERE_PROFILE=demo-cluster make seed VSPHERE_PROFILE=large VSPHERE_HOSTS=20 VSPHERE_VMS=5000 make seed ``` Либо запустите CLI seed напрямую с базовыми переменными окружения (например, из скрипта без `make` или на шаге CI): ```bash SEED_VSPHERE_PROFILE=small \ docker compose run --rm --entrypoint python simulator -m app.simulation.seed_cli ``` ## Форма топологии Каждый профиль строит один и тот же скелет (папка `Datacenters` → `Datacenter` → подпапки host/vm/datastore/network → один `ClusterComputeResource` + `ResourcePool`), затем масштабирует хосты, datastore, portgroup и ВМ. MOID ВМ имеют вид `vm-{100+n}`; MOID хостов — `host-{10+n}`; каждая ВМ несёт одинаковую форму оборудования, используемую как REST (`hardware/*`), так и SOAP (`VirtualMachineConfigInfo`) ответами — NIC, диски, CD-ROM, порядок загрузки и синтетический guest IP/файловая система. ## Демо-кластер через UI Интерактивная консоль может загружать демо-набор данных и делать reseed по запросу: - `POST /ui/api/demo/load` — загружает `demo-cluster` - `POST /ui/api/demo/unload` — очищает состояние, созданное через API, затем загружает `small` - `GET /ui/api/demo/state` - `POST /ui/api/vsphere/seed?profile=small|large|demo-cluster` — reseed любого профиля Эти вспомогательные эндпоинты UI ориентированы на разработку и сегодня не имеют отдельной аутентификации. Считайте их только лабораторными органами управления. ## Reseed в сравнении с состоянием клиентов Terraform, Pulumi и Ansible могут по-прежнему хранить состояние ресурсов после reseed (MOID и имена ВМ могут измениться). Выполните refresh или destroy/recreate внешнего состояния после замены инвентаря PostgreSQL. См. [Эксплуатация](operations.md) и [Клиенты](clients.md).