Легкое развертывание сервера ESXi: руководство по установке и настройке с ESXi-Foreman PXE Deploy
ESXi - это инструмент виртуализации корпоративного уровня. Оно может управлять виртуальными машинами более эффективно, чем некоторые привычные нам службы. Сервер ESXi от VMware устанавливается прямо на компьютер, без операционной системы хоста. После этого сервер может направлять аппаратные ресурсы и создавать копии виртуального оборудования для управления ими.
Существует два способа установки ESXi: через Legacy и UEFI. В этом руководстве мы будем использовать Legacy.
Развертывание сервера ESXi: Режим установки Legacy
Режим Legacy необходимо установить для старых систем, которые не поддерживают UEFI (Unified Extensible Firmware Interface).
В этом шаге мы рассмотрим развертывание сервера ESXi с помощью установки режима Legacy через гипервизор VMware ESXi 8.0. Предварительно необходимо установить программное обеспечение Foreman; если у вас его нет, вы можете следовать инструкции по установке Foreman. Но если оно у вас уже установлено, приступим.
Сначала нам нужно создать операционную систему. Откройте Foreman и нажмите на кнопку Create Operating System. Там вставьте следующие данные:
Name - ESXi-6.7.0-8169922 (ESXi-{OS Version}-{Build Number})
Major version - 6
Minor version - 7
Description - ESXi-6.7.0-8169922
Family - Redhat
Root pass hash -SHA512
Architectures - x86_64
Вы создали образ операционной системы.
Конфигурирация с помощью шаблонов
Нам нужно создать шаблон PXELinux (имя - ESXi-6.7.0-8169922) и шаблон kickstart (имя - ESXi Minimal Kickstart).
Для шаблона PXELinux вставьте следующее:
DEFAULT ESXi
NOHALT 1
LABEL ESXi
KERNEL ../boot/ESXi-6.7.0-8169922/mboot.c32
APPEND -c ../boot-ESXi-6.7.0-8169922.cfg ks=<%= foreman_url("provision") %>
IPAPPEND 2
Для шаблона Kickstart вставьте следующее:
vmaccepteula
keyboard 'US Default'
reboot
rootpw --iscrypted <%= root_pass %>
install --firstdisk --overwritevmfs --novmfsondisk
# Set the network to DHCP on the first network adapter
network --bootproto=dhcp --device=<%= @host.mac %>
%post --interpreter=busybox
# Add temporary DNS resolution so the foreman call works
echo "nameserver <%= @host.subnet.dns_primary %>" >> /etc/resolv.conf
# Inform Foreman that we are done.
wget -O /dev/null <%= foreman_url('built') %>
echo "Done with Foreman call"
Для этого шаблона необходимо изменить тип шаблона на "Provisioning template" на вкладке "Type" в настройках шаблона.
Теперь нам нужно установить оба шаблона по умолчанию, выбрав их в разделе "Templates".
Затем нам нужно загрузить образ операционной системы на Foreman, но перед этим необходимо извлечь содержимое этого образа, которое можно найти в каталоге /var/lib/tftpboot/tftpboot/boot/esxi/8.0.
Вместо того чтобы создавать отдельный экземпляр ESXi для установки в режиме Legacy, мы внесли несколько изменений в конфигурационный файл (/usr/share/foreman/app/models/concerns/pxe_loader_support.rb.):
def all_loaders_map(precision = 'x64')
{
"None" => "",
"PXELinux BIOS" => "pxelinux.0",
"PXELinux UEFI" => "pxelinux.efi",
"PXELinux Alt BIOS" => "syslinux386/pxelinux.0", # Add this line
…
В Legacy файл конфигурации выглядит следующим образом:
TIMEOUT 10
DEFAULT default_PXELinux_ESXI
LABEL default_PXELinux_ESXI
KERNEL boot/esxi/8.0/mboot.c32
APPEND -c boot/esxi/8.0/boot2.cfg ks=http://address of the server from which we get the file with autosettings/unattended/provision
IPAPPEND 2
Что касается загрузчика, то мы использовали универсальный, совместимый с различными операционными системами. После перезагрузки сервера начнется установка.
Затем система обратится к файлу kickstart хостинга сервера (ks=http://server’s address/unattended/provision), в котором содержатся автоматические настройки.
Если ESXi поддерживает ваше оборудование, установка пройдет гладко. В итоге вы получите полностью рабочую ОС с двумя пользователями с правами root.
Что делает шаблон инициализации?
Шаблон инициализации (provisioning) выполняет следующие действия:
- Позволяет управлять сетевыми настройками.
- Устанавливает систему на диск.
- Игнорирует ошибки.
- Указывает имя сервера и пароль для пользователя с правами root.
- Позволяет добавить еще одного пользователя с правами root.
- Настраивает брандмауэр.
Установка ESXi в режиме UEFI
Операционная система VMware ESXi может быть установлена как в режиме Legacy, так и в режиме UEFI. Итак, если в имени образа операционной системы содержится ESXi, конфигурация будет скопирована и LiveCD начнет работать.
Когда LiveCD загрузится, вы увидите скрипт, указывающий детали диска, на который нужно установить ОС. Там нужно указать желаемый диск (не очень большой, но с объемом не менее 20 ГБ), а также проверить, есть ли у него параметры "logical volume" или "volume group" – если они присутствуют, обязательно удалите их с диска.
После очистки диска система создаст перегородку для запуска загрузчика UEFI. Создание перегородки выглядит следующим образом:
parted -s /dev/${INST_DRIVE} mklabel gpt mkpart fat32 1MiB 1GiB set 1 esp on
EFI_PART=$(lsblk -l | grep "${INST_DRIVE}" | grep part | awk '{print $1}')
mkdir -p /mnt/{iso,efipart,wim}
wget ${medium_uri}/${branch}/esxi${os_version}pe.iso
mount -o loop esxi${os_version}pe.iso /mnt/iso
mkfs.fat -F32 /dev/$EFI_PART
mount /dev/$EFI_PART /mnt/efipart
mkdir -p /mnt/efipart/EFI/redhat/
mkdir -p /mnt/efipart/kickstart
rsync -r /mnt/iso/ /mnt/efipart/
cp /mnt/efipart/EFI/BOOT/BOOTX64.EFI /mnt/efipart/EFI/redhat/grubx64.efi
cp /mnt/efipart/EFI/BOOT/CRYPTO64.EFI /mnt/efipart/EFI/redhat/crypto64.efi
cp /mnt/efipart/EFI/BOOT/SAFEBOOT.EFI /mnt/efipart/EFI/redhat/safeboot.efi
cp /mnt/efipart/boot.cfg /mnt/efipart/EFI/redhat/boot.cfg
curl -s "<http://$>{foreman_fqdn}/unattended/provision?token=${foreman_token}" >> /mnt/efipart/kickstart/ks.cfg
tar -czf /mnt/efipart/kickstart.gz --directory=/mnt/efipart kickstart
###sed -i "s#kernelopt=runweasel cdromBoot#kernelopt=ks=file://kickstart/ks.cfg#g" /mnt/efipart/EFI/redhat/boot.cfg ##for 7.3
sed -i "s#^kernelopt.*#kernelopt=ks=file://kickstart/ks.cfg#g" /mnt/efipart/EFI/redhat/boot.cfg
sed -ie 's#^modules.*$#& --- /kickstart.gz#g' /mnt/efipart/EFI/redhat/boot.cfg
umount /mnt/iso
rm esxi${os_version}pe.iso
/usr/bin/env wget --no-proxy --quiet --output-document=/dev/null --no-check-certificate "<http://$>{foreman_fqdn}/unattended/built?token=${foreman_token}"
umount /mnt/efipart
sync
fi
reboot
Она делает следующее:
- Создает раздел размером 1 ГБ.
- Переносит ISO-образ в /mnt/efipart/ и далее монтирует его в /mnt/iso.
- Обеспечивает правильное функционирование загрузчика Foreman с помощью структуры каталогов.
- Извлекает содержимое шаблона инициализации в Foreman и помещает его в файл конфигурации /mnt/efipart/kickstart/ks.cfg.
- Архивирует файл конфигурации и добавляет его в модули ESXi в разделе UEFI.
- Добавляет информацию о новом модуле в файл конфигурации "boot".
- Размонтирует раздел и удаляет ISO-образ.
- Отправляет запрос Foreman на запуск процесса установки.
- Направляет сервер на перезагрузку.
После перезагрузки сервера раздел UEFI становится приоритетным источником получения данных. На этом этапе Foreman начинает поиск перегородки (в нашем случае это RedHat, который мы указали в разделе Family при создании ОС).
После того как Foreman найдет его (в данном случае раздел RedHat), он пошлет системе сигнал о начале установки ESXi. После этого система начнет распаковывать обновленные модули и конфигурационные файлы, которые подскажут системе, как ее установить и настроить.
И снова, если оборудование поддерживается гипервизором ESXi, система будет установлена без ошибок.
Основные выводы по развертыванию ESXi-Foreman PXE
С помощью ESXi-Foreman PXE развертывания можно легко автоматизировать установку и настройку виртуальных серверов ESXi. Она также обеспечивает стабильную основу для управления и контроля всех этапов развертывания (даже при удаленном подходе).
ESXi-Foreman позволяет сократить время развертывания и уменьшить количество возможных ошибок, а также обеспечивает широкую интеграцию с другими инструментами и системами для различных сценариев виртуализации.