В общем виде алгоритм установки операционной системы (ОС) состоит из этапов:

  1. Формируются значения параметров и макросов для шаблона ОС. Подробнее см. в статье Макросы шаблонов ОС.
  2. На сервер устанавливается ОС.
  3. На сервер по протоколу SSH копируются рецепты и затем запускаются.

Способ установки ОС различается для шаблонов Linux, Windows и FreeBSD.

Linux


Установка ОС состоит из шагов:

  1. VMmanager конфигурирует виртуальную машину для загрузки скрипта установки при запуске. Для каждого шаблона указано количество перезагрузок, после которого считается, что ОС установлена.
  2. Запускается виртуальная машина.
  3. Скрипт установки получает от VMmanager значения макросов шаблона ОС.
  4. В базе данных в таблицу vm для виртуальной машины записывается счётчик оставшихся перезагрузок до окончания установки ОС.
  5. Виртуальная машина настраивается таким образом, чтобы при перезагрузке она остановилась.
  6. Скрипт устанавливает ОС.
  7. Скрипт перезагружает виртуальную машину и она останавливается.
  8. Сервис мониторинга vmwatch-node на узле кластера получает событие об остановке виртуальной машины от сервиса libvirtd и отправляет соответствующее сообщение сервису vmwatch-master.
  9. Сервис vmwatch-master обрабатывает полученное сообщение и выполняет вызов функции API — vm.event. В параметрах вызова функции указывается номер узла кластера, имя машины, тип и подтип наступившего события.
  10. VMmanager выполняет функцию vm.event, анализирует полученные данные. Если в базе данных для виртуальной машины установлен признак установки ОС, то VMmanager:
    1. Уменьшает значение счётчика перезагрузок.
    2. Если значение счётчика перезагрузок равно 0: изменяет конфигурацию виртуальной машины для того, чтобы загрузка при следующем запуске выполнялась с основного диска; снимает в базе данных признак установки ОС для виртуальной машины.
    3. Запускает виртуальную машину.
    4. Если значение счётчика перезагрузок не равно 0: повторяется последовательность действий с шага 4.

Windows


Установка ОС состоит из шагов:

  1. Разворачивается готовый образ установленной ОС. У неё в автозагрузке добавлен запуск скрипта C:\vmmgr\firstrun.cmd.
  2. Запускается виртуальная машина.
  3. Монтируется виртуальный диск объёмом 1 Мбайт, в котором записан скрипт настройки.
  4. Скрипт firstrun запускается и с помощью утилиты dd считывает скрипт настройки из примонтированного виртуального диска.
  5. Скрипт настройки запускается и конфигурирует виртуальную машину.
  6. Виртуальная машина перезагружается.

FreeBSD


Установка ОС состоит из шагов:

  1. Разворачивается модифицированный образ установочного диска bootonly.iso.
  2. Запускается виртуальная машина.
  3. В файл автозагрузки /etc/rc.local добавляется скрипт первичного запуска.
  4. Монтируется виртуальный диск объёмом 1 Мбайт, в котором записан shell-скрипт настройки.
  5. Скрипт первичного запуска считывает скрипт настройки из примонтированного виртуального диска и сохраняет его в /tmp/install.sh.
  6. Скрипт настройки запускается и конфигурирует виртуальную машину.
  7. Виртуальная машина перезагружается.