ServerAdmin.ru
28.7K subscribers
276 photos
34 videos
12 files
2.6K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Мне к одной из заметок, не помню уже на какую тему, настоятельно посоветовали посмотреть на FOG Project. Я записал и только сейчас дошли руки это сделать. Штука реально интересная, поэтому решил поделиться.

https://fogproject.org/
https://github.com/FOGProject/

FOG Project достаточно масштабная система для разворачивания образов ОС по сети с помощью технологии PXE или TFTP. С её помощью грузится небольшой linux дистрибутив и затем на его базе разворачивается функционал по установке и преднастройке основной ОС. Мне как-то доводилось работать с PXE. Я грузил легковесные linux дистрибутивы для бездисковых рабочих станций.

Принцип работы в FOG Project следующий. Настраиваете сервер на Linux, с которого клиенты будут грузить начальную систему по PXE или TFTP. Управляется этот сервер через веб интерфейс, написанный на php. Затем готовите образ основной системы, которую вы хотите массово раскатывать. Кладёте куда-то этот образ и создаёте задание для предварительно зарегистрированных на сервере хостов. В задании указываете, какой образ на этот хост разворачивать.

Далее образ разворачивается на целевых хостах. Важно не забыть образ полностью автоматизировать, чтобы установка проходила без внешнего участия. В англоязычных статьях я без проблем нагуглил руководства для подготовки таких Windows образов конкретно для FOG. Обычно для этого sysprep используется.

На вид всё выглядит достаточно просто и функционально, при этом бесплатно. Поделитесь отзывами, если кто-то использует эту систему.

#pxe
​​Если у вас есть потребность в автоматизации сетевой установки операционных систем на компьютеры или виртуальные машины, то решить эту задачу можно с помощью бесплатного сервера Cobbler. С его помощью можно организовать единый сервер сетевой установки Linux и Windows систем, которые будут загружаться с помощью технологии PXE (Preboot eXecution Environment).

Работает это следующим образом. Распишу сразу наиболее продвинутую конфигурацию. Вы разворачиваете сервер Cobbler вместе с DHCP (isc-dhcp-server) и DNS (bind) серверами. Cobbler имеет шаблоны и инструменты для автоматического управления этими службами. Готовите на сервере образ системы либо для ручной установки, либо сразу с файлами ответов для полностью автоматического разворачивания.

Когда сервер готов, запускаете машину с настроенной загрузкой по PXE. Если это реальное железо, то настройки выполняются в BIOS, в свойствах сетевой карты и опциях загрузки. Если речь идёт про виртуальную машину, то в boot меню виртуалки выбирается загрузка по PXE. Машина стартует, запускается PXE, на основе MAC адреса по DHCP получает соответствующие настройки с указанием адреса загрузочного образа. Загружается с этого образа по сети и запускается установка основной ОС в зависимости от её настроек. Можно сразу настроить установку сетевых параметров и имени машины с автоматическим добавлением этих данных в DNS.

С помощью подобной технологии можно не только выполнять установку ОС, но и создавать образы для бездисковой работы на рабочих станциях. Например, когда-то давно я лично настраивал бездисковые рабочие станции с загрузкой по PXE, для того, чтобы они могли подключиться по RDP к терминальному серверу. Готовилась простая сборка системы с загрузкой в оперативную память и автоматическим подключением с помощью FreeRDP. Локальные диски вообще не использовались (были вынуты).

Сразу могу сказать, что настройка подобной системы сложна. Без понимания работы всех смежных технологий настроить будет трудно. Это инструмент для тех, кто понимает и знает, зачем ему всё это нужно. Изначально Cobbler ориентирован на rpm дистрибутивы, но так как написан на Python, с некоторыми правками запускается и на Debian. Я использовал официальную инструкцию и статью под Debian. Статья уже устарела и простым копипастом не настроить, но основные моменты где и что нужно будет поправить можно посмотреть. Также список пакетов под Debian там актуальный, не хватает только python3-schema. И вот это обсуждение ошибки пригодится, если будете пакет под debian собирать.

Когда я настраивал Cobbler, усиленно пытался вспомнить, на что он похож. Я подобный софт уже видел. В конце вспомнил. Это аналог FOG Project. Он решает схожую задачу, используя те же технологии, но при этом проще в настройках, но и возможностей в нём поменьше. Cobbler более функциональный, так как может работать в связке с DHCP и DNS сервером, да и других более тонких настроек в нём больше.

Сайт / Исходники

#pxe
​​Недавно была публикация про централизованную установку дистрибутивов по сети с помощью технологии PXE. В комментариях посоветовали интересный проект - LTSP (Linux Terminal Server Project). Это софт из этой же оперы, только с упором на простое создание собственных преднастроенных образов. Проект open source, так что можно бесплатно пользоваться. При этом он старый и известный продукт, который одно время продвигал AltLinux. Много статей нашёл, правда довольно старых. Возможно уже отказались от него.

LTSP поддерживает 2 режима работы: тонкий и толстый клиенты. Тонкий полностью грузит ОС по сети. Вся работа выполняется на терминальном сервере. Толстый клиент устанавливает систему на свой жёсткий диск, а с терминала подключает пользовательские файлы и программы.

В принципе, LTSP ничего особенного не делает и всю его функциональность можно реализовать самостоятельно: поднять tftp сервер, подготовить загрузочный образ, настроить его загрузку через dhcp, положить систему и пользовательские файлы на nfs сервер, подключать их на системе, которая грузится по сети. LTSP всё это упрощает, предоставляя инструменты для управления.

После загрузки системы на тонком клиенте, пользователю необходимо пройти аутентификацию по SSH, ему пробрасываются иксы. Он попадает в своё рабочее окружение. В случае толстого клиента ему подключается его домашний каталог и затем запускается окружение.

Установить и настроить LTSP сервер относительно просто, особенно если есть понимание работы используемых технологий. В качестве DHCP сервера не обязательно должен выступать линуксовый сервер. Подойдёт и Mikrotik. Есть репозитории для Ubuntu и Debian. Вот пример установки на Debian 12:

# wget https://ltsp.org/misc/ltsp-ubuntu-ppa-focal.list -O /etc/apt/sources.list.d/ltsp-ubuntu-ppa-focal.list
# wget https://ltsp.org/misc/ltsp_ubuntu_ppa.gpg -O /etc/apt/trusted.gpg.d/ltsp_ubuntu_ppa.gpg
# apt update
# apt install --install-recommends ltsp ltsp-binaries dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools epoptes

Дальше необходимо подготовить клиентскую систему. Тут есть три варианта:
1️⃣ Использовать локальную систему как эталон для загрузки клиентам.
2️⃣ Собрать свой raw образ виртуальной машины.
3️⃣ Выбрать отдельную директорию и там собирать необходимую систему, чрутясь туда с помощью chroot.

Мне видится третий вариант наиболее удобным. Я сам его использовал, когда настраивал подобное. Хотел пойти по этому пути и показать его вам, но узнал, что в последней версии LTSP этот вариант признан устаревшим. Разработчики рекомендую использовать первый или второй вариант. Если хочется третий, то вот инструкция.

Полное руководство по настройке не уместить в заметке. Покажу только основные этапы, чтобы было понятно, как LTSP настраивается. Готовим образ для загрузки по сети на основе текущей системы:

# ltsp image /
# ltsp initrd

В результате работы команды получите образ системы /srv/ltsp/images/x86_64.img и образы для tftp в /srv/tftp/ltsp/x86_64. Добавляем в эти образы iPXE меню:

# ltsp ipxe

Настраиваем NFS сервер для экспорта созданных образов:

# ltsp nfs

Эта команда просто добавляет в /etc/exports.d настройки:

/srv/ltsp *(ro,async,crossmnt,no_subtree_check,no_root_squash,insecure)
/srv/tftp/ltsp *(ro,async,crossmnt,no_subtree_check,no_root_squash,insecure)

Далее вы либо локально, либо на внешнем dhcp сервере настраиваете tftp сервер и путь к загрузке образа. LTSP поддерживает загрузку через UEFI. В зависимости от того, какие клиенты у вас будут, выбираете образ для загрузки.

LTSP хранит все свои настройки в конфигурационном файле, которые используются во время генерации образа. В этих настройках, к примеру, можно указать автологин для каких-то MAC адресов, сетевые настройки, hostname и т.д. После изменения этих настроек, загрузочные образы надо пересобирать.

В общем, LTSP простая и надёжная система для создания и управления загрузочными образами. По своей сути это набор shell и немного python скриптов.

Сайт / Исходники

#pxe
​​У компании Canonical, авторов ОС Ubuntu, есть Open Source проект MAAS для автоматической раскатки систем на голое железо. Непривычная аббревиатура, которую они расшифровывают как Metal-As-A-Service, хотя иногда её можно увидеть как сокращение от Monitoring-As-A-Service.

С помощью MAAS можно настроить автоматическую установку любых подготовленных образов систем на голое железо. По сути это аналог таких проектов, как FOG Project, Cobbler, Foreman. В их основе лежат технологии сетевой загрузки PXE и TFTP. MAAS тут не исключение. На сегодняшний день это наиболее современное решение подобного типа, нацеленное на масштабное корпоративное применение. Но никто не мешает вам и рабочие станции с его помощью накатывать, а не только сервера и гипервизоры.

Расскажу на пальцах, как это работает. Современные сетевые карты поддерживают технологию PXE. Они могут выступать источником загрузки системы наравне с жёстким диском или usb устройством. Вы можете подготовить образ любой операционной системы, который автоматически выполнит установку на железо, не задавая вопросы. Этот образ нужно будет загрузить в систему, подобную MAAS. На DHCP сервере в локальной сети настраивается специальный параметр, который при загрузке сетевой карты с помощью PXE передаст ей адрес MAAS сервера, откуда будет взят образ ОС для загрузки.

Имя подготовленный сервер MAAS и настроив соответствующим образом DHCP, вам достаточно в биосе компьютера или сервера выбрать сетевую загрузку, чтобы автоматически подгрузить установочный образ и выполнить установку системы. Конкретно MAAS поддерживает интеграцию с Ansible, так что после установки системы сможет выполнить нужные настройки уже внутри неё. Всё это управляется через веб интерфейс, где имеется список машин, их технические характеристики и другая информация, в том числе о виртуальных машинах, если речь идёт о гипервизорах. Если на железе есть настройка WOL (Wake on Lan), то с помощью MAAS можно будет включать и выключать устройства.

Установка и базовая настройка MAAS относительно простая. Понадобится система Ubuntu. Развернуть MAAS можно как из snap, так и из привычных пакетов. Для этого есть отдельный репозиторий. Настройка и управление продукта могут выполняться через веб интерфейс, который приятен на вид и функционален. Если вас заинтересует эта система, захочется посмотреть и развернуть у себя, то вот тут подробный обзор на MAAS в связке с Packer:

▶️ Deploying Machines with MaaS and Packer - Metal as a Service + Hashicorp Packer Tutorial

Там прям пошаговая установка в соответствии с инструкцией. Повторить увиденное не составит большого труда. Автор подробно всё объясняет и показывает. Рассказывает нюансы с сетями, с настройкой DHCP и т.д. Очень доступно. Если не знаете английский, хватит синхронного перевода в Яндекс.Браузере.

Из всех продуктов подобного типа, что я тестировал, MAAS выглядит наиболее функциональным и целостным. Несмотря на то, что это изделие Canonical, никакой привязки к управляемым системам нет, кроме того, что устанавливать сам программный продукт лучше на сервер с Ubuntu. Разворачивать системы вы можете абсолютно любые: Linux, Windows, ESXI, Citrix и т.д.

Сайт / Исходники

#pxe