Из серии "знаете ли вы что..." :-).
В Яндексе выкладывание всего рабочего кода на серверы управляется системой Debian'овских пакетов.
Хотя наверное копирование между несколькими машинами в кластере делается какой-то другой автоматикой, но вот само действие "выложить новую версию кода на сервер" делается админами с помощью стандартного apt-get'а. Мне всегда было интересно, как это делается у умных людей, потому что я в своих проектах как-то никогда сам не доходил до вопросов автоматизации обновления боевого работающего кода, потому что мои проекты никогда, прямо скажем, не были такими масштабными и критическими.
При ближайшем рассмотрении оказалось, что apt — это мощная и универсальная штука, в которой есть все что нужно для такого сценария. Админам не нужно вникать в детали каждого проекта: разработчик просто присылает название пакета, который надо установить, и он ставится. Проверка версий, установка зависимостей, предварительная настройка, прописывание init-скриптов — все это можно описать в пакете. А я, помнится, процесс установки одного своего сервиса подробно описывал словами в wiki, чтобы админ все это делал вручную :-). А если в рабочем коде вдруг обнаружатся дикие баги, которые не выявило внутреннее тестирование, то админ, ничего не зная о коде, может просто заменить его на предыдущую работающую версию.
Но есть и минусы. Сегодня я упаковал в Яндексе свой первый собственный пакет. Процесс оказался геморройным: слишком много файликов, слишком много "вспомогательных" скриптов, слишком много надо помнить, что где поменять. Но коллеги вокруг говорят, что я привыкну :-).
Пользуясь случаем хочу выразить благодарность Андрею и Ване за терпение к моим многократным вопросам по каждому поводу :-)
И еще на связанную тему... Это, в общем-то, и не новость уже, но Яндекс официально хостит дистрибутивы многих линуксов на http://mirror.yandex.ru. Причем, для многих дистрибутивов (в том числе, для моей любимой Ubuntu) мы являемся официальным зеркалом.
Комментарии: 32
Да, дебиановские пакеты - не самая простая штука. :(
Это гуд, что разбираешься. Порядку быть :)
В deb не всё так сложно как кажется на первый взгляд. Просто в "большой сети" я не находил quick start по сборке deb, а большой по размеру доки многие пугаются.
Интересно, на RPM можно чо-то подобное сделать?
А что происходит, если новая версия требует изменения бд?
Как откатить код ясно, а если возможность отката бд?
Да, с rpm можно сделать тоже самое.
А какие проблемы? Вот разве что там все щас yum'ом пользуются, который apt'у в подмётки не годится.
Да, применение apt'а кажется целесообразным. Интересно.
весьма интересно ;)
значит ли это что весь яндекс работает на дебиане, или на клоне, или вообще на чем-то своем с интегрированым apt?
Да, у нас в основном Debian. Есть и что-то другое, но я специально не узнавал, поэтому врать не буду.
А пчу в вас там не убунту?! ;-)
[В Яндексе выкладывание всего рабочего кода на серверы управляется системой Debian'овских пакетов.]
Хм... В сентябре поеду на highload - поинтересуюсь об особенностях OS.
Рекомендую бросить глаз на утилитку checkinstall (есть в оф. репозиториях дебиана), помогает со сборкой deb-ов, rpm-ок и tgz из исходников.
Про сборку из исходников в пакет
http://forum.ubuntu.ru/index.php?topic=11609.0
во-первых, есть apt-rpm
во-вторых, это довольно спорно, я давно не использовал yum, но насколько я помню, он примерно ту же функциональность предоставляет.
а deb и rpm весьма похожи. что позволяет существовать таким штукам, как alien.
Я ж написал, что увлекаются yum'ом. Для apt-rpm как минимум придётся самому мейнтейнить репозиторий, потому что их нету уже вменяемых для большинства ОС. Да и сами rpm-based линухи куда как менее стройные, чем дебиан. :)
Что значит спорно? Yum умеет на порядки меньше. Те же preferences в нём реализованы очень куцо (вообще они там есть, может я его с кем-то ещё путаю?).
При чём тут это?
Вот это IMHO пример правильно сделанной вещи ),
собственно apt для этого и сделан был - софт
распространять и ставить.
А по поводу yum - preferences это проблема rpm а не yum. Yum только высокоуровневая надстройка. Но yum бы с этой задачей справился ничуть не хуже Fedora вон вполне нормально себя на нем чувствует. А Яндекс ну ни разу не федора по масштабам.
Я тут долго искал imHo, но че-то не нашел.
Я ж написал, что увлекаются yum’ом. Для apt-rpm как минимум придётся самому мейнтейнить репозиторий, потому что их нету уже вменяемых для большинства ОС.
Это абсолютная неправда, так как сейчас используются одинаковые мета-данные и для YUM и для APT-RPM и для SMART. Другое дело что APT-RPM это уже прошлый день.
Я сам deb gакеты не делал, но скорее всего все
конфиг файлы текстовые. Так может cheetah(или че другое) + Django GUI спасут отца русской демократии? Мне для rpm весьма помогало.
Ну тогда о чём мы говорим? Апт - на голову сильнее юма. Это неоспоримый факт. Если апт-рпм - прошедший день, то может с ним что-то не то?
Ок. Но в двух словах - какая разница? ;)
А что такое Федора? А это дистр для экспериментов редхета. Так какая разница, как она себя на чём чувствует?
Гм. Федора не является для меня каким-то таким дистром, который можно себе на сервер поставить. Что в ней хорошего? Недоменеджер (по меркам апта) пакетов? Или невероятная bleeding-edge'нутость?
orly? С чего он там должен быть? Это факт. ;)
Привет от длинноволосого, которые гостили у вас сегодня в Яндексе.
Я тебя таки узнал. Всё время подозревал, а потом фамилия выдала с потрохами.
Вообще-то, под Debian у нас не так много бегает. Основной парк - это FreeBSD разных версий.
В смысле в Яндексе?
Ну так не Федора же! ;) Да и Фря - ничуть не хуже деба имхо, но я больше люблю бинарники. :)
В смысле да :).
Я про серверы, конечно. На рабочих станциях, если сотрудник желает Linux, ставится Ubuntu.
А если не хочет ни Windows, ни Linux, то получает MacBook.
...админам пополам, что стоит. Учаснегу самому мучаться. :D У нас та же ситуация.
Ну, почему же? Хелпдеск нормально саппортит Ubuntu, как и Windows. Вот с MacOS приходится самим разбираться.
Правда, чаще не приходится - не надо там разбираться :).
А вот кстати было бы интересно подробнее узнать про использование apt для такого configuration management'а. Можешь подробнее процесс/что-где-когда-зачем описать?
эх, почитать - так прям сплошной шоколад: внутреннее тестирование, пакеты... :)
Скажем, в ALT Linux apt-rpm живёт и побеждает. И обходит deb по простоте сборке пакетов. Потому как всё донельзя оптимизировано, шаблонизировано и вычищено от лишних телодвижений. Собственно, после пары лет с альтовым сборочным конвеером от сборки deb волосы стали дыбом. Но это решение из-за малой распространённости подходит только для тех, кто "умеет и понимает зачем".
А ещё есть stow — менеджер установленных из исходников пакетов. Специально для любителей экспериментов с соблюдением чистоты и стерильности в лаборатории бинарников.
есть, кстати, хорошее видео из google-вских tech-talks - inside debian package :)
После того, как я упаковал свой 3-й или 4-й пакет в яндексе, левел у меня явно поднялся (первые левелы быстро растут) и всё стало казаться намного проще и удобнее.