Инструменты

Инструменты — быстрый деплой Docker-сервисов на управляемые серверы по шаблонам. Сервис (Postgres, Redis, nginx, что угодно) описывается один раз как шаблон, а затем разворачивается сколько угодно раз — каждый инстанс со своими настройками.

Два уровня

  • Библиотека шаблонов (раздел «Инструменты») — глобальная, хранится на диске MultiAgent в папке AGENT_TOOLS и общая для всех серверов. Шаблоны редактируются прямо в интерфейсе: манифест, файлы и compose.yml — как сырой текст;
  • Инстансы на сервере (страница сервера → «Инструменты на этом сервере») — развёрнутые копии: жизненный цикл, статусы, логи, файлы и переменные каждого инстанса.

Структура шаблона

Каждый шаблон — папка со слагом из строчных букв, цифр и дефисов:

{AGENT_TOOLS}/
  redis/                     ← слаг шаблона = имя папки
    tool.json                ← название, описание, иконка, категория, переменные
    compose.yml              ← Scriban-шаблон
    redis.conf               ← произвольные дополнительные файлы
    init/
      01-init.sh             ← вложенные подпапки поддерживаются

Переменные описываются в tool.json со схемой типов:

  • string — текстовое поле;
  • secret — поле-пароль: значение шифруется в базе и маскируется в интерфейсе;
  • int — числовое поле;
  • choice — выпадающий список из заданных опций;
  • bool — переключатель да/нет.

При первом запуске библиотека наполняется примерами: redis, postgres и nginx. Их можно править — затирается библиотека только если она пуста.

Деплой

  1. Выберите шаблон и сервер — откроется форма с переменными шаблона;
  2. Заполните значения (секреты сразу шифруются) и посмотрите предпросмотр рендера compose против введённых переменных;
  3. MultiAgent отрендерит все файлы шаблона через Scriban, скопирует их в папку инструментов сервера и выполнит docker compose up -d. Имя compose-проекта — слаг инстанса, поэтому инстансы изолированы по сетям и томам.

В шаблонах доступны значения переменных плюс встроенные контексты сервера: {{ instance_slug }}, {{ instance_name }}, {{ data_folder }}, {{ tools_folder }}, {{ server_host }} и другие. Используйте {{ instance_slug }} в container_name, чтобы два инстанса одного шаблона сосуществовали на сервере.

Жизненный цикл инстанса

  • Запустить / Остановить / Перезапустить / Pull — управление контейнером, файлы не трогаются;
  • Пересоздать — единственная операция, перерендеривающая файлы из шаблона с сохранёнными переменными. Ручные правки файлов будут перезаписаны — интерфейс предупреждает об этом заранее;
  • Удалить — останавливает и удаляет контейнер, его файлы и именованные тома.

После деплоя файлы инстанса на сервере свободны для правок — через вкладку «Файлы» инстанса или по SSH. Инстансы — обычные Docker-контейнеры, поэтому переиспользуют знакомый UX агентов: кнопки жизненного цикла, бейджи статусов, просмотр логов и файловый браузер с прогрессом операций через SignalR.

Персистентность библиотеки

По умолчанию AGENT_TOOLS указывает на /project/tools — внутри контейнера, без сохранения при пересоздании. Чтобы шаблоны переживали пересборку контейнера, укажите AGENT_TOOLS=/data/tools: volume /data сохраняется между пересозданиями. Подробнее — в инструкции по установке.

← Оглавление документации