Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023)
Материал из 0x1.tv
- Докладчик
- Евгений Синельников
Доклад посвящён анализу текущего состояния разработки новой версии конфигуратора для операционных систем семейства «Альт», а также концептуальным особенностям и техническим возможностям его реализации на базе шины Dbus.
Раскрываются планы разработки на ближайшее будущее, включающие смену стека технологий бекенда и предоставление возможности реализации фронтендов на различных языках программирования с различными графическими и консольными фрейворками, которым предоставлен гибкий, расширяемых набор программных интерфейсов
Содержание
Видео
Презентация
Thesis
- https://gitlab.basealt.space/alt/alterator-manager
- https://gitlab.basealt.space/alt/alterator-module-executor
- http://git.altlinux.org/people/sav/packages/alt-diagnostic-tool.git
- https://www.altlinux.org/Alterator
Проект Альтератор создавался, как «новое поколение платформ для разработки сложных систем». Оригинальная реализация проекта Альтератор написана в рамках модульного подхода «по большей части Scheme (диалект языка Lisp, в реализации Guile), C и старый добрый sh+awk». До последнего времени является основным базовым компонентом для построения дистрибутивных решений «Альт» («используется как инсталлятор и конфигуратор системы»). Оригинальная архитектура проекта предполагает возможность парного расширения модулей на языке программирования Scheme для «фронтендов» (под графический интерфейс на базе Qt и под Web-интерфейс на базе встроенного, отдельно устанавливаемого web-сервера) и на языке Bash для «бэкендов» (со взаимодействием через собственную шину передачи сообщений — woo-bus).
Основными причинами необходимости перевода проекта Альтератор на новый технологический стек на базе шины Dbus явились:
- необходимость спецификации интерфейсов «бэкендов» для создания «фронтендов» в различных графических и консольных
приложениях;
- возможность защищённого, контролируемого выполнения привилегированных действий из-под непривилегированного окружения (команд из-под root’а в графических приложениях без необходимости ввода только «root’ового пароля», что определяется настройками);
- интеграция шины dbus со всеми системными компонентами в современных Linux-дистрибутивах (начиная от systemd и заканчивая всеми графическими окружениями для управления, например, такими сервисами как UDisks2, NetworkManager, а также отдельными сервисами systemd);
- расширение числа заинтересованных разработчиков в развитии проекта, позволяющего конфигурировать операционные системы «Альт»;
- предоставление разработчикам широких возможностей в виде «фреймфорка» для создания собственных приложений, управляемых как локально, так и по сети;
- обобщение механизмов, используемых как для локального, так и удалённого управления, в том числе и через инструменты конфигурациями (такие как ssh, ansible и групповые политики развиваемые в рамках проекта «Альт Домен»).
Архитектура новой реализации проекта Альтератор опирается на опыт конфигурирования операционных систем «Альт» и
концептуальный подход, заложенный в нём. В первую очередь этот подход позволяет сохранить при использовании
конфигуратора возможность традиционного управления в консоли путём ручного редактирования конфигурационных файлов. То
есть конфигурирование обеспечивается не путём создания специальной базы данных, а путём разбора и автоматизированного
редактирования ровно тех же файлов, которые редактируются системным администратором вручную. Кроме того, расширение
модулей спроектировано, в большей степени, под декларативный сценарий, обеспечивающий возможность привлечения к
разработке и расширению возможностей конфигурования наибольшего количества заинтересованных «мейнтейнеров» (участников
команды ALT).
В целом, развитие возможностей протокола и «фреймворков» работающих через шину Dbus позволяет полностью покрыть весь набор необходимых для реализации такого конфигуратора возможностей. А стандартизация использования этой шины позволяет использовать любые современные языки программирования без необходимости создания и сопровождения специальных связующих компонент, поскольку все необходимые «батарейки» для шины Dbus встроены во все современные дистрибутивы. Что дополнительно открывает широкие возможности для применения новой реализации проекта Альтератор в различных дистрибутивных решениях.
Архитектура проекта Альтератор на Dbus
Ключевым звеном старого проекта Alterator является служба alteratord, реализующая как взаимодействие через шину woo-bus, так и запуск бэкендов в виде отдельных процессов, обрабатывающих запросы на шине. Ключевым же звеном новой реализации является служба alterator-manager, которая обеспечивает подключение к шине Dbus, разбор декларативных описаний интерфейсов для модулей Альтератора и загрузку бинарных модулей, обрабатывающих запросы на объектах Dbus для загруженных из описаний интерфейсов.
Основной набор модулей новой версии Альтератор:
- executor — ключевой модуль, который обеспечивает декларативное расширение перечня объектов и интерфейсов, позволяющих через отдельные методы запускать заданные приложения с заданными параметрами (переводит «Uniхway» на уровень шины dbus);
- fileio — обеспечивает возможность контролируемого доступа на чтение и запись к системным файлам и каталогам за счёт возможности передачи открытых файловых дескрипторов. Работает только в локальном режиме (в разработке);
- registry — обеспечивает обобщённый доступ и хранение конфигурационных параметров в рамках единого пространства имён — аналога реестра Windows (в разработке);
- remote — обеспечивает удалённое управление узлами, на которых установлен новый Альтератор с транспортом по протоколу ssh и возможностью аутентификации через kerberos (в разработке).
На текущий момент базовый каркас в виде пакетов alteratorman\-ager и alterator-module-executor опубликован и собран в репозиторий «Сизиф». Данный каркас обеспечивает следующий набор возможностей:
- в рамках базового интерфейса ru.basealt.alterator.manager — поиск любых объектов Альтератор, предоставляющих заданный интерфейс, а также вывод перечня интерфейсов предоставляемых заданным объектом Альтератор;
- в рамках расширенного модуля executor — возможность создания любого количества объектов, реализующих заданные интерфейсы через «Unixway» на Dbus;
- для всех создаваемых интерфейсов — генерировать базовый ограниченный набор правил PolicyKit;
- контролировать соответствие интерфейсов создаваемых для объектов заданному шаблону (имена методов и их сигнатуры).
В качестве доказательства работы концепта реализовано два клиентских приложения:
- alt-diagnostic-tool (adt) — графическая утилита, обеспечивающая поиск и загрузку гибко расширяемого набора диагностических инструментов;
- новая реализация alterator-control-center (в разработке), которая должна обеспечить прозрачный запуск как графических модулей Альтератора старой версии, так и новых графических интерфейсов, обращающихся к интерфейсам на Dbus и управляемых через групповые политики.
Таким образом, представленный набор компонент предлагается рассмотреть с целью постепенной замены сначала графической части старой версии конфигуратора, затем графической части инсталлятора. При этом возможность удалённого управления модулями Альтератора позволяет обеспечить возможность конфигурирования без установки браузера и использования для конфигурирования web-протоколов. Дальнейшее развитие этого решения также может быть представлено в виде отдельного proxy-сервиса для написания полноценного, расширяемого web-интерфейса. Ключевым вопросом для конфигурирования через web остаётся делегирование расширенных полномочий web-серверу, делающее его дополнительной точкой уязвимости.
Важным шагом для расширения количества разрабатываемых модулей и клиентских приложений, а также повышения общей зрелости предлагаемой к рассмотрению реализации, является подробное документирование как архитектурных особенностей, так и возможностей для разработчика.