Рецепт — скрипт, который VMmanager выполняет на виртуальной машине после установки операционной системы. Рецепты настраивают виртуальную машину: устанавливают программное обеспечение для конкретных задач, изменяют конфигурационные файлы и т. п. Скрипты выполняются только на виртуальных машинах с операционными системами семейства Linux. Панель управления копирует файл скрипта по протоколу SSH во временный каталог на виртуальной машине и запускает с правами суперпользователя.

Рецепт указывается при создании виртуальной машины. Подробнее см. в статье Создание и управление виртуальными машинами.

Для взаимосвязи шаблонов ОС и рецептов используются теги. Рецепт совместим с ОС, если у них совпадет хотя бы один тег.

Можно указать рецепт для принудительной установки на виртуальные машины в Настройки кластера → Политики → поле Рецепт. Панель управления сохраняет не идентификатор конкретного рецепта, а его внутреннее имя. Несколько рецептов могут иметь одинаковое внутреннее имя, но разный набор тегов. При установке операционной системы выбирается первый совместимый с шаблоном ОС рецепт с указанным именем. Так можно задавать разные рецепты для разных операционных систем.

Таймаут на выполнение рецепта — 3 часа.

Управление шаблонами ОС осуществляется в разделе Настройки кластера Рецепты.

Репозитории рецептов


Шаблоны ОС хранятся в репозиториях. Нажмите Репозитории → Создать для добавления репозитория.

Укажите:

  • Репозиторий — наименование;
  • Ссылка — URL–адрес.

VMmanager определяет рецепты, доступные в репозитории, и добавляет их в список Настройки кластера → Рецепты.

Нажмите кнопку Обновить, чтобы обновить список доступных рецептов.

По умолчанию добавлен репозиторий ISPsystem.

Свойства рецептов


Нажмите кнопку Свойства, чтобы настроить рецепт.

Укажите:

  • Ограничение доступа к рецепту — настройки доступности рецепта:
    • Доступен всем;
    • Доступен администраторам;
    • Недоступен — рецепт недоступен для использования ни пользователям, ни администраторам.

Создание рецепта


Нажмите кнопку Создать, чтобы создать собственный рецепт.

Укажите:

  • Имя файла — наименование;
  • Кодировка — обратите внимание, при смене кодировки изменения, внесённые в редакторе, будут утеряны:
    • UTF-8;
    • WINDOWS-1251.
  • Шрифт — размер. Указывается в пикселях;
  • Режим — тип подсветки синтаксиса;
  • Тема — тип фона;
  • Клавиатура — тип курсора;
  • Скрытые символы — опция отображения скрытых символов;
  • Нумерация — опция нумерации строк;
  • Перенос — тип переноса строк:
    • Off — отключён;
    • 40 Chars — максимальная длина строки ограничена 40 символами;
    • 80 Chars — максимальная длина строки ограничена 80 символами;
    • Free — максимальная длина строки ограничена границами редактора.

По умолчанию создавать рецепты могут только администраторы.

Чтобы разрешить пользователям создавать рецепты, добавьте в конфигурационный файл панели управления опцию Option UserRecipes. Подробнее см. в статье Конфигурационный файл.

Структура файла рецепта


Метаданные

Панель управления использует метаданные:

  • для отображения рецепта в списке рецептов.
  • для выбора подходящего рецепта при выполнении рецепта, указанного в политиках кластера.

В тело рецепта записывается блок комментариев, хранящий метаданные рецепта:

# metadata_begin
# recipe: hello_world
# tags: unix
# revision: 1
# description_ru:
# description_en:
# metadata_end
BASH

Блок метаданных начинается с ключевой фразы metadata_begin и заканчивается ключевой фразой metadata_end. Между этими ключевыми фразами могут располагаться следующие метаданные:

  • recipe — внутреннее имя рецепта. Обязательное поле. Несколько рецептов могут иметь одинаковое внутреннее имя;
  • tags — набор тегов. Указываются через запятую. Используется для контроля совместимости рецепта и шаблона ОС;
  • revision — версия рецепта;
  • description_XX — краткое описание рецепта на соответствующем языке.

Использование макросов

В теле рецепта можно использовать макросы — особые последовательности символов, которые заменяются на значения перед запуском рецепта:

  • ($HOSTNAME) — доменное имя виртуальной машины;
  • ($TIMEZONE) — временная зона сервера. По умолчанию — значение временной зоны узла кластера, на котором создаётся виртуальная машина с рецептом.