P.S. Для тех, кто не осилит: суть треда в проблемах использования ПО автогенерации конфигов и оркестрирования в современном мире.
Воу-воу, полегче, ЛОР!
Посмотрел я на AIX, продукты Red Hat, яву, на кеды, на systemd, продукты Mozilla и у меня случился Батрудинов (я бы даже сказал хороший французский багет)! Точнее багет случился, когда я начал писать рецепты для ПО в puppet.
Почему всё ПО не использует нормальные, документированные и понятные конфиги, как у этого ПО? Почему не использовать внешнее (удаленное) хранилище конфигов или XML-конфиги?
Тот же firefox имеет хранилище конфигурационных опций с описанием (по которым, кстати, ещё и онлайн-справка расширенная доступна).
AIX вообще использует кошерное внешнее хранилище (увы, не для всего) конфигов. И умеет к нему удобный псевдогуй, и консольный доступ.
Systemd позволяет удобно описать юниты самой разной направленности. И работать всё это будет гарантированно и стабильно. Не то что скрипты инициализации, которые вообще не понятно, отработают или нет.
Почти все серверные продукты RedHat управляются через XML-конфиги и БД.
Большинство ПО под яву юзает читабельные XML-конфиги с комментами.
А что мы видим обычно?
Apache2: конфиги вообще не документированы, код имеет очень хитрую обработку конфигов (в которых одно и то же можно сделать десятью методами). Даже обработка случая, когда запрашивается несуществующий (дефолтный) домен, может быть задана минимум 3-мя способами (причём ни один из них не является явным).
Nginx: уже лучше, что всё-равно кофиги не очень: их уже можно нормально генерировать, но вот считать их и распарсить уже не выйдет.
Asterisk: это ПО просто эталонный пример недокументрованных забагованных функций, странного поведения, взаимозаменяющих и устаревших опций, непонятных дефолтных настроек. После перехода на FreeSwitch с XML-конфигами и JS-скриптами я перестал просыпаться ночью в холодном поту и дозваниваться на IVR.
БД (любые почти: mysql, postgresql, postgresql XL, firebird). Такое ощущение, что конфиги проектировались для БД на 10 запросов в секунду, которая работает максимум с тремя клиентами, но никак не для кластеров. Кластерные конфигурации вообще очень странные: многое нельзя сделать на лету, настройки хранятся как в конфигах (INI-подобных), так и в системных таблицах. Это очень неудобно, особенно в облачном случае, когда БД надо масштабировать на лету, либо обеспечивать HA.
У postgresql настройка вообще совсем не простая: из-за отсутсвтвия движка интеллектуального вакууминга (как у оракла) его надо настраивать вручную под каждую конфигурацию, причём очень хорошо понимать особенности текущий конфигурации. Также постгрес имеет исторически большой набор ПО, которое расширяет возможности БД, работая, как глобальные встроенные функции и триггеры. Они как хотят, так и хранят свои настройки.
DE. Ну тут всё просто: твоё приложение - твои правила! Конфигами рулить очень сложно.
Оборудование. IPMI нормально работает только через питоновые либы, которые определяют конкретный сервер и конкретную реализацию IPMI. Логи тоже не стандартизированы. Из настройки в автоматическом режиме доступен только порядок загрузки. Для всего остального надо заходить руками в EFI/BIOS. Часто даже утилит для бекапа и развёртки на другие сервера этих конфигов биоса нет.
Конфигурационные файлы многих СПО приложений напоминают perl-код с регекспами: обычно даже разработчик не может точно сказать, как это работает.
Про кривую автоматизацию генерации таких конфигов я вообще молчу: один спецсимвол в рецепте puppet и сервис ляжет.
На тему людей, которые хотят человекочитаемые конфиги, а не нормальный интерфейс machine2machine, у меня родилась зарисовка:
http://www.youtube.com/watch?v=f6dGb2I8iB0
Почему, мистер Андерсон? Почему? Во имя чего? Что Вы делаете? Зачем, зачем пишете велосипеды? Зачем продолжаете костылить? Нужели Вы верите в какой-нибудь KISS, или Вам просто страшно слиться? Так в чём же приемущества plain-конфигов, может откроете? Это свобода? Минималистичность? Может быть чистота, или Вы боретесь за читабельность? Иллюзия, мистер Андерсон, причуды кодинга. Хрупкие логические теории слабого программиста, который отчаянно пытается оправдать существование устаревших форматов, безсхемных и бессмысленных. Но они, мистер Андерсон, как и языки с прямым доступом к памяти, столь же искусственны. Только человек может придумать скучное и безжизненное понятие «читабельность». Вам пора это увидеть, мистер Андерсон, увидеть и понять: Вы не можете победить XML, продолжать борьбу с энтерпрайзом бессмысленно. Почему, почему, мистер Андерсон, почему Вы упорствуете?
Перемещено leave из general