Re: systemd
Alexey Shrub -> Debian Russian Mailing List @ Sat, 14 Nov 2015 09:02:15 +0300:
>> Ну, вообще-то инит-скрипт, как процедура запуска демона, является частью
>> его инфраструктуры. Чего бы ему не знать?
AS> Да, может и знать, только не нарушая DRY, т.е. он должен читать конфиг демона
AS> и оттуда брать информацию о том что и где чистить и при это гадить в системные
AS> и в логи демона что о делает. Только в таком варианте это будет относительно
AS> нормально.
Или писать в конфиг демона. Вернее (и это часто делают), в параметры
командной строки.
AS> По данному примеру - раз systemd уже взялся подчищать за процессом (судя по
AS> приведёным ранее его опциям), то значит ему этим и заниматься, если он где-то
AS> не дорабатывает, то делаем временный костыль и пишем багрепорт.
Ну, тут, пожалуй, да, соглашусь. Если функциональность есть в
запускалке, ее и использовать.
AS> Вобщем мне кажется по вопросу шел скрипты vs конфиги мы зашли в тупик, моё
AS> чувство архитектуры говорит мне что если можно использовать конфиг вместо
AS> языка программирования то так и надо делать, это защита от ошибок и дыр в
AS> безопасности. Но видимо каждый останется при своём мнении.
А вот тут я бы предложил глянуть чуть шире.
Язык конфига - это тоже язык программирования. Только это декларативный
DSL. Впрочем, если глянуть шире, то все языки программирования - DSL,
только для D разной ширины. Конкретно sh - DSL для взаимодействия
словами между пользователем и операционной системой, предназначенный для
двух целей - интерактивного взаимодействия и автоматизации выработанного
в оном интерактивном взаимодействии (бизнес-)процесса.
Возвращаясь к конфигам, их DSL, как правило, наколеночный и либо очень
слабый, либо очень кривой. Исключения - большая редкость, мне вот прямо
в голову ничего не приходит.
На самом деле, насколько я понимаю, в целях иллюстрации кривизны мощного
DSL надо приводить вообще не systemd, а exim. Из того, что я в жизни
видел, кривее только язык досовско-виндовых батников (от .bat до .cmd),
и то в сравнении с sh.
А мысль такая. Начиная с некоторой выразительной силы, декларативный
язык будет удобнее процедурного (по критериям читаемости программы, и
следовательно, ее компактности, и минимизации шансов насажать ошибок)
только если он продуман очень хорошо. А если он продуман не очень
хорошо (даже просто хорошо, но не очень хорошо), то процедурный выдает
на выходе более простую и лучше читаемую программу.
Случай с exim - прекрасная иллюстрация фейспалма на этом пути. Однако,
плачем, колемся, но продолжаем жрать этот кактус, потому что у
конкурентов плохо как раз с достаточностью выразительной силы.
С systemd, насколько я понимаю, ситуация все же получше, но осложняется
тем, что его DSL поначалу имел недостаточную выразительную силу, и все
еще идет ее наращивание. С соответствующим усложнением языка.
Может быть, конфигам systemd и можно было бы доверить систему
инициализации более, чем скриптам SysV init. Если бы можно было
доверить жизнеспособность системы самому systemd...
Reply to: