Профилирование /etc/*.d
Определение «внешней конфигурации» вычислительной системы и автоматическое изменение её настроек. В первую очередь — удаление и подкладывание символьных ссылок на соответствующие конфиги в каталоги типа /etc/*.d.
Общая идея
При старте системы запускается один или несколько однотипных процедур-конфигураторов.
Каждый конфигуратор
запускает некоторое количество зондов — программ, определяющих текущую конфигурацию системы, которые выводят некоторый текст. Из суммы вывода этих зондов формируется текущий внешний профиль.
определяет внутренний профиль — состояние настроек системы
- если внешний профиль не равен внутреннему, откатывает настройки системы в «непрофильное» состояние
если в данном конфигураторе есть сохранённый профиль, идентичный внешнему, накатывает настройки системы из этого профиля
Структура
- Набор готовых зондов
- Конфигуратор
- Список запускаемых зондов (в том числе возможность задать свои кастомные)
- Сохранённые профили — набор частичных конфигов
- Редакторы для разных типов конфигурационных файлов
- Накатывание частичного конфига
- Откатывание частичного конфига
- Определение профиля по частичному конфигу, если это возможно
- Systemd / SysVInit службы
Пример
На основании данных DDC подключенных к компьютеру мониторов положить символьные ссылки на соответствующие частичные конфиги XOrg в /etc/X11/xorg.conf.d/, а также пропатчить /etc/sysconfig/xrandr.
Используется для подключения ноутбука к проектору и монитору в различных лекционных аудиториях.
Частичная реализация (только xorg.conf.d)
profile — основной сценарий
profile.awk — зонд DDC (отчасти встроен в сценарий, увы)
home.profile — сохранённый профиль
home/X11/xorg.conf.d/20-monitor.conf — частичный конфиг сохранённого профиля
Вопросы
- Вдруг это уже решено в каких-нибудь сложных системах доставки конфигураций?
Не использовать ли udev?
Какие бывают редакторы конфигов постандартнее?
- Что делать, когда два конфигуратора патчат один и тот же конфиг?
Определение внутреннего профиля? Видимо, когда везде, где можно определить, профиль одинаков