понедельник, 23 апреля 2018 г.

RHCSA Lab / DHCP, TFTP, PXE, Kickstart



Признаться тут я хорошенько подебажил. Настроить согласно инструкции и радоваться не получилось. 


Изначально я настраивал по книге Sander Van Vugt. Но, видимо, с тех пор многое поменялось, да и в такой хорошей книге полно ошибок, к сожалению.

Итак, сегодня я автоматизирую установку новых виртуальных серверов через PXE и Kickstart.

Для начала последовательность того, как это должно работать.
    1. BIOS должен загрузится в PXE режиме
    2. Машина получает по DHCP ряд важных параметров
        a.  IP адрес
        b. DNS сервер
        c. Gateway
        d. Адрес TFTP сервера
        e. Имя файла, который надо запустить на TFTP
    3. Происходит загрузка файла pxelinux.0 (эквивалент GRUB)
    4. Происходит чтение файла pxelinux.cfg/default (эквивалент grub2.conf)
    5. Там описано как
        a. Найти на TFTP ядро (vmlinuz) и бутлоадер (initrd.img)
        b. Загрузить squashfs.img (что-то вроде initramfs? )
        c. Найти Kickstart файл, в котором описаны все подробности установки
    6. Согласно kickstart установка происходит с nfs/http/ftp шары

Я, наверное, раза три менял все конфиги, в итоге выглядит это так.

Для начала глянем на dhcpd, который выдает клиентам адрес TFTP сервера (next-server) и имя файла (pxelinux.0), который надо на этом сервере загрузить. Далее видно содержимое директории tftp сервера. Тут лежит тот самый pxelinux.0 и конфиг для него. Так же нам понадобится ядро (vmlinuz) и загрузчик (ininrrd). На картинке я показал откуда их можно скопировать. Ну а далее сам конфиг, который рассказывает какие файлы нужно подгружать. Важная особенность, здесь необходимо указать путь к файлу squashfs.img директивой root=, иначе ни черта не заработает. Тут же указание на кикстарт файл. ВНИМАНИЕ: без указания установочного репозитория у меня тоже не взлетело. Чуть ниже по тексту будет про это.


Понятно, что предварительно нужно установить пару пакетов, а именно tftp-server и dhcpd. Ну и открыть порты на файерволе.

Далее ставим kvm и все, что с ним связано. Сделать это можно установив специальную группу.


Далее, в моем случае, нужно немного подправить сеть в kvm. Дело в том, что по умолчанию, виртуальный свич в KVM находится в режиме NAT и имеет встроенный DHCP сервер. Мне это не подходит, поэтому нужно перевести его в routed режим и убрать все, что касается dhcp.

Воспользуемся virsh - утилитой для управления виртуализацией в KVM. Если кратко, то ей можно делать все. Нам же надо посмотреть список свичей (net-list), выключить дефолтный (net-destroy) и отредактировать xml с настройками (net-edit).



Меняем буквально пару моментов.


Включаем свич и убеждаемся, что с ним все хорошо.


Тоже самое можно глянуть в GUI (virt-manager).



Далее, мне предстоит смастерить kickstart файл, который автоматически предоставит параметры для установки машины. Тут есть три варианта:
    1. "Тру вей" - составить файл руками
    2. "Долгий" - установить эталонную машину вручную и скопировать с неё файл
    3. "Для слабаков" - воспользоваться GUI
Я собираюсь воспользоваться комбинацией второго и первого, возможно третьего. Установим машину, скопируем kickstart файл с параметрами и модифицируем под себя.

Поэтому приступаем к установке. Я использую GUI для большинства задач по управлению виртуалками - virt-manager. Тут все просто, создаем виртуалку и указываем PXE загрузку в параметрах.



Далее, с замиранием сердца видим, как машинка получает адрес, узнает про tftp сервер и про первичный файл pxelinux.0. Далее загружается конфиг, а вместе с ним и vmlinuz и initrd. К слову, kickstart я из конфига убрал, понятное дело.



Тут, спустя несколько витков увлекательного дебага, я понял, что мне не хватает ещё одной дериктивы inst.repo, которая указывает на установочник (nfs/http/ftp). В итоге, ниже вариант рабочего файла конфигурации.



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


Единственное, что отделяет нас от успеха на этом этапе, это разбиение диска на партиции. Ничего сложного, создаем три раздела под boot, корень и swap. Выбираем тип - LVM и оставляем немного места для экспериментов.



После перезагрузки у нас есть новая рабочая виртуальная машина с kickstart файлом.


К сожалению, по непонятной мне причине, в файле не сохранилась информация по разделам на диске, поэтому пришлось дописывать самому. Пока что скопируем как пример kickstart файл на srv1 в нужную директорию.


Ну, а ниже можно увидеть пример моего файла. После добавления его в pxelinux.cfg/default, нужно просто загрузить виртуалку с PXE и через некоторое время уже можно заходить по ssh. Я поменял лишь имя сервера и все, что касается LVM. А, ну и добавил reboot в конец.



Можно приступать к RHCSE лабе.

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

Отправить комментарий