https://github.com/sp00f1ng/boobstrap
Для тех, кто читает это впервые. Изначально я написал три простых утилиты, mkbootstrap устанавливает дистрибутив (Arch, Debian, CRUX) в chroot/ директорию, mkinitramfs создаёт initramfs-образ из директории, ему можно указать chroot/ директорию как --overlay, и тогда она упакует её в squashfs-архив, дистрибутив будет работать в tmpfs (CRUX/core занимает 150мб в squashfs). И конечно же, mkbootisofs, которая делает из директории загрузочный (BIOS / UEFI) ISO, который хоть на флешку, хоть виртуалке скорми. Оригинальный тред [Комплекс загрузочных скриптов boobstrap].
Так вот, я решил пойти немного дальше, и добавил:
boobstrap run --template netboot -- "sleep 5 ; ping 8.8.8.8 -c 10 ; poweroff"
Вам понятно, что делает эта команда?
boobstrap run \
--template default
"/root/.ssh/authorized_keys=$HOME/.ssh/id_rsa.pub" \
"/tmp/add_remote_file=./from_local_file" \
-- "/etc/rc.d/sshd start"
А так?
boobstrap run --timeout 3600 "/etc/rc.local=./git_clone_and_try_to_build_my_project"
Может быть так понятнее?
Во-первых, это система шаблонов. Указывая, какой шаблон использовать и используя все три утилиты mkbootstrap / mkinitramfs / mkbootisofs, мы собираем кастомный загрузочный ISO, например шаблон netboot, который соберёт самый маленький, базовый CRUX.ISO в 50мбайт.
Во-вторых, в шаблон прямо «на лету» можно добавлять свои файлы в любом количестве. /remote=/local. Например, предустановить ssh-ключ с последующим запуском sshd чтобы хост был сразу доступен после загрузки.
В третьих, можно выполнить автозапуск любой команды после загрузки дистрибутива. Выполнить что-то, а затем завершить работу, или не выполнить и завершиться через час работы.
А если я ещё добавлю к этому PXE ...........
ставь лайк если тоже поймал флэшбек увидев pxe и многоточие вместе
Я наверное изобретаю велосипед. Или не? Ну это не просто менеджер виртуальных машин, что было бы понятно, а он сперва собирает ISO-образ, в сооветствии с вашей конфигурацией, какую укажете одной командой, а затем выполняет её запуск. Делает полезную работу и может выключиться. Добавить к этому PXE, чтобы дело не огранивалось одним локалхостом, а можно было эти конфигурации физическим хостам отдавать, и вообще красота будет. Да? Да. И всё это — в tmpfs.
Дискач?