01.07.2007

Автоматизация развертывания RHEL. Неинтерактивная инсталляция.

Раньше мы описали инфраструктуру для развертывания RHEL в условиях масштабной инфраструктуры. И хотя наша инфраструктура позволяла устанавливать RHEL сразу на произвольном количестве компьютеров, ей чего-то не хватало. Не хватало возможности неинтерактивной инсталляции.

Такая технология давно существует в стенах Red Hat и имя ей KickStart. Сегодня мы рассмотрим эту технологию и ее применений на примере сетевой инсталляции RHEL5. Операционная система сервера в примере – RHEL4, но может быть произвольной.

Итак, создаем kickstart-файл.

Что такое kickstart-файл? Kickstart-файл – это сценарий установки. «У меня все ходы записаны». То есть сценарий установки подразумевает заранее записанные в определенном формате ответы на вопросы инсталлятора. Добавьте возможность выполнять собственные скрипты до и после установки и вы получите более-менее полное представление о возможностях kickstart. Приведем простой пример ks-файла

  1. install
  2. url --url ftp://192.168.0.2/redhat/disk1
  3. key [installation number]
  4. lang en_US.UTF-8
  5. keyboard us
  6. xconfig --startxonboot --defaultdesktop kde --resolution 1400x1050 --depth 32
  7. network --device eth0 --bootproto dhcp --onboot=on
  8. rootpw --iscrypted $1$vFt/3HTE$N16kauXMVOmNHurppHAo0/
  9. firewall --disabled
  10. authconfig --useshadow --enablemd5
  11. selinux --disabled
  12. timezone --utc Europe/Moscow
  13. bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
  14. #
  15. clearpart --all --initlabel
  16. part /boot --fstype ext3 --size=100 --asprimary
  17. part pv.100001 --size=20000 --asprimary
  18. part pv.100000 --size=20000 --asprimary
  19. part pv.100002 --size=1 --grow --asprimary
  20. volgroup sysvg --pesize=32768 pv.100000 pv.100001 pv.100002
  21. logvol swap --fstype swap --name=swap --vgname=sysvg --size=2000
  22. logvol /home --fstype ext3 --name=home --vgname=sysvg --size=1 --grow
  23. logvol / --fstype ext3 --name=root --vgname=sysvg –size=20000
  24. firstboot --disable
  25. reboot
  26. #
  27. %packages
  28. @admin-tools
  29. @base
  30. @core
  31. @system-tools
  32. @text-internet
  33. @web-server
  34. #
  35. %post
  36. #!/bin/bash
  37. useradd -m -s /bin/bash -G wheel vpupkin

А теперь разберем его. Для удобства строки пронумерованы и я буду просто ссылаться на номера. В строчках [1-3] мы определяем, что это будет чистая инсталляция (не обновление) , местоположение дистрибутива (если быть точным – первого диска дистрибутива) и задаем инсталляционный номер.

Далее [4-5] мы указываем язык системы и тип клавиатуры. Нотация стандартная, то есть чтобы установить русский язык системы надо исправить en_US.UTF-8 на ru_RU.UTF-8.

В [6] мы конфигурируем X.org сервер, задавая рабочий стол по умолчанию (KDE), разрешение и глубину цвета, а также определяем, что X.org должен стартовать при загрузке.

В [7] находится простая сетевая конфигурация, определяющая, что у нас единственная сетевая карта, которая использует DHCP для получения сетевых настроек. Это рекомендованный вариант, так как в случае, если вы устанавливаете много систем с одного kickstart-файла, вы не можете использовать одни и те же сетевые настройки. Кроме того, DHCP-сервер в любом случае является необходимым для сетевой инсталляции.

В [8] мы устанавливаем административный пароль (он заранее зашифрован).

В [9] и [11] мы отключаем брандмауэр и мандатный контроль доступа соответственно (не будем забывать, что мы рассматриваем простой пример).

В [10] мы конфигурируем стандартную аутентификацию через /etc/passwd и /etc/shadow с шифрованными паролями. В этой строке возможно заранее сконфигурировать аутентификацию с использованием Kerberos, LDAP, NIS, или Windows-домена.

В [12] мы задаем временную зону, а в [13] задаем положение загрузчика, опции передаваемые ядру и, если у вас более одного жесткого диска – порядок следования их в BIOS системы.

Строки [13-21] задают разметку диска. В нашем случае создается одна 100Мб ext3-партиция /boot для ядра, initrd и загрузчика, остальное место размечается на 3 партиции, поверх которых располагается LVM, на котором выделяется 20Гб том под основную систему (/), 2Гб под место для подкачки, а остальное место монтируется как /home для данных пользователей.

Строки [24-25] отключают агент настройки системы при первой загрузке и указывают, что системы должна перезагрузиться после установки.

Строки [27-31], как это видно, находятся в области %packages, и определяют пакеты и группы пакетов, которые должны быть установлены. Синтаксис простой: имя пакета, чтобы установить один пакет (например dhcp) и @имя_группы, чтобы установить определенную группу пакетов.

Оставшиеся строки (секция %post) – постинсталляционный скрипт. В нашем случае он просто добавляет пользователя vpupkin. Вообще говоря, это может быть произвольный скрипт, который обновляет систему, скачивает и устанавливает конфигурацию или выполняет прочие произвольные действия.

Использование ks-файла

Теперь наш kickstart-файл готов к использованию. Осталось разместить его на сервере и передавать параметром при установке. Я предполагаю, что у вас сетевые службы настроены в соответствии с описанием в предыдущем выпуске рассылки.

Сохраните ваш kickstart-файл куда-нибудь на сервер. Я разместил его в /var/ftp/rhel-ks.cfg и, соответственно, он стал доступен по сети по адресу ftp://192.168.0.2/rhel-ks.cfg. Осталось «сообщить» об этом примечательном факте загружающимся по PXE системам. Для этого изменим файл '/tftpboot/prelinux.cfg/default' так, чтобы он содержал следующую информацию:
label linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=9216 noapic acpi=offo ks=ftp://192.168.0.2/ks.cfg

На этом конфигурация заканчивается. Если вам необходимо установить 1000 типовых рабочих станций за день – это не более трудная задача, чем нажать кнопку «Power» на 1000 компьютерах.

Удобности и вкусности.

Естественно, механизм kickstart чрезвычайно удобен для проведения типовых инсталляций. Однако писать сценарий установки не всегда удобно вручную. Для этого существует инструмент system-config-kickstart (входит в поставку RHEL), который в окошке, похожем на этапы инсталляции позволит сформировать костяк конфигурационного файла. Фактически ручного редактирования требует только секция разметки диска и постинсталляционные действия.

Инструментарий kickstart очень удобно интегрирован в RHN. Вы можете сгенерировать сценарий по установленной ранее системе, а также пользоваться каналами конфигурации для приведения типовых систем в боевую готовность непосредственно от состояния «голое железо» (Bare HW).

Полную информацию о синтаксисе kickstart-файлов вы можете почерпнуть по адресу
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Installation...

Комментариев нет: