Приветствую!
На Хабре иногда мелькают статьи о PXE. Это достаточно удобная штука для быстрого разворачивания большого количества машин. Последнее время появились специализированные пакеты наподобие Cobbler или OpenQRM для управления парком серверов, но речь пойдёт не о них. Речь пойдёт о проекте ERPXE, предназначенном для обеспечения работоспособности сети компьютеров. Как создатели пишут о своём проекте — применить можно в любой по размерам компании. Прежде всего он позволяет управлять содержимым корня tftp. Делает это через систему плагинов, количество которых впечатляет, список — http://erpxe.org/Category:Plugins. Есть почти всё, что может понадобится и даже больше. Ну а чего нет — то легко добавить.
Разобраться с ERPXE легко, документирован достаточно хорошо. Попытаюсь описать процесс установки на FreeBSD, на сайте инструкции нет. В проекте рекомендуется распаковывать все архивы в корне, но для FreeBSD это не совсем соответствует идеологии. Распаковывать будем в /usr/local и править все что нужно. Учитывая, что NFS экспортирует файловую систему, то для tftpboot лучше сделать отдельную.
Если на сервере файловая система корня ZFS, то тогда создаём файловые системы для наших нужд и настраиваем дальше по мануалу. Если же UFS, тогда придётся экспортировать /usr для записи
zfs create -o compression=lz4 -o exec=off -o setuid=off -o mountpoint=/usr/local/tftpboot zroot/tftpboot
zfs create -o compression=lz4 -o exec=off -o setuid=off -o mountpoint=/usr/local/images zroot/images
zfs create -o compression=lz4 -o exec=off -o setuid=off -o mountpoint=/usr/local/images/dev zroot/images/dev
Потом берём основной архив
http://www.erpxe.com/download/
Распаковываем его:
cd /usr/local
tar -xzf erpxe.current.tar.gz
Дальше настраиваем сервисы на работу с PXE, как обычно, DHCP & TFTP и для ERPXE нужно настроить NFS, HTTP и Samba. Предполагаю, что эти сервисы настроены и работают, нужно только внести изменения для ERPXE. Настройку сервисов делает скрипт tftpboot/bin/configure.sh. Но поскольку у нас не поддерживаемая операционная система, то ознакомимся с его содержанием и сделаем изменения руками.
DHCP & TFTP:
Для dnsmasq нужны следующие строчки в конфиг.
dhcp-boot=pxelinux.0
tftp-root=/usr/local/tftpboot/
Рестартуем dnsmasq: service dnsmasq restart
NFS:
Знакомимся с tftpboot/bin/setup/erpxe-exports. Директорию images мы создали раньше со всеми файловыми системами, создаём вспомогательного пользователя (adduser erpxe) и назначаем права (chown erpxe /usr/local/images/dev), добавляем строчки в /etc/export:
/usr/local/images -mapall=nobody -ro -network=192.168.1.0/24
/usr/local/images/dev -mapall=erpxe -network=192.168.1.0/24
/usr/local/tftpboot/er/shares -alldirs -mapall=nobody -ro -network=192.168.1.0/24
Обновляем список папок: service mountd reload
HTTP:
Для апача нужно скопировать файл tftpboot/bin/setup/erpxe-httpd.conf в /usr/local/etc/apache24/sites/erpxe.conf и заменить пути на те, которые есть.
<Directory "/usr/local/tftpboot/er/shares/">
Options Indexes FollowSymLinks
Order deny,allow
Allow from 192.168.1.0/24
Deny from all
</Directory>
AliasMatch (?i)^/er(.*) /usr/local/tftpboot/er/shares$1
Перезапускаем service apache24 restart.
Samba:
Добавляем шару erpxe по примеру в файле tftpboot/bin/setup/erpxe-smb.conf
[erpxe]
path = /usr/local/tftpboot/er/shares/
comment = Guest access share
browseable = yes
read only = yes
guest ok = yes
Обновляем состояние: service samba restart
Можно пытаться загрузится.
В чистой установке уже присутствуют Memtest'ы, Hardware Detection Tool, NT Password Editor и др. Но, конечно, вся прелесть ERPXE в плагинах, для каждого из которых на wiki расписан процесс установки. Обычно это распаковка плагина и копирование файлов из образа в дерево tftpboot. Не буду дублировать информацию из вики сюда, единственно, стоит обратить внимание на то, что некоторые плагины требуют менять IP в файле меню.
После установки плагинов можете по сети проводить диагностику железа (Stresslinux, Inquisitor), бэкапиться (Clonezilla, Acronis True Image Home) и, конечно же, устанавливать любимые дистрибутивы (CentOS, Ubuntu).
Автор: Alet