6.2 KiB
Развёртывание
Два пути: быстрый (для уже зарегистрированного сервиса — изменить compose/env и поднять) и полный релиз (схема + манифест → выгрузка релиза → запуск на одном или нескольких серверах).
Перед изменяющими операциями убедитесь, что
read_only=falseв конфиге, а ассистент запрашивает подтверждение (confirm) на разрушительные шаги.
Быстрый путь: один уже известный сервис
Промпт: «Обнови compose сервиса demo_web на образ nginx:1.27, подними его и дождись результата.»
Вызовы:
list_applications— найтиdemo_webи егоapp_id(илиget_application, если id известен).set_compose {app_id, content}— записать новый compose (создаётся версия, конфиг уходит агенту). При необходимости —set_env {app_id, filename, content}.deploy {app_id, wait:true}—docker-compose up -dи ожидание задачи.overview— убедиться, что сервис поднялся.
Для перезапуска — restart; для остановки — down {confirm:true}.
Полный релиз: один сервер
Минимальная схема — один хост:
{
"vm1": { "ip": "10.20.30.11", "services": ["user_system_front"] }
}
Промпт: «Сохрани schema.json и manifest.json, разложи хост, скачай релиз с образами,
дождись завершения и запусти сервисы.»
save_deployment_files {schema, manifest}ip_match— проверить, что IP хоста сопоставлен агенту.seed_hosts— создать запись хоста до выхода агента.download_release {load_images:true, confirm:true}→{"status":"started"}release_job(опрос) —status: running→completedstart_services→start_task_idsdeployment_tasks/get_task {task_id, wait:true}— результат запускаoverview— сводка
Полный релиз: несколько серверов
Схема описывает все VM и их сервисы:
{
"vm-node-1": { "ip": "10.20.30.11", "services": ["chats", "user_system"] },
"vm-node-2": { "ip": "10.20.30.12", "services": ["report_system"] }
}
Манифест сопоставляет сервис и пакет релиза (URL архива в GitLab):
{
"services": {
"chats": { "package": "https://gitlab.example/api/v4/.../chats.tar.gz" },
"user_system": { "package": "https://gitlab.example/api/v4/.../user_system.tar.gz" },
"report_system": { "package": "https://gitlab.example/api/v4/.../report_system.tar.gz" }
}
}
Порядок:
save_deployment_files {schema, manifest}(при необходимости —prebuild_vars).ip_match— увидетьmatched_pairsиunmatched_schema_ips. Если IP в схеме не совпадают с IP агентов — задать соответствие черезsave_deployment_files {ip_overrides}:затем снова{ "10.20.30.11": "10.20.30.101", "10.20.30.12": "10.20.30.102" }ip_match.fill_vars(опционально) — заполнитьprebuild_varsиз схемы.seed_hosts— создать записи хостов.download_release {load_images:true, confirm:true}— запускает фоновую выгрузку пакетов и образов; прогресс —release_job(phase,images_pulled/images_total). Без образов:download_release {load_images:false}вернётdownloaded_servicesиsync_task_ids.start_services→start_task_ids(по одной задаче на хост).deployment_tasksиget_task {wait:true}— дождаться результата по каждому хосту.overview— итоговая сводка;list_applications— статусы сервисов.
Токен GitLab: задайте
gitlab_tokenв конфиге сервера (или переменной окружения) — тогда не придётся передавать секрет в аргументе.
Обновление фронта
Фронт-сервисы (user_system_front, chat_widget, scenario_front и др.)
принимают собранную папку.
- В конфиге сервера задайте
front_roots— каталог, куда вы кладёте сборки:"front_roots": ["/srv/omni-front-builds"] -
Промпт: «Обнови фронт user_system_front из /srv/omni-front-builds/us.»update_front {app_id, build_dir:"/srv/omni-front-builds/us", confirm:true}→ задача агенту →get_task {wait:true}.
Каталог обязан лежать внутри front_roots (защита от загрузки произвольных
путей); содержимое build_folder на хосте заменяется целиком.
Откат конфигурации
Каждое изменение compose/env создаёт версию, поэтому откат безопасен.
- Compose:
get_application {app_id}→ выбратьversion_id→restore_compose {version_id, confirm:true}. - Env:
env_versions {app_id, filename}→restore_env_version {version_id, confirm:true}.
Восстановление создаёт новую версию (история сохраняется) и отправляет конфиг агенту.
Миграции
Промпт: «Запусти миграции сервиса 5 и проверь результат.»
migrate {app_id:5, wait:true}; журнал последних миграций — в
get_application (migration_logs).