Как и с другими проектами, прежде чем браться за дело, создаю тред. Планирую начать разработку системы оркестрации на POSIX shell, система будет представлять собой сборочный цех дистрибутивов в готовые для загрузки образы raw, initramfs, iso и так далее. Образы будут создаваться из build-файлов, что-то вроде пакетного менеджера, только для дистрибутивов.
Зарубежные партнёры заприметившие проект booty даром выделили сервер (4 ядра 4 гига) для развития http://www.voglea.com/crux/crux_gnulinux/, где в качестве эксперимента я запустил ежедневную автосборку дистрибутивов CRUX из последних версий портов, т.е. сейчас там представлена версия CRUX 3.6 которая в стадии глубокого тестирования, но неофициально образ можно стянуть у меня. :}
Говоря о данной автосборке, выполняются два build-сценария, — staging, собирающий _только_ пакетную базу дистрибутива в iso образ, оно же stage3, и build-сценарий os, собирающий непосредственно готовый к загрузке и установке iso-образ дистрибутива. Образы доступны по ссылке выше.
Скрипты сборки пока-что представлены как шаблоны, тут и тут:
https://github.com/sp00f1ng/booty/blob/master/templates/crux_gnulinux-staging...
https://github.com/sp00f1ng/booty/blob/master/templates/crux_gnulinux-os/crux...
Для сборки систем будут использованы все мои другие проекты: booty + newkernel + cruxstrap.
Я хочу предложить «тупой» метод оркестрации, который в отличии от Ansible не приводит работающую систему к заданному виду из плейбука, а по-мужицки так kexec'ает initrd-образ с собранным в нём дистрибутивом. Тобишь, вы локально пишете сценарий (или плейбук) сборки, включая все необходимые настройки, затем запуском одной команды дистрибутив собирается в raw, initrd, iso и так далее, после чего загружается аки прошивка на удалённый хост и kexec'ается, выполняется перезагрузка системы в новое состояние.
Преимущество данного метода в том, что система изначально расчитана на одноразовость, у вас всегда есть полная локальная копия такой системы, в случае необходимости её можно развернуть на любом хосте из любого удобного образа, хоть с флешечки на соседнем компьютере.
Ну дополнительно прикручу синхронизацию локального корня системы с её удалённой версией, т.е. чтобы ради пары файлов не перезагружать всё целиком, а например залить обновление сайта. Просто помещаете файлы в локальный каталог system/rootfs-changes, и корень директории будет синхронизирован с удалённой версией. Вот.
Идеи, предложения?