72 lines
4.4 KiB
Markdown
72 lines
4.4 KiB
Markdown
---
|
|
title: Архитектура инфраструктуры
|
|
description: Децентрализованная модель оркестрации и структура развертывания.
|
|
weight: 10
|
|
---
|
|
|
|
Фреймворк Root работает на децентрализованной модели оркестрации, разработанной для независимых, самодостаточных проектов. Он обеспечивает строгое разделение между оркестратором («мозгом») и задачами автоматизации («мышцами»).
|
|
|
|
## Основная философия {#philosophy}
|
|
|
|
Фреймворк построен на принципе **Smart Root, Stupid Actions** («Умный Root, глупые Action-скрипты»). Такой дизайн гарантирует, что отдельные скрипты автоматизации остаются декларативными и не знают о глобальном состоянии системы, в то время как центральный диспетчер берет на себя разрешение окружения и инициализацию библиотек.
|
|
|
|
### Smart Root (Диспетчер)
|
|
|
|
Точка входа `root` является единственным интерфейсом для пользователей. Она отвечает за:
|
|
|
|
- **Разрешение окружения** → Поиск репозиториев `commons` и `configs`.
|
|
- **Подготовка библиотек** → Разовая загрузка пространств имен (modules) библиотек.
|
|
- **Установление контекста** → Определение целевого [Узла (Node)](/root/glossary#node) и связанных с ним путей.
|
|
|
|
### Stupid Actions (Задачи)
|
|
|
|
[Action-скрипты (Actions)](/root/glossary#action) — это декларативные скрипты, расположенные в `scripts/actions/`. Они называются «глупыми», потому что:
|
|
|
|
- Они не вычисляют пути и не ищут репозитории.
|
|
- Они полностью зависят от переменных окружения `ROOT_`.
|
|
- Они фокусируются исключительно на одной атомарной задаче (например, `compose`, `ufw`).
|
|
|
|
## Модель развертывания {#deployment}
|
|
|
|
Они обычно развертываются как общий репозиторий [Commons](/root/glossary#commons), подключенный как Git-субмодуль внутри репозитория конфигураций. Движок, на котором построена эта общая инфраструктура, размещен по адресу [GitHub: ermnvldmr.com-root-commons](https://github.com/deytenit/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:**
|
|
|
|
- [Concept: The ROOT_ API](/root/reference/root-api)
|
|
- [Guide: Installation](/root/guides/installation)
|
|
- [GitHub: ermnvldmr.com-root-commons](https://github.com/deytenit/ermnvldmr.com-root-commons)
|
|
-commons)
|