Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023)

Материал из 0x1.tv

Докладчик
Евгений Синельников.jpg
Евгений Синельников

Доклад посвящён анализу текущего состояния разработки новой версии конфигуратора для операционных систем семейства «Альт», а также концептуальным особенностям и техническим возможностям его реализации на базе шины Dbus.

Раскрываются планы разработки на ближайшее будущее, включающие смену стека технологий бекенда и предоставление возможности реализации фронтендов на различных языках программирования с различными графическими и консольными фрейворками, которым предоставлен гибкий, расширяемых набор программных интерфейсов

Видео

on youtube

Презентация

Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023).pdf

Thesis

Проект Альтератор создавался, как «новое поколение платформ для разработки сложных систем». Оригинальная реализация проекта Альтератор написана в рамках модульного подхода «по большей части 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-серверу, делающее его дополнительной точкой уязвимости.

Важным шагом для расширения количества разрабатываемых модулей и клиентских приложений, а также повышения общей зрелости предлагаемой к рассмотрению реализации, является подробное документирование как архитектурных особенностей, так и возможностей для разработчика.


Концептуальный подход к развитию новой версии Альтератор (Евгений Синельников, OSSDEVCONF-2023)!.jpg

Примечания и ссылки