LINUX.ORG.RU
ФорумAdmin

Посоветуйте как лучше загружать конфигурацию хоста по сети

 


0

2

Включаю ПК или виртуалку подключенные к локальной сети, DHCP раздаёт PXE, загружается дистрибутив линукса (в теории, он может быть любой), — там просто загружается ядро и initramfs сразу содержащий squashfs-образ с системой, куда потом chroot'ится /init-скрипт. В общем, получается работающая система в RAM через PXE.

Простой /init-скрипт в initramfs, который чрутится в squashfs-образ с системой.

# cat init
#!/bin/sh

error() {
  setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
}

mount -t proc none /proc || error
mount -t sysfs none /sys || error
mount -t devtmpfs devtmpfs /dev || error
mount -t tmpfs tmpfs /overlay || error

mkdir -p /ro /overlay/rw /overlay/work
mount -t squashfs -o loop,noatime /filesystem.squashfs /ro || error
mount -t overlay -o lowerdir=/ro,upperdir=/overlay/rw,workdir=/overlay/work rootfs /newroot || error

mount --move /dev /newroot/dev
umount /sys
umount /proc

exec chroot /newroot /sbin/init
exec sh
reboot

Чрутнулся. Система успешно загрузислась. Теперь не знаю как лучше настраивать систему сразу после загрузки. Например, в дистрибутивах есть /etc/rc.local файл, выполняющийся сразу после загрузки. Можно модифицировать его, чтобы он например, делал bash -s <(curl http://10.0.0.1/rc_local.php), и уже скриптом отдавать глядя на IP машины дальнейшие команды (в виде bash скрипта) для конфигурации системы и введения её в работу. Настроить SSH, доустановить нужные пакеты, сделать git clone и прочая-прочая-прочая. Всё, что угодно.

А как бы вы реализовали такую настройку системы?

Только не надо про syslinux с его pxeconfig, это не то пальто: там в зависимости от MAC ты только выбираешь, какой файл с конфигурацией syslinux'а отдать. Я не хочу иметь 100500 образов систем, — пусть система будет одна, и уже в процессе загрузки она настраивается под каждый хост.

★★★★★

bash -s <(curl http://10.0.0.1/rc_local.php), и уже скриптом отдавать глядя на IP машины дальнейшие команды (в виде bash скрипта) для конфигурации системы и введения её в работу.

Не очень понятно, зачем тут php? Что мешает сразу же считать с управляющего сервера bash-скрипт для конфигурации? Зачем его на лету формировать с помощью php?

А так Вам стоит определиться, как и где Вы будете хранить настройки Ваших систем. От это зависит наиболее простой способ доставки их на целевые системы.

Ну и традиционный вопрос - чем не устраивают уже существующие системы централизованной конфигурации (ansible, puppet, Chef и т. п.)?

Serge10 ★★★★★ ()

… Я не хочу иметь 100500 образов систем, — пусть система будет одна…

Ты не полностью образы делай, только /etc, … свой, а бинари пусть общими для всех будут.

anonymous ()

А как бы вы реализовали такую настройку системы?

Смотри чем твои бездисковые узлы отличаются друг от друга. Как минимум в /etc надо править hostname && IP для этого хватит двух строк на sed. Смотри пост выше.

anonymous ()
Ответ на: комментарий от Serge10

автор я так понял хочет через пыхоскрипт отдавать разные конфиги для разных айпишнегов.
в случае если автор умеет только в пых иного не получится.
2тс: поизучай опыт построения множества систем с сетевым конфигом, статей и вариантов постройки написано выше крыши. просто погугли и почитай опыт других

pfg ★★★★★ ()
Последнее исправление: pfg (всего исправлений: 1)