mTLS + RBAC + аудит встроены
Транспорт Keeper↔Soul — gRPC поверх mTLS. RBAC, аудит-журнал и интеграция с Vault — часть ядра, а не платная надстройка. Секреты маскируются на выходе и в логи в открытом виде не попадают.
Всё для управления инфраструктурой — в одной платформе: web-интерфейс, вход по LDAP/OIDC, RBAC, аудит, API и MCP, ротация сертификатов. Опишите желаемое состояние — Soul Stack приведёт к нему все души, и в pull, и в push.
# желаемое состояние, а не скрипт
apply:
- module: core.pkg
name: nginx
state: present
- module: core.file
path: /etc/nginx/nginx.conf
template: nginx.conf.tmpl
vars:
workers: {{ soulprint.cpu.count }}
- module: core.service
name: nginx
state: started
enabled: trueIdentity, доступ, наблюдаемость и API встроены в ядро — а не собираются из зоопарка инструментов. Обычно этот набор берут из 5–7 отдельных продуктов; здесь он идёт из коробки.
За каждым решением — конкретная проблема, которую оно решает: разрозненные инструменты вместо платформы, произвольный код в конфиге, привязка к вендору в надстройках, рантайм на хосте.
Транспорт Keeper↔Soul — gRPC поверх mTLS. RBAC, аудит-журнал и интеграция с Vault — часть ядра, а не платная надстройка. Секреты маскируются на выходе и в логи в открытом виде не попадают.
Выражения — CEL (не Тьюринг-полный, без побочных эффектов), рендер файлов — Go text/template в строгом режиме. Произвольный код в конфиге выполнить нельзя — конфиг остаётся конфигом.
Кастомный модуль — отдельный исполняемый файл по gRPC-stdio: падение плагина не роняет агента, а лицензию плагина выбирает его автор. Ядро — под BSL, экосистема расширений — свободна.
Тот же исполняемый файл применяет Destiny и как демон (pull), и как oneshot по SSH (push, без агента на хосте). Одна реализация вместо двух несовместимых веток.
Агент soul — статический исполняемый файл. На управляемом хосте не нужен ни Python, ни Ruby, ни интерпретатор: core-модули — нативный Go внутри исполняемого файла. Меньше на хосте — меньше дрейфа и поверхности атаки.
Operator web-UI включён в Keeper и отдаётся на /ui. Отдельный продукт для наблюдаемости деплоить не нужно.
Мини-симуляция control-plane целиком на клиенте: Keeper планирует инкарнацию, резолвит секреты, рендерит Destiny и приводит новый узел к желаемому состоянию — с честным логом.
Сравним архитектурные семейства. У зрелых инструментов свои компромиссы — покажем, где Soul Stack пошёл другим путём.
| Push поверх SSH | Агент + master | Soul Stack | |
|---|---|---|---|
| Рантайм на хосте | нужен интерпретатор | постоянный агент + рантайм языка | один исполняемый файл, без интерпретатора |
| Типобезопасность | текстовый шаблонизатор общего назначения | DSL/шаблоны на языке общего назначения | CEL + text/template (strict) — код не исполнить |
| Транспорт | SSH | своя шина / HTTPS, часто свой CA | gRPC поверх mTLS |
| Модель доставки | только push | в основном pull | pull и push — один набор модулей |
| RBAC · аудит · web-UI | собираете из сторонних инструментов | отдельные надстройки поверх | встроены в ядро — из коробки |
| Управляющий узел | stateful | stateful master + отдельная БД | stateless-кластер (PG + Redis) |
Развёрнутый разбор по семействам, замеры масштаба и раздел «как выбирать» — в документации.
Продукт не режется под платные тарифы: исходники открыты и аудируемы, а доход — от услуг и managed поверх открытого ядра.
keeper · soul · soulctl · soul-lint и core-модули под BSL 1.1: исходники открыты и доступны. Каждая версия становится Apache 2.0 через два года. Точные условия использования — в тексте лицензии.
Пишите и распространяйте свои модули под любой лицензией, без ограничений с первого дня. Экосистема расширений принадлежит сообществу, а не вендору.
От легаси до единой инфраструктуры в пару этапов. Web-интерфейс, доступ, RBAC, аудит и API — в одной платформе, из коробки. Начните с малого и растите без переписывания.