[Devel-conf] Metalterator
Michael Shigorin
mike на osdn.org.ua
Сб Апр 11 14:20:18 MSD 2009
On Thu, Apr 09, 2009 at 04:07:57PM +0400, Pavel Wolneykien wrote:
> > >> metalterator - Alterator meta-backend with additional Guile modules
> > > Расскажете подробнее? На http://www.altlinux.org/Alterator
> > > и в окрестностях ничего не нашёл, а интересно.
> Это радует, что интересно. ;)
Погодите радоваться, вон у Стаса можете спросить,
во что такой интерес порой выливается :)
А это письмо бы всё равно хорошо на вики в качестве описания.
> Значит дело было так. Собрался я писать модуль для Squid (во
> второй раз, но это отдельная история). После разговора с wart@
> и ldv@ мне стало совершенно понятно, что для работы с
> относительно сложным конфигурационным файлом нужна БД: ни
> читать, ни писать отдельные значения в файл нельзя -- всё
> перепутается. Зато сгенерировать такой файл целиком задача на
> порядок проще.
Возможно, wart@ и ldv@ не настраивают squid в повседневной
деятельности -- перед изменением, которое по сути представляет
из себя воспроизведение через много-много лет одной из худших
черт SuSE YaST -- "конфиг руками не трогать", стоит советоваться
не в закрытом режиме (как нам пеняли вот), а с теми, кому с этим
жить. Т.е. в sysadmins@ и с support at .
Я могу только заметить, что перегенерация файла с довольно
нетривиальным, обширным и _не_ покрываемым никакой настраивалкой
с обозримым интерфейсом синтаксисом -- это плохая идея, хотя так
писать настраивалку проще, конечно.
Причём это принципиальная разница языка и книжки-раскраски:
нетривиальные проекты склонны реализовывать именно _язык_
конфигурации, а самая лучшая настраивалка ничем не отличается
от сколь угодно удобной в использовании, направляющей, упреждающе
подсказывающей, но неизбежно ограниченной стопки шаблонов.
При этом в жизни мы пользуемся языком, а не счётными палочками.
Потому как задачи сложнее. Но начинали -- со счётных палочек.
Так и тут: хорошая настраивалка должна быть под рукой, когда
задача новая или редкая и при этом типичная; замечательная
настраивалка позволит отойти от её использования и не цепляться.
А для этого -- не будет держать под страхом того, что конфиг ни
на йоту нельзя трогать мимо неё.
> Тогда я стал думать: какую БД мне выбрать? Ясно что самую
> простую, поскольку данных, которыми может управлять
> пользователь в пределах одного модуля, скорее всего, немного.
> Поэтому критерием поиска БД стало удобство отображения в неё
> объектов Альтератора. И вот тут я понял, что неплохим
> хранилищем для этих объектов будет обычная файловая система! На
> что inger@ сказал: "ФС -- это одна из самых клёвых встроенных
> БД!".
Интересно, а не вспоминал ли он при этом один из предложенных
нами в своё время фрагментов насчёт "распределённой базы
состояния и правил"?
Понятно, что всему своё время, но уж если добрались до желания
базы и решили засунуть её просто на ФС (которая является ещё и
_иерархической_ базой, если уж на то пошло, а не реляционной;
это важно) -- то мне немного страшно представлять себе, как потом
будет решаться задача расшаривания этой самой базы для настройки
стайки тех же squid'ов по региональным отделениям заказчика.
> Таким образом, вместо библиотеки я решил написать отдельный
> бакенд, который бы отображал woo-команды на файловую систему.
Шеллы наши бЫстры, но всё-таки плохо подходят для насыщенных
слоёв абстракции. В код не смотрел (c), но возможно,
сериализовать сразу структуры данных и бросать их целиком через
native backend было бы несколько меньшим ударом по скорости.
Если уж идти таким путём.
> Если была дана команда прочесть атрибут, который не задан в
> объекте, то будет явно возвращено значение #f.
Ммм... а с существующими булевыми должны долетать тоже уже #t/#f
или ещё yes/no? Может возникнуть ситуация "неразборчиво".
Ещё пока опять вспомнил на ту же тему: в процессе написания
alterator-ltsconf встал вопрос о понятии дефолта или дефолтности
значения параметра -- там по логике работы удобно иметь
возможность регулировать общие для всех тонких клиентов параметры
или указывать для конкретных частные (при этом не засоряем UI
копиями общего значения и можно отличить, на что именно повлияет
изменение дефолтов).
Это один из шажков к управлению неединичными системами, и в его
процессе оказалось, что в альтераторе для такого сейчас нет ничего.
См. http://tinyurl.com/ltsconf-defaultness и ниже, что пришлось
накостылять в качестве частного "решения".
> Да, совсем забыл: полное имя объекта, т.е. всё, что идёт после /meta
> интерпретируется как путь месту в ФС! К примеру,
> alterator-cmdline /meta/etc/metalterator/squid/squid "write" http_port "3128"
> обновит значение http_port в файле /etc/metalterator/squid/squid.scm.
Не следует писать в /etc по каждому чиху, для этого есть /var
и прочие $TMP. Внезапное выключение питания или кернел паник
в самый неподходящий момент -- эффективный учитель :(
> В настоящее время единственным пользователем метабакенда
> является бакенд squid из пакета alterator-squid-1.0-alt1.
> Кстати сказать: конфигурацию по умолчанию этот пакет несёт с
> собой в виде набора файлов, которые он кладёт как есть прямо в
> /etc/metalterator/squid. По моему это тоже очень удобно!
Кому и чем?
Сисадмину удобен (потому как привычен) /etc/squid/squid.conf,
который можно править $EDITOR.
Разработчику модулей (вот мне) -- видится тупиковой идея генерата.
Ну и честно говоря, пока не вижу никакого особенного мета- в ещё
одном бэкенде -- то, что уже давно было продумано и сделано,
гораздо более метаинструмент, и притом его всё равно есть куда
и надо обобщать. О чём мы, собсно, и говорили.
Можно сказать "ну так и сделай, раз такой умный", и это будет
правильно; собственно, за прошлый год мы попытались совместить
свои планы по разработке системы управления множеством
компьютеров с Alterator, но по разным причинам это благополучно
затухло. Поскольку прикладной задачей сейчас здесь является
мониторинг и управление кластером размером с Т-500, то понятно,
что распределённость и масштабируемость приходится закладывать
сразу, а не оставлять на "когда-нибудь"; при этом анализ текущего
Alterator показал, что проще взять хорошие изначальные идеи и
переписать начисто, чем пытаться эволюционировать -- вот в этом
со Стасом возникло различие мнений.
Надо будет поинтересоваться текущим статусом разработки и есть ли
уже что полезного и публикуемого, но мож хоть Вам пригодится
(хотя честно говоря -- не уверен). Если хотите, могу покопать
переписку и пофорвардить обсуждение. (или даже лучше сюда?..)
--
---- WBR, Michael Shigorin <mike at altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
Подробная информация о списке рассылки devel-conf