автоматизация установки ОС Linux на примере SystemImager

задача

Снизить стоимость поддержки решения, в частности – автоматизировать установку операционной системы GNU/Linux.

общие соображения

Системная инсталляция – начальная установка программного обеспечения и конфигурации, необходимой для обслуживания машины. Заводская поставка машин может не иметь никакой операционной системы вообще, или иметь прединсталлированное программное обеспечение. Машины, бывшие в использовании и имеющие нежелательное ПО, могут также использоваться – достаточно установить новое программное обеспечение.

Первая задача системного инсталлятора состоит в том, чтобы загрузить целевую машину. Чтобы осистемить незагружаемые машины типа свежесобранных машин с неформатированными жесткими дисками, BIOS должна поддерживать по крайней мере один загрузочный метод, отличный от жесткого диска. Самый старый метод альтернативной загрузки - с гибкого диска. И хотя это широко доступно, метод предполагает, что дисковод для гибких дискет присутствует. Такое положение дел будет существовать не вечно – дискеты медленны, ненадежны и имеют очень ограниченное пространство для современных систем. Большинство машин, собранных начиная с 1997 года, поддерживает загрузку с CD-ROM, эмулируя загрузочную запись гибкого диска. Если присутствует привод компакт-диска, это предлагает большее пространство и для начального загрузочного программного обеспечения и любого другого требуемого ПО. Более сложный загрузочный метод – загрузка из локальной сети. Не все варианты BIOS или сетевые платы поддерживают эту новую особенность. Среда предварительного выполнения PXE - часть промышленного стандарта WfM - дает возможность большинству машин, купленных позже 1998 года, загрузиться из локальной сети.

Инсталлятор должен обратиться к соответствующим инсталляционным носителям, содержащим программное обеспечение более высокого уровня, чем необходимое для загрузки машины. Скорее всего, это программное обеспечение будет сохранено на локальном CD-ROM или сетевом сервере (к примеру, FTP или rsync). Еще одним вариантом может быть отдельный компакт-диск с “фотографией” используемого ПО (snapshot). Так как вместимость CD-ROM не всегда удовлетворяет потребностям, имеет смысл использование правильного сжатия информации. Использование подобного статического снимка может быть подходящим решением, если программное обеспечение вряд ли изменится или если необходима только базовая инсталляция, на которую пользователь будет самостоятельно «навешивать» прикладное программное обеспечение. В общем, сетевая инсталляция более гибка, может быть достаточно быстрой, предлагает большую вместимость носителей, лучше масштабируется для множественной параллельной установки, чем использование для этих целей компакт-дисков. Определенным ограничением может быть пропускная способность локальной сети, что необходимо учитывать при выборе варианта инсталляции.

ручная установка

Наиболее распространенная практика, особенно характерная для отечественных сисадминов. Скорее всего, это последствия преобладания несвободных операционных систем и неразвитости сетевой инфраструктуры.

Чаще всего программное обеспечение распространяется на компакт-дисках, включая загрузочный инсталляционный диск. Некоторые автоматические подсказки могут «вести» администратора по процедуре инсталляции, но, в конечном счете, вся настройка под конечного пользователя производится вручную.

Большинство современных Linux-дистрибутивов имеет свою собственную инсталляционную программу, например alterator у ALT Linux, anaconda у Red Hat, YAST2 у дистрибутива SUSE...

Общее, что характерно для всех этих продуктов – почти все настройки, включая разбиение жесткого диска, описание аппаратной конфигурации, сетевые настройки и выбор пакетов, должны быть введены вручную.

Минус подобного варианта – процесс чрезвычайно требователен к уровню подготовки персонала и предполагает значительные затраты рабочего времени. Однако, самое опасное тут – это свойство человека ошибаться.

клонирование образа

Применяется, если на всех машинах используется схожий (в идеале – одинаковый) набор ПО. Сначала вручную создается (инсталлируется) прообраз машины, так называемый «золотой клиент», после этого клонируется тем или иным способом (к примеру – целыми файловыми системами командой dd). Так как готовые файловые системы могут быть скопированы на диск быстрее, чем с помощью пофайлового копирования, это в принципе является самым быстрым вариантом инсталляции.

Однако этот подход имеет следующие отрицательные стороны, среди которых следует отметить необходимость вскрытия системного блока и... опять- таки, достаточно высокие требования к уровню подготовки персонала в случае конфигурирования не идентичных клиентских машин.

клонирование по сети

Живые дистрибутивы типа ALT Linux Live, он же Travel CD или Knoppix (к примеру – Knoppix-UA), где идет загрузка полной среды GNU/Linux с одного CD-ROM/DVD-ROM, или другие «спасательные диски» могут использоваться, чтобы копировать образы файловых систем золотого клиента на другие машины. Конфигурация и настройка под конкретного пользователя могут быть добавлены сценариями, выполняемыми до или после инсталляции. На этом принципе работают некоторые продукты, к примеру, SystemImager и g4l.

SystemImager

Обеспечивает инсталляцию ОС, конфигурацию и обслуживание для больших сетей, предпочтительно с подобными или одинаковыми аппаратными средствами, для нескольких дистрибутивов. Целевая станция может загружаться с гибкого диска, CD-ROM или PXE. Мы проверяли работу System Imager с ALT Linux 3.0 и Mandrake 10, однако продукт анонсирован как работающий на всех дистрибутивах GNU/Linux.

Золотой клиент должен быть вручную установлен и сконфигурирован. Его файловая система после этого переносится на сервер, и именно с него устанавливаются целевые машины. Если золотой клиент модифицирован, эти изменения размножаются клиентам при помощи rsync. Хотя rsync посылает по сети только изменения, даже это может потребовать, существенных сетевых ресурсов, а первоначальная установка полной рабочей станции – объем около полутора Гб – на 10 мегабитах и вовсе достаточно грустное зрелище.

Отрицательные моменты:

Раздача PXE, кстати, достаточно опасная вещь – возможна ситуация, когда машина с установленной ОС Windows будет случайно настроена на загрузку по сети, и через 30 минут счастливый пользователь получит готовую к употреблению ОС GNU/Linux :). Второй момент – на данный момент из-за достаточно старого parted SystemImager создает только первичные разделы.

g4l

Загрузочный CD-образ весит около 40 Мб. Судя по описанию, может по сети затянуть образ партиций как пофайлово (Linux-разделы), так и побайтово (нелинуксовые разделы, к примеру, NTFS). Требует качественной сети (на 10 мегабитах задуть три гигабайта – грустное занятие).

mkcdrec

На болванке (или на нескольких) можно разместить сжатый образ системы. Полностью автономен и, следовательно, удобно применять для установки на географически распределенных станциях. Соответственно, отсюда следует минус — при изменении образа золотого клиента требуется переделывать все образы.

FAI (Fully Automatic Installation)

Полностью автоматическая инсталляция Debian. Пакеты программ берутся с debian.org, который может быть скопирован в местном масштабе (mirroring) для увеличения скорости доступа или предварительной настройки. Ядро инсталлятора может быть загружено из сети или с гибкого диска, поддержка CD- ROM пока еще отсутствует. Хотя FAI был разработан для идентичного дублирования предварительно сгруппированных машин, программное обеспечение cfengine используется для системной конфигурации и обеспечивает большую гибкость в конфигурировании.

Red Hat Kickstart

Программное обеспечение автоматической установки Red Hat устанавливает дистрибутивы Red Hat с CD-ROM, жесткого диска или сети. Способно загружаться с сети, компакт-диска или гибкого диска. Инсталлятор anaconda предлагает текстовый или графический интерфейс, и может работать в интерактивном или полностью автоматизированном режиме. Программное обеспечение обнаружения железа kudzu понимает широкий диапазон устройств. Общие инсталляционные опции могут быть установлены в файле конфигурации, и расширениях, добавленных с пред- и пост- инсталляционными сценариями.

почему SystemImager?

Использовать SystemImager я рекомендую в случае, если размер дистрибутива превышает 2 Мб и есть высокоскоростное соединение между клиентами и сервером (к примеру, в локальной сети). Второй положительный момент – независимость от наличия компакт-диска на рабочей станции. И, наконец, не может не радовать то, что продукт состоит из набора скриптов на Perl и шелле и модифицировать его несложно.

установка SystemImager

Требования к серверу. Сервер SystemImager должен иметь достаточно дискового пространства для образа(ов) устанавливаемой системы (ориентировочно, около 1.7Гб на образ). Для PXE-инсталляций на сервере должен быть установлен TFTP-сервер. Обязательно должны присутствовать DHCP-сервер и Perl. Аппаратное обеспечение – практически любая станция с быстрой сетевой картой. Проверена работа сервера на ноутбуке класса P3-500, 256 Mb RAM, 12 Gb HDD.

Требования к клиентам. Клиентские станции, использующие один и тот же образ, должны иметь максимально подобное аппаратное обеспечение. Особенно это касается чипсетов сетевых карт и типов жестких дисков (поддерживаются IDE, SATA и SCSI). Не рекомендуется использовать рабочие станции классом ниже K6-200.

установка

Установите SystemImager с помощью привычного менеджера пакетов или вручную. В результате вы получите набор программ (скриптов) SystemImager в /usr/sbin/, в /var/lib/systemimager/ расположится сам пакет:

- скрипты для клиентов в /var/lib/systemimager/scripts;

- образы золотого клиента в /var/lib/systemimager/images/;

- каталог для «особых клиентов» /var/lib/systemimager/overrides;

- настройки systemimager – традиционно в /etc/systemimager.

В /etc/xinetd.d/tftp настраиваем TFTP-сервер:

service tftp
{
disable = yes
socket_type = dgram
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u tftp -s /var/lib/tftpboot
}


Далее настраиваем PXE, редактируя/var/lib/tftpboot/pxelinux.cfg/default:

default linux
prompt 1
timeout 100
readinfo 2
#implicit 0
label linux
kernel kernel
append initrd=initrd.img ramdisk_size=54000 root=/dev/ram


создание «золотого клиента»

Для золотого клиента следует выбрать среднестатистическую станцию с наиболее типичным аппаратным обеспечением. На данной рабочей станции следует установить и настроить все необходимое ПО, а также установить клиентскую часть SystemImager.

Ни первая, ни вторая задача не должна представлять сложности для достаточно опытного системного администратора. Можно только сказать, что необходимо найти золотую середину между функциональностью ПО и дисковым пространством. Эмпирическим путем установлено, что офисная рабочая станция с Ice WM и Open Office имеет размер образа около 1,7 Гб.

При создании золотого клиента рекомендую:

- не создавать более четырех первичных разделов;

- внести в initrd.img достаточно большое количество модулей (к примеру, sata_nv, sata_via etc). Это особенно важно, если золотой клиент готовится на IDE, но возможна установка на SATA-диски;

- создать красивый и полный /etc/skel – это упростит процедуру создания и настройки новых пользователей. В него рекомендуется уложить предварительно настроенные профили Open Office и mozilla;

- создать пользователя, имеющего право на sudo (к примеру, radmin) и уложить в его каталог $HOME/.ssh/authorized_keys, что упростит администрирование;

- установить локали языков, принятых в регионе;

- установить драйверы (ppd-файлы) используемых принтеров;

- настроить монтирование общих сетевых ресурсов;

- настроить очистку временных каталогов, к примеру, /tmp и /var/cache/apt/archives (последний можно не чистить в некоторых дистрибутивах :-) Не рекомендуется укладывать в домашний каталог пользователя шаблоны документов и регулярно изменяемую документацию – лучше выложить это на серверы и прописать пути к ним.

Следующий этап – подготовка клиентской станции для переноса образа на сервер. Для этого следует от root выполнить команду si_prepareclient. Эта команда создаст несколько файлов в etc/systemimager. В этих файлах описана информация о разбиении диска на разделы, а также перечислены файловые системы и каталоги, которые не следует переносить в образ (к примеру, /proc). Программа si_prepareclient должна запустить демон rsync для переноса файлов золотого клиента на сервер.

С этого момента клиентская станция готова для передачи данных на сервер.

перенос образа клиента на сервер

На сервере выполните команду

#si_getimage -golden-client имя_клиента -image имя_образа_на_сервере

Файлы золотого клиента будут перенесены на сервер в каталог /var/lib/systemimager/images/название_образа.

Образ на сервере представляет собой слепок с золотого клиента. С целью уменьшения объема образа можно почистить некоторые каталоги (к примеру, /usr/share/doc) но не рекомендуется вручную удалять программы – разнести вдребезги систему не просто, а очень просто! :)

Важное замечание: хорошей практикой будет не перезаписывать имеющийся образ на сервере. Рекомендуется в название образов ввести хотя бы версию (например, yyyymmdd).

мастер-скрипт

Теперь необходимо указать, какие станции будут использовать образ.

Для этого следует выполнить команду si_addclients, которая задаст несколько вопросов и создаст мастер-скрипты в каталоге
/var/lib/systemimager/scripts и симлинки на него. Каждый симлинк в своем имени содержит имя станции.

В мастер-скрипте (в зависимости от версии программі файл с расширением .sh или .master) прописано имя образа, к примеру:

$ cat adiel.master | grep IMAGENAME=
[ -z $IMAGENAME ] && IMAGENAME=adiel_image_v1)


создание загрузочного диска

Последний этап подготовки к массовой инсталляции – создание загрузочного диска (дискеты или компакт-диска).

Для этого есть две команды – si_mkautoinstalldiskette и si_mkautoinstallcd.

Обе команды используют утилиту syslinux для создания загрузочных носителей, которые загрузят SystemImager и initial ram disk.

подготовка к установке клиентской станции

Для каждой станции настраиваем DHCP-сервер - в /etc/dhcp/dhcpd.conf прописываем для всех (для каждой отдельно – безопаснее) сетевых карт адрес и образ:

host ws4 {
hardware ethernet 00:01:80:05:00:62;
fixed-address 10.0.1.104;
filename "pxelinux.bin";
}


Естественно, затем рестартуем dhcp.

Затем настраиваем SystemImager на сервере. В случае, если у нас станции одинаковой архитектуры и есть один образ, в
/var/lib/systemimager/scripts создаем симлинк имя_станции.sh (или .master) на мастер-скрипт (файл с именем образа и расширением .sh или .master). И все - можно устанавливать рабочую станцию.

Однако зачастую используется несколько архитектур, к примеру – на данный момент на рабочих станциях распространены три вида жестких дисков – IDE, SATA и SCSI. Держать для каждого случая свой образ глупо – это и место на винчестере (не удалять же музыку ;), это и сложность синхронизации образов.

Все, что требуется – создать в overrides каталог, уложить туда отличающиеся от стандартного образа файлы и прописать путь с исключениями в скрипте рабочей станции. Естественно, в этом случае лучше не создавать симлинк на мастер-скрипт, а скопировать этот мастер-скрипт в имя_станции.sh и изменять эту копию.

В мастер-скрипте в районе 30-й строки прописаны каталог с образом и каталог исключений. Соответственно, требуется настроить эти параметры. Подробности приведены в /var/lib/systemimager/overrides/README
Готовая рабочая станция будет в нашем распоряжении примерно через полчаса (время зависит от загруженности сети и размера образа). Естественно, ее затем следует подстроить – подобрать видеорежим, создать недефолтных локальных пользователей либо что-то еще.

заключение

SystemImager позволяет достаточно быстро установить ОС GNU/Linux на рабочие станции. Таким образом, экономится время системных администраторов и снижается вероятность ошибки, что в свою очередь снижает стоимость установки GNU/Linux.



WadimMashckoff, статья распространяется на условиях GNU FDL


Сетевые решения. Статья была опубликована в номере 04 за 2007 год в рубрике sysadmin

©1999-2024 Сетевые решения