среда, 4 мая 2016 г.

Новый ALT Linux Live

Обновил ALT Linux Live до почти уже вышедшего branch/p8, комплектация немного изменилась: CD/DVD-носители уже не слишком актуальны, поэтому iso выкладываются главным образом для запуска в виртуальных средах. Архивы tar предназначены для записи образов на USB flash. В каждом образе по прежнему есть 3 варианта загрузки: console, openbox, xfce. Все варианты (включая консольный) теперь используют systemd. После знакомства с аналогами инит-скриптов, появления systemd-networkd и systemd-nspawn / machinectl, а также после выхода RHEL7 и Ubuntu LTS с systemd я наконец проникся.

Образы собираются из нового профиля, т.к. старый оброс различными артефактами и стал слишком сложным. Кроме того, завел наконец вики-страничку с чуть более пространным описанием.

понедельник, 29 сентября 2014 г.

Автозапуск в ALT Linux Live

Снова обновил ALT Linux Live до актуального branch/t7, образов стало чуть больше: В образ с openbox добавлен автозапуск панели tint2 с минимальной конфигурацией (пиктограмма для запуска терминала, список задач, отображение текущей даты/времени) и скриптов из /image/hooks.openbox непосредственно после запуска панели. Аналогичным образом все образы умеют запускать скрипты из /image/hooks.system - но уже с полномочиями суперпользователя (спасибо gns@).

Все это полезно при загрузке корня средствами propagator по NFS или с локального USB-диска - тогда рядом со сжатым корнем можно положить скрипты для дополнительной индивидуальной настройки загружаемой системы. Краткая инструкция по загрузке с NFS и USB внутри образов, код по прежнему в репозитарии m-p-l в бранче autoconf.

пятница, 18 октября 2013 г.

Новая сборка ALT Linux Live

Еще раз обновил ALT Linux Live до только что вышедшего branch/t7, снова доступны образы: Хоть я и обещал, что предыдущая сборка будет последней, перебраться с m-p-l на m-p пока не вышло.

В процессе пришлось определяться с отношением к systemd. Я не готов бежать впереди паровоза RHEL7 и даже на новых серверах пока не планирую его использовать, поэтому на собственном десктопе - тоже. Соответственно, в этих образах по-прежнему используется sysvinit, сменные носители монтируются в /media, ipv6 выключен, сетевые интерфейсы именуются как eth* - что еще нужно ретрограду? :)

понедельник, 19 августа 2013 г.

Записи в DNS из NetXMS

Отказался от dnsmasq в пользу PowerDNS в качестве внутреннего DNS-сервера. Причина - разнообразие бакендов в PowerDNS, из которых самым полезным для меня оказался Generic PgSQL backend. Теперь внутренние адреса хостов разрешаются в имена и наоборот не из файла /etc/hosts, а из БД внутренней системы мониторинга NetXMS, в которой все важные хосты гарантированно присутствуют.

Подробности в статье на Хабре - нужно же мне было каким-то образом добыть возможность комментировать разные интересные вещи, которые там, бывает, появляются :)

суббота, 1 декабря 2012 г.

FreeSWITCH users via LDAP

Потребовалось авторизовать пользователей FreeSWITCH через LDAP вместо XML Directory. Оба имевшихся в комплекте модуля оказались со странностями:
  • mod_ldap вообще не похож на рабочий, код просто недописан
  • mod_xml_ldap пытается быть слишком универсальным и предполагает использование собственной схемы, в которой для одного пользователя предполагается иметь по записи для каждого параметра вместо очевидного, казалось бы, решения - добывать необходимую для авторизации информацию прямо из имеющихся атрибутов записей с objectClass=person
Впрочем, у FreeSWITCH есть универсальное решение для 99% интеграционных задач - mod_xml_curl + внешний HTTP-сервер (или один из поддерживаемых встраиваемых скриптовых языков). Беда в том, что это решение затягивает. Меня затянуло до встраивания LDAP-сервера :).

Затем я пришел в себя и решил все же еще раз вчитаться в код нативных модулей и исправить/переписать тот, который окажется более вменяемым. Все оказалось проще - второй модуль уже почти переписали и, видимо следуя общей традиции поддержки LDAP, таки бросили уже почти на финише.

Сделать последний шаг оказалось несложно. Оно работает, хотя и нуждается в более тщательном тестировании.

пятница, 22 июня 2012 г.

Рок-н-ролл мертв, а Perl еще нет

Никогда не предполагал, что окажусь в шкуре Perl-программиста - но это случилось. На новом месте (региональная сеть NGN/IMS) мне досталась в наследство куча перлового кода (предбиллинг, управление подключениями, устройствами, услугами) и полтора программиста, способные значительным усилием воли его читать, а в крайнем случае даже править. Автора этого безобразия большей части кода я уже не застал, хотя до того успел пообщаться с ним, находять по другую сторону баррикад и подключая Asterisk/CallWeaver и FreeSWITCH к операторскому оборудованию.

Конечно, я надеялся все переписать все на Java/Groovy, однако вовремя остановился - это оказалось слишком дорого и больно. В итоге мы остановились на Perl и это позволило:
  • Постепенно переписывать работающий код по частям и повторно использовать некоторый унаследованный код после минимального рефакторинга
  • Не переучивать коллег - разве что более осознанно подойти к coding conventions
Пришлось, правда, переучиваться самому - плевался поначалу, но втянулся.

Значительная часть как старого, так и нового кода в итоге оказалась внутри модулей, написанных в процедурном стиле и пригодных к использованию в качестве автономных утилит:
#!/usr/bin/perl

package MyModule;

sub calculate {
  ...
}

calculate(@ARGV) unless caller();
Эти же утилиты являются по сути функциональными тестами. От юнит-тестов мы отказались, т.к. их честная реализация во многих случах свелась бы к написанию эмуляторов внешних систем и оборудования, с которым приходится работать.

Но чаще модули не запускаются вручную сменным инженером или кроном, а собираются в более крупные единицы: Последние можно разрабатывать разными способами: Я бы рассмотрел всерьез первый или второй вариант, а также запуск приложения под управлением какой-нибудь минимальной реализации на С вроде uwsgi (она приглянулась мне больше evpsgi, патча для nginx и модуля для Apache), если бы у нас были серьезные требования к производительности. Однако к web-интерфейсу не предполагалось публичного доступа, зато требования к простоте разработки очень даже предъявлялись. В итоге был выбран Mojolicious и скорее по иррациональным соображениям - в нашей местности обитают люди, которые очень его любят.

Сейчас весь старый код работает на последнем оставшемся сервере с Slakware 12.2.0 (который поначалу было едва справлялся с нагрузкой а сейчас почти отдыхает) и потихоньку переползает на новые сервера с ALT Linux. В последнем пришлось обновить Mojolicious, Plack и Starman, который используется в качестве самостоятельного web-сервера без всяких фронтендов типа nginx и тем более apache. Я также опакетил evpsgi и начал было перепиливать сборку uwsgi, однако быстро потерял к ним интерес - поэтому до репозитария они не добрались.

четверг, 10 мая 2012 г.

NetXMS network monitoring system

Собрал в Сизиф и t6/branch систему мониторинга NetXMS, привлекшую к себе внимание даже не столько эффективной архитектурой, сколько в первую очередь своей консолью:

Она кажется более наглядной и при этом достаточно простой для сменных инженеров по сравнению с любым веб-интерфейсом (ну или как минимум по сравнению со знакомыми мне OpenNMS и Zabbix). Благодаря Eclipse/RAP ее можно запустить не только в качестве кроссплатформенного десктопного приложения, но и через веб тоже - хотя работать с ней таким образом все же менее комфортно.

Да, апстрим добрый и отзывчивый: баги исправляют, фичреквесты реализуют (или, по крайней мере, задумываются), по-русски говорят.