131e2e63d2
Record offline 161 passed, green test-vsphere probes, and full pulumi-tests 7/7 with REST matrix 1987/1987 (critical=0); note the Terraform cookbook binary mismatch separately.
154 lines
7.0 KiB
Markdown
154 lines
7.0 KiB
Markdown
**Language / Язык:** [English](../operations.md) | [Русский](operations.md)
|
||
|
||
# Эксплуатация
|
||
|
||
## Команды day-2
|
||
|
||
```bash
|
||
make up # запуск стека
|
||
make down # остановка стека
|
||
make restart
|
||
make logs
|
||
make dev # foreground-workflow, ориентированный на reload
|
||
make db-migrate # идемпотентные миграции
|
||
make seed # атомарный reseed (SEED_VSPHERE_PROFILE=large по умолчанию)
|
||
make shell # интерактивный контейнер с инструментами
|
||
```
|
||
|
||
## Миграции
|
||
|
||
Упорядоченные SQL-файлы применяются транзакционно и записывают контрольные
|
||
суммы SHA-256. Повторный запуск `make db-migrate` безопасен. Изменение уже
|
||
применённой миграции отклоняется. `/health/ready` остаётся недоступным, пока
|
||
не появится последняя упакованная миграция.
|
||
|
||
## Reseed
|
||
|
||
```bash
|
||
make seed # large (по умолчанию)
|
||
VSPHERE_PROFILE=small make seed
|
||
VSPHERE_PROFILE=demo-cluster make seed
|
||
```
|
||
|
||
Reseed атомарно заменяет инвентарь в PostgreSQL. Состояние внешней
|
||
автоматизации (файлы состояния Terraform, стеки Pulumi, инвентари Ansible,
|
||
кодирующие MOID/имена ВМ) может после этого разойтись — обновите или
|
||
пересоздайте эти внешние каналы. См. [Профили seed](seed-profiles.md).
|
||
|
||
## Восстановление workers
|
||
|
||
CIS task workers используют аренды PostgreSQL (`FOR UPDATE SKIP LOCKED`).
|
||
После сбоя или перезапуска просроченные аренды переиспользуются, и
|
||
незавершённая работа безопасно возобновляется. Настраиваемые параметры:
|
||
`TASK_WORKER_CONCURRENCY`, `TASK_LEASE_SECONDS`, `SIMULATION_TIME_SCALE`.
|
||
|
||
## Изменение мажора каталога по умолчанию
|
||
|
||
1. Мажор каталога по умолчанию — **9** (поверхность 8.0 U2 / Automation 9.1)
|
||
при холодном старте; это не ограничивает таблицу маршрутов runtime (см.
|
||
[Версии API](api-versions.md)).
|
||
2. Используйте «Apply as runtime» в Web UI или
|
||
`POST /ui/api/contract/apply?major=N`, чтобы переключить мажор каталога
|
||
локально для процесса, для целей просмотра/evidence.
|
||
|
||
## Резервное копирование состояния лаборатории
|
||
|
||
PostgreSQL — это система записи (system of record). Используйте обычные
|
||
backup/restore для Postgres (`pg_dump` / снимки томов), если нужно сохранить
|
||
seeded-лабораторию. Контейнеры приложения одноразовые, пока сохраняется том
|
||
базы данных.
|
||
|
||
## Публикация в Docker Hub
|
||
|
||
`make release` собирает образ **runtime** (build target `runtime`, а не
|
||
локальный bind-mounted образ `dev`) и публикует его в Docker Hub:
|
||
|
||
```bash
|
||
docker login # один раз; учётная запись должна владеть или иметь права push в DOCKERHUB_USER
|
||
make release
|
||
```
|
||
|
||
Значения по умолчанию:
|
||
|
||
| Переменная | По умолчанию | Значение |
|
||
|---|---|---|
|
||
| `DOCKERHUB_USER` | `inecs` | Namespace/организация Docker Hub |
|
||
| `IMAGE_NAME` | `vmware-api-simulator` | Имя репозитория |
|
||
| `VERSION` | из `pyproject.toml` | Тег образа |
|
||
| `PUSH_LATEST` | `1` | Также помечать/публиковать `:latest` |
|
||
|
||
Примеры:
|
||
|
||
```bash
|
||
make release
|
||
make release VERSION=0.2.0
|
||
make release DOCKERHUB_USER=myorg PUSH_LATEST=0
|
||
make release-build # локальная сборка/тегирование без публикации
|
||
```
|
||
|
||
Опубликованные теги:
|
||
|
||
- `inecs/vmware-api-simulator:<version>`
|
||
- `inecs/vmware-api-simulator:latest` (если не задано `PUSH_LATEST=0`)
|
||
|
||
## Быстрый старт с опубликованным compose-файлом
|
||
|
||
[`docker-compose.release.yml`](../../docker-compose.release.yml) скачивает
|
||
runtime-образ из Hub и запускает PostgreSQL + migrate + симулятор + HTTPS
|
||
gateway:
|
||
|
||
```bash
|
||
docker compose -f docker-compose.release.yml up -d
|
||
docker compose -f docker-compose.release.yml run --rm --entrypoint python \
|
||
simulator -m app.simulation.seed_cli
|
||
|
||
curl -sk https://localhost/health/ready
|
||
open https://localhost/
|
||
```
|
||
|
||
Вспомогательные команды из git checkout:
|
||
|
||
```bash
|
||
make release-up
|
||
make release-seed PROFILE=small
|
||
make release-down
|
||
```
|
||
|
||
Полезные переопределения:
|
||
|
||
| Переменная | По умолчанию | Значение |
|
||
|---|---|---|
|
||
| `DOCKER_IMAGE` | `inecs/vmware-api-simulator` | Репозиторий образа |
|
||
| `IMAGE_TAG` | `latest` | Тег для скачивания |
|
||
| `HTTP_PORT` | `80` | Порт хоста для HTTP |
|
||
| `HTTPS_PORT` | `443` | Порт хоста для HTTPS |
|
||
| `POSTGRES_PORT` | `127.0.0.1:5434` | Bind хоста для Postgres |
|
||
| `TICKET_SIGNING_KEY` | лабораторное значение по умолчанию | Меняйте вне игрушечных лабораторий |
|
||
| `POSTGRES_PASSWORD` | `vmware` | Пароль БД |
|
||
|
||
Для Kubernetes с публичным TLS (cert-manager / Let's Encrypt) используйте
|
||
Helm-чарт — см. [Kubernetes / Helm](kubernetes.md).
|
||
|
||
## Обновления
|
||
|
||
1. Скачайте / пересоберите образы (`make install` / `make docker-build` по
|
||
ситуации).
|
||
2. Выполните миграции (`make db-migrate`).
|
||
3. Убедитесь, что `/health/ready` отвечает нормально.
|
||
4. Перепроверьте `/ui/api/compatibility?major=9` и
|
||
`/api/appliance/system/version`.
|
||
5. При необходимости заново запустите `make test-vsphere` /
|
||
`make vsphere-matrix` / `make pulumi-tests`, если проверяете поверхность
|
||
после обновления. Последние зафиксированные lab-цифры:
|
||
[Совместимость — Последний lab-прогон](compatibility.md#последний-lab-прогон-2026-07-18).
|
||
|
||
## Сброс лаборатории
|
||
|
||
```bash
|
||
make seed PROFILE=small
|
||
# или через UI: unload demo → small, затем снова seed
|
||
```
|
||
|
||
Для жёсткого сброса базы данных используйте `make db-reset` (деструктивно —
|
||
см. справку Makefile).
|