[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: