Недавно возникла задача установить дистрибутив Linux на парк из 15 машин.
Наиболее автоматизированным методом такой установки является сетевая установка.
Таким образом, этой задаче посвящено множество руководств; для этого есть инструменты, как специфичные для каждого дистрибутива (debian-installer, кикстарт), так и универсальные (CloneZilla, System Installer).
В этой статье я хочу написать о том, как при решении этой задачи обеспечить, чтобы каждой машине было присвоено имя компьютера в формате pcNN, где NN — числа в порядке от 01 до 99, в моем решении это будут два последних знака после запятой.
с IP-адресов.
Погуглив по этой теме, я не нашел готового ответа, поэтому покопавшись в мануале к DHCP-серверу, нашел решение и решил поделиться им с хабрасообществом.
На DHCP-сервере я использую ISC DHCP Server (dhcpd).
Для решения проблемы я воспользовался встроенной возможностью использования т.н.
выражения для установки каких-либо параметров.
Обычно имя компьютера можно указать в таком формате: option host-name "example";
И привязать его, например, к конкретной машине по MAC-адресу.
Но мне было лень вручную прописывать имена хостов для каждой машины: а вдруг мне нужно установить не 15 машин, а 100? Поэтому мы выдадим имя компьютеру на основе IP, назначенного ему через DHCP. Строка конфигурации для этого выглядит следующим образом: option host-name=concat("pc", suffix(binary-to-ascii(10,8, "", leased-address),2));
Используя знак «=", мы указываем, что опция будет указана с помощью выражения.
арендованный-адрес возвращает выданный IP-адрес в двоичном формате, с помощью функцииbinary-to-ascii преобразуем его в формат BCD без разделителей (например, 19216801), разделитель можно указать с помощью третьего операнда.
Наконец, мы берем только два последних символа адреса (01) и объединяем их со строкой «pc», в результате чего получается адрес pc01. Уникальность IP гарантирует уникальность имени компьютера.
А это полный файл конфигурации: ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.199;
option domain-name-servers 192.168.0.1;
option host-name=concat("pc", suffix(binary-to-ascii(10,8, "", leased-address),2));
filename="pxelinux.0";
}
Как видите, я ограничил диапазон адресами 192.168.0.101-192.168.0.199, т.е.
от pc01 до pc99. Конечно, при таком алгоритме возникает проблема из-за того, что одному и тому же компьютеру может быть назначен разный IP, следовательно, имя компьютера каждый раз будет разным.
Но при использовании этой схемы для установки по сети включение и установка системы, как правило, происходит сразу, а имя, выдаваемое по DHCP, прописывается в конфигурацию каждой машины (по крайней мере, при установке с помощью debian-installer) , так что проблема не столь существенна.
Если вам нужно имя, строго привязанное к конкретной машине, вы можете составить его на основе MAC-адреса (например, его последнего байта), либо выдать сами IP-адреса на основе MAC-адреса.
Теги: #Системное администрирование #dhcp #dhcpd #имя хоста
-
Биология
19 Oct, 24 -
Энергосберегающие Лампы: Как Их Выбрать?
19 Oct, 24 -
The Old Reader Перестает Быть Общедоступным
19 Oct, 24 -
Эрланг. Что Это, Почему, Как И Для Кого.
19 Oct, 24 -
Рыцарь Дорог (Гаджет)
19 Oct, 24 -
Канобувости 8-Й Выпуск
19 Oct, 24 -
Как Запустить Интернет-Радио Прямо На Сайте?
19 Oct, 24