Автоматическая установка Centos с помощью kickstart

Thank you for reading this post, don't forget to subscribe!

Оригинал статьи:

Авто­ма­ти­че­ская уста­нов­ка Centos 7 с помо­щью kickstart

 

kickstart — метод быст­рой уста­нов­ки опе­ра­ци­он­ных систем, осно­ван­ных на Red Hat Linux

Уста­нов­ка Linux может выпол­нять­ся пол­но­стью без уча­стия поль­зо­ва­те­ля с помо­щью фай­ла Kickstart, кото­рый содер­жит кон­фи­гу­ра­цию, необ­хо­ди­мые настрой­ки и зада­чи после уста­нов­ки, что­бы пол­но­стью авто­ма­ти­зи­ро­вать про­цесс уста­нов­ки без запро­са каких-либо подроб­но­стей ввода.

Файл кикс­тар­та может быть поме­щен в уда­лен­ный репо­зи­то­рий или может быть вклю­чен в образ ISO, что­бы его мог про­чи­тать уста­нов­щик Anaconda во вре­мя уста­нов­ки системы.

В этом руко­вод­стве пред­став­ле­ны неко­то­рые прак­ти­че­ские реше­ния, кото­рые мож­но поме­стить в файл кикс­тар­та для авто­ма­ти­за­ции задач уста­нов­ки CentOS 7 / Red Hat 7.

В самом нача­ле давай­те рас­смот­рим этот файл кикс­тар­та: ks.cfg, кото­рый пред­став­ля­ет собой пол­ный и рабо­та­ю­щий набор команд и функ­ций, кото­рые поз­во­ля­ют выпол­нять обна­ру­же­ние обо­ру­до­ва­ния, авто­ма­ти­че­ское раз­би­е­ние дис­ка, уста­нов­ку допол­ни­тель­ных RPM, настрой­ку пара­мет­ров ядра и т. д.

Этот файл мож­но исполь­зо­вать как есть, без каких-либо изме­не­ний, и он будет выпол­нять всю рабо­ту по авто­ма­ти­че­ской уста­нов­ке, но давай­те раз­бе­рем его на части для опи­са­ния кон­крет­ных слу­ча­ев использования:

Каж­дый раз, когда вы уста­нав­ли­ва­е­те Centos, в домаш­ней дирек­то­рии поль­зо­ва­те­ля root созда­ет­ся файл,содержащий пара­мет­ры установки

Пример файла kickstart

[codesyntax lang="php"]

[/codesyntax]

Разбор содержимого файла

Ука­зы­ва­ет­ся источ­ник cdrom, либо мож­но исполь­зо­вать уста­нов­ку по сети

Ука­зы­ва­ет­ся рас­клад­ка, язы­ко­вая под­держ­ка, кла­ви­ши пере­клю­че­ния раскладки

Далее идет опция сете­во­го под­клю­че­ния, hostname. Мож­но выбрать полу­че­ние сете­вых пара­мет­ров через DHCP, либо Static IP

Затем идут пара­мет­ры пользователей
rootpw —lock — запрет под­клю­че­ния к сер­ве­ру root-ом

Пароль поль­зо­ва­те­ля root и админ мож­но сге­не­ри­ро­вать заранее

Сер­ти­фи­ка­ты так же гене­ри­ру­ют­ся заранее

Даль­ше идет раз­бив­ка диска:

  • Исполь­зо­вать диск sda пол­но­стью (grow)
  • Метод рас­пре­де­ле­ния про­стран­ства жёст­ко­го дис­ка — LVM
  • /boor — 512 Mb, xfs
  • Volume Group — centos
  • SWAP — 4 Gb
  • / — 16 Gb, xfs
  • /var — все осталь­ное, xfs

Сле­ду­ю­щий блок — уста­нов­лен­ные / уда­лен­ные (-) пакеты

И послед­ний блок — bash скрипт

  • отклю­ча­ем ввод паро­ля sudo для поль­зо­ва­те­ля admin
  • заком­мен­ти­ро­ван­ный блок для сме­ны стан­дарт­но­го ssh-порта
  • заком­мен­ти­ро­ван­на опция, кото­рая запре­ща­ем кон­нект root-ом

Как пользоваться данным файлом?

Мож­но выло­жить файл на http/ftp сер­вер и при уста­нов­ки Centos с дис­ка жмем ESC и прописываем:

linux ks=http://192.168.1.10/ks.cfg

или

А мож­но создать свой образ дис­ка, где будет про­пи­са­на дан­ная опция. Для этого

Созда­ем точ­ку мон­ти­ро­ва­ния, мон­ти­ру­ем образ диска

Созда­ем еще один ката­лог, копи­ру­ем в него содер­жи­мое /mnt/iso

Добав­ля­ем наш kickstart в образ

Копи­ру­ем наш kickstart файл в /home/centos/, редак­ти­ру­ем isolinux/isolinux.cfg

Пункт меню для авто­уста­нов­ки мож­но вста­вить напри­мер после сек­ции label linux

В послед­ней строч­ке ука­за­но рас­по­ло­же­ние kickstart фай­ла в обра­зе диска.
Если пла­ни­ру­ет­ся даль­ней­шее редак­ти­ро­ва­ние ks.cfg, мож­но ука­зать рас­по­ло­же­ние на http/ftp — сервере

Созда­ем сам образ:

================================================

Пропустить установку GUI X сервера в файле кикстарта

Что­бы про­пу­стить уста­нов­ку X Window Server, поме­сти­те сле­ду­ю­щее в заго­ло­воч­ный раз­дел кикстарта:

Как добавить нового пользователя в файл кикстарта?

Что­бы доба­вить ново­го поль­зо­ва­те­ля в уста­нов­лен­ную систе­му, исполь­зуй­те сле­ду­ю­щую опцию в раз­де­ле заго­лов­ка кикстарта:

Установить / добавить пользовательские пакеты RPM в файл кикстарта

Допол­ни­тель­ные RPM-паке­ты для уста­нов­ки мож­но раз­ме­стить в раз­де­ле %packeges пря­мо под паке­том @base:

Как обнаружить существующую таблицу разделов (существующие системы) на диске в файле кикстарта?

Если вы хоти­те избе­жать слу­чай­ной пере­уста­нов­ки уже уста­нов­лен­ной опе­ра­ци­он­ной систе­мы, вы може­те про­ве­рить, суще­ству­ет ли какая-либо суще­ству­ю­щая таб­ли­ца раз­де­лов на дис­ке, исполь­зуя kpartx или partx:

Обнаружение оборудования и проверка емкости жесткого диска в кикстарте

В при­ве­ден­ном ниже при­ме­ре пока­за­но, как опре­де­лить тип обо­ру­до­ва­ния, про­ве­рить емкость жест­ко­го дис­ка и при­ме­нить дру­гую схе­му раз­де­ле­ния в зави­си­мо­сти от обна­ру­жен­но­го типа оборудования.

Для обна­ру­же­ния обо­ру­до­ва­ния здесь исполь­зу­ет­ся коман­да virt-what, кото­рая про­ве­ря­ет тип обна­ру­жен­но­го обо­ру­до­ва­ния («голое желе­зо», Virtualbox, VMware). virt-what, в отли­чие от дру­гих подоб­ных команд (напри­мер, dmidecode), отоб­ра­жа­ет уже про­ана­ли­зи­ро­ван­ный вывод, поэто­му в таких слу­ча­ях исполь­зо­ва­ния это доволь­но удобно.

Раз­би­е­ние на голое желе­зо зави­сит так­же от обна­ру­жен­но­го пара­мет­ра tux_node_type, кото­рый чита­ет­ся из пара­мет­ров команд­ной стро­ки ядра, вклю­чен­ных в пунк­ты меню GRUB 2.

Для обна­ру­жен­но­го вир­ту­аль­но­го обо­ру­до­ва­ния (VirtualBox, VMware) при­ме­ня­ет­ся авто­ма­ти­че­ское разбиение.

Инструк­ции по раз­би­е­нию для каж­до­го слу­чая пере­на­прав­ля­ют­ся в файл /tmp/part-include, кото­рый вклю­чен в раз­дел заго­лов­ка фай­ла кикстарта:

Kickstart так­же обна­ру­жи­ва­ет, удо­вле­тво­ря­ют­ся ли мини­маль­ные тре­бо­ва­ния к емко­сти жест­ко­го дис­ка, срав­ни­вая пара­метр емко­сти жест­ко­го дис­ка с bm_storage_min_size для желе­за и vm_storage_min_size для обна­ру­жен­но­го вир­ту­аль­но­го оборудования.

Пара­метр емко­сти ана­ли­зи­ру­ет­ся из коман­ды fdisk.

При обна­ру­же­нии обо­ру­до­ва­ния VMware инфор­ма­ция open-vm-tools пере­на­прав­ля­ет­ся в /tmp/virtual, кото­рый может быть вклю­чен в раз­дел %packages для уста­нов­ки RPM-паке­та open-vm-tools толь­ко для VMware:

При­ве­ден­ное выше реше­ние тре­бу­ет раз­ме­ще­ния фик­тив­ной заме­ны /tmp/virtual фай­лов на «голое желе­зо» и VirtualBox, что­бы избе­жать сбоя уста­нов­ки, посколь­ку open-vm-tools не пред­по­ла­га­ет­ся уста­нав­ли­вать в этих двух случаях:

Весь код обна­ру­же­ния обо­ру­до­ва­ния и про­вер­ки емко­сти жест­ко­го дис­ка раз­ме­щен в раз­де­ле %pre фай­ла кикстарта:

Установить пользовательскую схему разбиения на основе UEFI в файле кикстарта

При­ве­ден­ная ниже схе­ма раз­би­е­ния пред­на­зна­че­на для сер­ве­ров на осно­ве загруз­ки UEFI, посколь­ку она содер­жит систем­ный раз­дел EFI / UEFI. Раз­дел EFI / UEFI дол­жен быть раз­де­лом типа VFAT с мини­маль­ной емко­стью 200 МБ.

Сле­ду­ю­щий — основ­ной / загру­зоч­ный раз­дел объ­е­мом 512 МБ, этот раз­дел нель­зя вклю­чить в груп­пы томов LVM.

Затем созда­ют­ся физи­че­ские тома pv.00 и pv.01 для предо­став­ле­ния физи­че­ских экс­тен­тов для соот­вет­ству­ю­щих групп томов vg_root и vg_app.

Емкость pv.00 уста­нов­ле­на ​​на фик­си­ро­ван­ный раз­мер: 150 ГБ, pv.01, с дру­гой сто­ро­ны, начи­на­ет­ся с 1 МБ, но пара­метр уве­ли­че­ния застав­ля­ет его запол­нять все остав­ше­е­ся дис­ко­вое пространство.

Груп­пы томов: vg_root и vg_app созда­ют­ся соот­вет­ствен­но на физи­че­ских томах pv.00 и pv.01.

Логи­че­ские тома (swap, /var, /home и т. д.) созда­ют­ся в обе­их груп­пах томов с фик­си­ро­ван­ны­ми раз­ме­ра­ми и пара­мет­ра­ми фай­ло­вой системы.

Кро­ме того, емкость точ­ки мон­ти­ро­ва­ния /var уста­нов­ле­на ​​в 1 МБ и ей назна­чен пара­метр рас­ту­ще­го зна­че­ния, то есть ката­лог /var запол­нит все остав­ше­е­ся про­стран­ство груп­пы томов.

Каж­дая стро­ка ниже­при­ве­ден­но­го бло­ка поме­ща­ет­ся в файл / tmp / part-include, кото­рый чита­ет­ся в заго­лов­ке фай­ла кикстарта:

Если в вашей кон­фи­гу­ра­ции мно­го раз­де­лов (как пока­за­но ниже), попро­буй­те так­же поме­стить все в блок кода ЗДЕСЬ или EOF.

Вот наш при­мер схе­мы разбиения:

Установка дополнительных RPM-пакетов в файл кикстарта

Если вам нуж­но уста­но­вить допол­ни­тель­ные паке­ты, не вклю­чен­ные в стан­дарт­ный ISO-образ RHEL 7 / CentOS 7, вы може­те поме­стить их в поль­зо­ва­тель­ский ката­лог на обра­зе ISO, напри­мер: mount_iso_main_dir / soft /… и запу­стить их уста­нов­ку в раз­де­ле% post nochroot фай­ла кикстарта. ,

При­ме­ча­ние. Эта часть уста­нов­ки паке­та долж­на выпол­нять­ся в сре­де nochroot, посколь­ку нам необ­хо­дим доступ к уста­но­воч­но­му носителю.

Включить / отключить сервис после установки в файл кикстарта

Сер­ви­са­ми мож­но лег­ко управ­лять в фай­ле кикс­тар­та, что­бы они выпол­ня­лись сра­зу после уста­нов­ки, поме­стив их в раз­дел %post chroot, посколь­ку все упо­мя­ну­тые коман­ды выпол­ня­ют­ся во вновь уста­нов­лен­ной систе­ме (вне уста­но­воч­но­го носителя):

Добавить пользователя в sudoers во время установки в файл кикстарта

Обыч­но­го поль­зо­ва­те­ля мож­но доба­вить в груп­пу wheel для повы­шен­ных адми­ни­стра­тив­ных при­ви­ле­гий и стать sudoer, пере­на­пра­вив соот­вет­ству­ю­щие стро­ки в файл /etc/sudoers:

Создать ключ SSH (пару ключей) для конкретного пользователя в файле кикстарта

Что­бы сге­не­ри­ро­вать клю­чи SSH через файл кикс­тар­та для поль­зо­ва­те­ля во вре­мя уста­нов­ки систе­мы, выпол­ни­те коман­ду созда­ния клю­ча SSH от име­ни конеч­но­го пользователя.

Сле­ду­ю­щая коман­да пред­став­ля­ет созда­ние клю­ча SSH без паро­ля для поль­зо­ва­те­ля tuxoper:

Сконфигурировать параметры времени выполнения ядра во время установки в файле кикстарта

Пара­мет­ры вре­ме­ни выпол­не­ния ядра мож­но настро­ить в фай­ле кикс­тар­та, что­бы вклю­чить его сра­зу после уста­нов­ки, поме­стив опре­де­лен­ные стро­ки пара­мет­ров в файл /etc/sysctl.conf: