Плагины и SDK
Каждый источник в Sard — плагин агента, который реализует один интерфейс. SDK вынесен в отдельный Go-модуль под Apache-2.0, поэтому плагины, в том числе проприетарные, можно писать без обязательств AGPL.
Интерфейс
Плагин реализует шаги Prepare, Dump и Stream. Проверка восстановления описывается отдельным необязательным интерфейсом Verifier: действие проверки объявляется только у тех плагинов, которые его реализуют.
Два способа отдать данные restic
- Пути: Dump возвращает файлы и каталоги, restic бэкапит их сам.
- Поток: Dump возвращает имя файла, а Stream пишет байты, которые restic сохраняет из stdin одним файлом. Так работает pg_dump.
Конфиг и секреты
Конфиг источника описывается JSON Schema 2020-12, и агент проверяет его до Prepare: ошибка называет нарушения с путём к каждому полю. Поле-секрет помечается в схеме как sard-secret. Плагин читает значение из файла на хосте при каждом вызове, поэтому секрет можно менять без перезапуска, а в ошибки и логи он не попадает.
Лицензии
SDK плагинов и контракты gRPC лежат под Apache-2.0 и не импортируют код под AGPL. Сервер, агент, CLI и консоль под AGPL-3.0.
Что встроено сегодня
Во встроенном реестре агента два плагина: файлы и PostgreSQL. Плагин попадает в релиз, только когда он умеет и бэкапить, и восстанавливать и описан в документации. Источники из плана (1С на PostgreSQL, MikroTik, Eltex, MySQL) появятся вместе с работающими плагинами.