Files
SergObsidian/WORK & PROJECTS/Mol/Серверы/Alfa cloud readme.md
2025-03-04 00:31:42 +05:00

90 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### Общая информация
Alfa Cloud — серверный API, который предоставляет доступ к управлению контейнерами и конфигурацией облаков Alfa с поддержкой нескольких облачных серверов.
Данный документ нужен для разработки полноценного фронтенда управления контейнерами.
Все запросы должны производиться только из админки Mol. Метод авторизации каждого запроса - Basic Auth (обычный логин и пароль). Учётные данные можно менять регулярно, для этого существует специальный запрос. Учётные данные НЕ синхронизированы с основными учётными данными MOL (и для безопасности и отсутствия необходимости синхронизации всех юзеров. Нужен только главный админ).
В данном API в тестовом режиме будет использоваться спецификация JSON:API для унификации серверных ответов.
#### Точки подключения:
GET:
```
/servers — получить список активных серверов (для разворачивания новых клиентов)
/servers/{server_id} — получить подробную информацию о сервере
(TODO: с параметрами мониторинга и нагрузкой в реальном времени)
/clients — получить список контейнеров клиентов со всеми подробностями (поддерживается пагинация). С флагом доступностью контейнера. На фронте можно сделать прямой переход на облако клиента.
/clients/{id}/demo_enable - применение таблиц демо-данных (demo seeder)
/clients/{id}/demo_disable - удаление демо-данных (demo inverse seeder)
/clients/{id}/maintain_enable - включить страницу "Техническое обслуживание" у клиента
/clients/{id}/maintain_disable - отключить страницу "Техническое обслуживание"
/clients/{id}/send_success - отправить письмо клиенту с успешной регистрацией облака с логином и паролем
/clients/{id}/send_expire - отправить письмо клиенту о скором истечении использования (можно/нужно автоматизировать)
/clients/{id}/expire_dates_history - история изменения продлений дат пользователя
```
POST:
```
/servers/ — создать сервер в БД (при наличии id - обновление)
/clients/ — создать клиента (при наличии id - обновление данных)
при создании - после проверки сразу вернётся id.
во время создания нужно таймером опрашивать
/clients/{id}/create_log и получать актуальный лог о создании контейнера. За окончание создания отвечает статус "completed" => "ok | error".
При обновлении не нужно отправлять пароль, а задавать его командой ниже
/clients/{id}/owner_password — задать новый пароль администратора лаборатории
/clients/{id}/expire_date - обновление крайней даты использования системы
TODO: перенос данных клиента с одного сервера на другой
TODO: /cloud_admin_password - задать пароль для подключения к API
```
DELETE
```
/clients/{id} — редкая функция — запуск очистки пользовательских конфигов с серверов
/servers/{server_id} не реализовано, да и пока что не надо. Тут нужно просто удаление информации о сервере из БД.
```
Команды менеджмента контейнеров и деплоя (GET)
```
/servers/{server_id}/images - список доступных образов на сервере (для переключения или создания пользователя)
/servers/{server_id}/reboot_server - перезапуск сервера
/clients/{id}/reboot - попытка перезапуска контейнера пользователя
/server/{server_id}/deploy - пересоздание ВСЕХ конфигов и перезапуск серверного кластера (действие, применяющееся после билда и/или смены версий). После этого необходимо сделать migrate_all
/clients/{id}/create_log - Лог создания контейнера
/containers/{server_id}/build_dev - получение кода из ветки dev, сборка фронта и нового образа
/containers/{server_id}/build_prod - получение кода из ветки master, сборка нового образа
/containers/prune - удалить неиспользуемые версии образов (images prune -a)
/clients/{id}/switch/{image_name} - переключить клиента на образ другой версии
/server/{server_id}/switch_all - переключить всех клиентов на образ другой версии
/clients/{id}/migrate - запустить обновление БД клиента (artisan migrate)
/server/{server_id}/migrate_all - запустить обновление БД у всех клиентов на сервере
/clients/{id}/move_to/{server_id} - переместить клиента на другой сервер
/clients/{id}/copy_to/{server_id} - установить окружение клиента и БД (только на stage-сервер)
```
Идеи:
- Получать количество пользователей в каждой системе для общего списка клиентов
- При билде образов автоматически вычислять версию и приписывать -dev или -master
- Также версию образа можно тащить пользователям в интерфейс
### TODO: Добавить таблицу с настройками облака в каждую пользовательскую таблицу!
- Проверка на уровне системы настройки "Техническое обслуживание" и показ блокирующей страницы
- Проверка на крайнюю дату использования и блокировка системы.
- Проверка на показ “турбостарта” при запуске
- Проверка на вопрос “краткого туториала”
Server requirements:
git
docker+compose
nginx
mariadb / postgresql
certbot
www-data authorized key from master API
www-data sudo NOPASSWD config (remote cmd exec)