CloudDriver и SshProvider
Помимо SoulModule (шаги Destiny, host = soul-агент), есть два серверных типа плагинов — их запускает keeper, а не агент на хосте. Общая модель, handshake, манифест и SDK — те же, что описаны в обзоре расширения; различается gRPC-контракт.
CloudDriver — облачные провайдеры
Заголовок раздела «CloudDriver — облачные провайдеры»CloudDriver управляет жизненным циклом виртуальных машин у облачного провайдера: создаёт, удаляет, расширяет и опрашивает VM. Исполняемый файл — soul-cloud-<провайдер>, host — keeper.
Драйвер вызывается из Keeper-side-модуля core.cloud (шаг с on: keeper, адрес core.cloud.created / .destroyed / .resized): сценарий запрашивает у драйвера создание/удаление/расширение VM, а Keeper заносит результат в свои реестры. То есть драйвер не трогает файловую систему хоста — он работает с API облака.
Контракт CloudDriver покрывает создание, удаление, расширение, опрос статуса и листинг VM, а также схему профиля провайдера (она объявляется в манифесте плагина под kind: cloud_driver).
SshProvider — SSH-credentials для push
Заголовок раздела «SshProvider — SSH-credentials для push»SshProvider поставляет SSH-credentials для push-режима Keeper-а — когда Keeper применяет Destiny на хосте по SSH, без установленного агента. Исполняемый файл — soul-ssh-<провайдер>, host — keeper.
Под единый контракт SshProvider укладываются разные модели выдачи доступа — статический ключ, Vault SSH CA (минт сертификата по запросу), Teleport. Тип провайдера объявляется в манифесте плагина под kind: ssh_provider.
Безопасность доступа — приоритет: для CA-моделей приватный ключ генерируется на стороне Keeper-а и не покидает его — провайдеру уходит только public key на подпись, а возвращается сертификат. Чем меньше точек, через которые проходит приватный ключ, тем меньше поверхность утечки.
SDK один на все типы
Заголовок раздела «SDK один на все типы»Все три контракта (SoulModule, CloudDriver, SshProvider) пишутся через один публичный Go SDK с общим handshake-механизмом и общим форматом манифеста. Тип плагина задаётся полем kind в манифесте (soul_module / cloud_driver / ssh_provider), а различается только реализуемый gRPC-контракт. Каркас и интерфейс — как описано в обзоре расширения и для модулей в Как написать SoulModule.
Что дальше
Заголовок раздела «Что дальше»- Обзор расширения — модель плагинов и SDK.
- Как написать SoulModule — расширение шагов Destiny.
core.cloud— Keeper-side-модуль, вызывающий CloudDriver.- Keeper — push-режим, для которого нужен SshProvider.