Files
ermnvldmr.com/services/docs/content/ru/root/concepts/architecture.md
T

4.4 KiB

title, description, weight
title description weight
Архитектура инфраструктуры Децентрализованная модель оркестрации и структура развертывания. 10

Фреймворк Root работает на децентрализованной модели оркестрации, разработанной для независимых, самодостаточных проектов. Он обеспечивает строгое разделение между оркестратором («мозгом») и задачами автоматизации («мышцами»).

Основная философия

Фреймворк построен на принципе Smart Root, Stupid Actions («Умный Root, глупые Action-скрипты»). Такой дизайн гарантирует, что отдельные скрипты автоматизации остаются декларативными и не знают о глобальном состоянии системы, в то время как центральный диспетчер берет на себя разрешение окружения и инициализацию библиотек.

Smart Root (Диспетчер)

Точка входа root является единственным интерфейсом для пользователей. Она отвечает за:

  • Разрешение окружения → Поиск репозиториев commons и configs.
  • Подготовка библиотек → Разовая загрузка пространств имен (modules) библиотек.
  • Установление контекста → Определение целевого Узла (Node) и связанных с ним путей.

Stupid Actions (Задачи)

Action-скрипты (Actions) — это декларативные скрипты, расположенные в scripts/actions/. Они называются «глупыми», потому что:

  • Они не вычисляют пути и не ищут репозитории.
  • Они полностью зависят от переменных окружения ROOT_.
  • Они фокусируются исключительно на одной атомарной задаче (например, compose, ufw).

Модель развертывания

Они обычно развертываются как общий репозиторий Commons, подключенный как Git-субмодуль внутри репозитория конфигураций. Движок, на котором построена эта общая инфраструктура, размещен по адресу GitHub: ermnvldmr.com-root-commons.

{{< filetree/container >}} {{< filetree/folder name="configs-repo" state="open" >}} {{< filetree/folder name=".operator" state="open" >}} {{< filetree/folder name="shared (submodule)" state="open" >}} {{< filetree/folder name="scripts" >}} {{< filetree/folder name="run" >}} {{< filetree/file name="root (dispatcher)" >}} {{< /filetree/folder >}} {{< filetree/folder name="lib" >}} {{< filetree/file name="shared libraries" >}} {{< /filetree/folder >}} {{< filetree/folder name="actions" >}} {{< filetree/file name="shared actions" >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< filetree/folder name="local" state="open" >}} {{< filetree/folder name="scripts" >}} {{< filetree/folder name="actions" >}} {{< filetree/file name="node-specific overrides" >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< filetree/folder name="daedalus (node)" >}} {{< filetree/file name="docker-compose.yml" >}} {{< /filetree/folder >}} {{< filetree/file name="init.sh (bootstrap)" >}} {{< /filetree/folder >}} {{< /filetree/container >}}


See also: