| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование *NIX систем > Обновление парка машин Debian |
| Автор: ZeeLax 22.9.2007, 12:35 | ||||||||||||||||||||||
| Введение Процесс обновления большого количества машин (как серверов, так и рабочих станций) всегда представлял из себя нетривиальную задачу - необходимо получить новые версии пакетов программ (желательно, в формате вашего менеджера пакетов), распространить копии пакетов на все машины в сети (причем, для каждой из машин часто необходим "свой" набор пакетов), произвести установку обновлений. При установке ОС на новый сервер, тоже возникали проблемы - необходимо установить имеющуюся версию дистрибутива "наложив" полученные ранее обновления описанным выше способом, или же, загрузить iso-образ новой версии дистрибутива. Менеджеры пакетов современных дистрибутивов Linux облегчают процесс обновлений. Всё, что вам необходимо - это интернет-канал и небольшая настройка менеджера пакетов на использование необходимого набора пакетов и ближайших к вам зеркал. Менеджер пакетов сам определит пакеты, требующие обновления и их зависимости, загрузит всё это из сети и произведет установку. Установка новой системы также может происходить из сети. Предисловие В моей организации большая часть серверов находится под управлением дистрибутива Debian GNU/Linux, использующего систему пакетов APT, следовательно, рассматривать я буду именно её. Если вы используете другой дистрибутив, не спешите закрывать статью - основная идея может быть воспроизведена во многих современных дистрибутивах. Описание системы APT выходит за рамки данной статьи (и превосходит её по размеру Когда для подсчета серверов перестало хватать пальцев на руках, а география расположения расширилась от "одной серверной стойки" до "города и его окрестностей", совместно с коллегой было найдено решение, позволяющее своевременно обновлять ПО, не загружая при этом каналы интернет. Даже если имеется безлимитный высокоскоростной канал, всё равно не вижу смысла загружать его (каналы провайдеров, сервера Debian) обновлениями. Итак, решение состоит всего из двух пакетов - apt-proxy и jigdo. Первый используется для создания общего хранилища пакетов, а второй - для поддержания "свежести" iso-образов дистрибутивов Debian для установки новых систем, раздачи коллегам, друзьям и т.п. Но, обо всём по порядку. Apt-proxy Сеть организации в большинстве случаев обладает большей пропускной способностью, чем имеющиеся каналы интернет. Относительно стоимости - даже арендованные каналы обходятся дешевле публичных каналов интернет. В такой сети очень удобно иметь локальный сервер обновлений, находящийся на сервере, непосредственно подключенном к интернету и имеющим связь с другими серверами и DMZ. Apt-proxy является прокси-сервером особого типа, предназначенным специально для "общения" клиентов с зеркалами обновлений. Почему бы просто не воспользоваться обычным кэширующим прокси-сервером, спросите вы? Вот несколько причин:
Установка
Настройка Все параметры содержаться к конфигурационном файле /etc/apt-proxy/apt-proxy.conf (или /etc/apt-proxy/apt-proxy-v2.conf). Пример файла /etc/apt-proxy/apt-proxy-v2.conf
В секции DEFAULT содержатся общие настройки, смысл которых ясен из названий и комментариев. Все остальные секции являются описаниями ресурсов, упомянутых выше. Каждый ресурс содержит данные определенных репозиториев Debian. В примере выше debian - основной репозиторий, security - репозиторий обновлений безопасноти. Также необходимо внести соответствующие изменения в файлы /etc/apt/sources.list на клиентских машинах. Формат записи таков: deb http://адрес-apt-proxy/ресурс дистрибутив секция1 секция2. Пример исходного файла sources.list
Пример файла после перенастройки:
Использование Пользоваться APT нужно так же как и раньше.
Все скачиваемы пакеты будут кэшироваться apt-proxy. По-умолчанию кэш располагается в директории /var/cache/apt-proxy. Jigdo Казалось бы, на этом можно и остановиться. Кэш растёт, интернет трафик остаётся достаточно стабильным, независимо от количества обновляемых машин - всем хорошо. Но, мы решили пойти немного дальше, вспомнив о том, что неплохо было бы иметь свежие iso-образы дистрибутивов. Установка дома (где медленный DSL-канал), неожиданная командировка, поднятие сайта, удаленного географически, с последующим подключением (расширением) интернет-каналов - всё это требует наличия большого количества пакетов под рукой. Чем и является iso-образ в "отрезанном" на CD/DVD виде. ISO-образ можно загрузить из интернета как обычно, по протоколу HTTP или FTP. Для уменьшения нагрузки на серверы Debian можно воспользоваться протоколом BitTorrent. Но, какой бы из этих методов вы не выбрали - всё равно придётся загрузить ВЕСЬ ISO-образ, даже если от релиза к релизу изменилось всего несколько десятков файлов (на одном образе DVD содержится около 4000 файлов). Альтернативой является метод с использованием Jigdo. Схема проста: вы скачиваете два файла - файл .jigdo и файл .template. .template-файл представляет собой "шаблон" необходимого образа, содержащий загрузочную область, таблицу размещения файлов, описания каталогов и другие данные, не являющиеся пакетами Debian. Файлы пакетов заменены их контрольными суммами. Файл .jigdo содержит набор контрольная-сумма=имя-файла. Во время работы, утилита воссоздаёт iso-образ из .template файла. После этого, она начинает заполнять "пустые" области файлами, скачивая их из сети. Если у вас уже имеются некоторые файлы, необходимые для данного образа (например, предыдущий релиз дистрибутива), то вы можете указать утилите директорию для поиска файлов. Если таковые будут найдены (совпадает имя, размер и md5-сумма), они будут включены в образ без скачивания из сети. Таким образом, можно организовать, так называемое "инкрементное обновление" ISO-образов, значительно снижающее объём трафика и нагрузку на серверы Debian. Преимущества jigdo перед "обычной" загрузкой образов:
Никакой специальной настройки пакета не требуется. Так как мы собираемся только скачивать нужные образы, мы будем пользоваться только утилитой jigdo-lite. Для начала работы, нам понадобятся два файла - .jigdo файл и файл .template. Ссылки на эти файлы можно получить на сайте debian.org или напрямую найти их на зеркалах в директориях jigdo-cd или jigdo-dvd. Получив файлы, запускаем jigdo-lite, передав в качесвте пераметра имя .jigdo файла
Утилита определит имя образа и предложит нам указать каталог, в котором она может найти необходимые файлы. Также можно просто выбрать соответствующий номер пути, введенного ранее. В нашем случае, я монтирую предыдущий образ в директорию /mnt/cdrom
и выбираю первый путь, вводом единицы. Далее, можно хлебнуть кофе, т.к. поиск займёт какое-то время. После поиска, получаем:
Найдя нужные файлы, утилита запишет их в образ. Для поиска недостающих файлов, она ещё раз запросит у вас путь. В данном случае, так как файлов у нас больше нет, нажимаем enter, получая запрос на выбор зеркала. По умолчанию используются зеркала из sources.list.
Далее, опять нажимаем enter и идём пить пиво с друьями, т.к. в зависимости от ширины вашего канала и "разницы" в релизах загрузка может занять приличное время. По завершении процесса, утилита проверит контрольную сумму всего образа и, если всё верно, предоставит вам iso-файл, готовый к использованию. Просто, не правда ли? Послесловие Внимательный читатель, должен был заметить, что в последнем примере содержится ссылка на "интересное" зеркало Debian.
Да. Вы правильно догадались. Мы объединили эти два замечательных метода получив:
Ссылки http://debian.org http://apt-proxy.sourceforge.net http://www.tldp.org/HOWTO/Debian-Jigdo/ За время написания этой статьи автором были получны ISO-образы Debian Testing DVD-1 и DVD-2, посредством преобразования "предпоследнего" релиза в "последний". |
| Автор: JackYF 22.9.2007, 18:27 |
| Отличная статья! Про apt-proxy я слышал раньше, но и тут было полезно, про jidgo услышал впервые. Блин, где тут можно + за статью поставить? |
| Автор: powerfox 23.9.2007, 16:38 |
| Очень интересно. +1! Особенно за это. Настоящий линуксоид всегда думает о других! |