В общем виде алгоритм установки операционной системы (ОС) состоит из этапов:
- Формируются значения параметров и макросов для шаблона ОС. Подробнее см. в статье Макросы шаблонов ОС.
- На сервер устанавливается ОС.
- На сервер по протоколу SSH копируются рецепты и затем запускаются.
Способ установки ОС различается для шаблонов Linux, Windows и FreeBSD.
Linux
Установка ОС состоит из шагов:
- VMmanager конфигурирует виртуальную машину для загрузки скрипта установки при запуске. Для каждого шаблона указано количество перезагрузок, после которого считается, что ОС установлена.
- Запускается виртуальная машина.
- Скрипт установки получает от VMmanager значения макросов шаблона ОС.
- В базе данных в таблицу vm для виртуальной машины записывается счётчик оставшихся перезагрузок до окончания установки ОС.
- Виртуальная машина настраивается таким образом, чтобы при перезагрузке она остановилась.
- Скрипт устанавливает ОС.
- Скрипт перезагружает виртуальную машину и она останавливается.
- Сервис мониторинга vmwatch-node на узле кластера получает событие об остановке виртуальной машины от сервиса libvirtd и отправляет соответствующее сообщение сервису vmwatch-master.
- Сервис vmwatch-master обрабатывает полученное сообщение и выполняет вызов функции API — vm.event. В параметрах вызова функции указывается номер узла кластера, имя машины, тип и подтип наступившего события.
- VMmanager выполняет функцию vm.event, анализирует полученные данные. Если в базе данных для виртуальной машины установлен признак установки ОС, то VMmanager:
- Уменьшает значение счётчика перезагрузок.
- Если значение счётчика перезагрузок равно 0: изменяет конфигурацию виртуальной машины для того, чтобы загрузка при следующем запуске выполнялась с основного диска; снимает в базе данных признак установки ОС для виртуальной машины.
- Запускает виртуальную машину.
- Если значение счётчика перезагрузок не равно 0: повторяется последовательность действий с шага 4.
Windows
Установка ОС состоит из шагов:
- Разворачивается готовый образ установленной ОС. У неё в автозагрузке добавлен запуск скрипта C:\vmmgr\firstrun.cmd.
- Запускается виртуальная машина.
- Монтируется виртуальный диск объёмом 1 Мбайт, в котором записан скрипт настройки.
- Скрипт firstrun запускается и с помощью утилиты dd считывает скрипт настройки из примонтированного виртуального диска.
- Скрипт настройки запускается и конфигурирует виртуальную машину.
- Виртуальная машина перезагружается.
FreeBSD
Установка ОС состоит из шагов:
- Разворачивается модифицированный образ установочного диска bootonly.iso.
- Запускается виртуальная машина.
- В файл автозагрузки /etc/rc.local добавляется скрипт первичного запуска.
- Монтируется виртуальный диск объёмом 1 Мбайт, в котором записан shell-скрипт настройки.
- Скрипт первичного запуска считывает скрипт настройки из примонтированного виртуального диска и сохраняет его в /tmp/install.sh.
- Скрипт настройки запускается и конфигурирует виртуальную машину.
- Виртуальная машина перезагружается.