Рецепт — скрипт, который VMmanager выполняет на виртуальной машине после установки операционной системы. Рецепты настраивают виртуальную машину: устанавливают программное обеспечение для конкретных задач, изменяют конфигурационные файлы и т. п. Скрипты выполняются только на виртуальных машинах с операционными системами семейства Linux. Рецепт передаётся в запросе узла кластера к панели управления, а панель управления сохраняет его на диске во временном файле и запускает с помощью утилиты vzctl:
vzctl runscript CTID filename
Рецепт указывается при создании виртуальной машины. Подробнее см. в статье Создание и управление виртуальными машинами.
Для взаимосвязи шаблонов ОС и рецептов используются теги. Рецепт совместим с ОС, если у них совпадет хотя бы один тег.
Можно указать рецепт для принудительной установки на виртуальные машины в Настройки кластера → Политики → поле Рецепт. Панель управления сохраняет не идентификатор конкретного рецепта, а его внутреннее имя. Несколько рецептов могут иметь одинаковое внутреннее имя, но разный набор тегов. При установке операционной системы выбирается первый совместимый с шаблоном ОС рецепт с указанным именем. Так можно задавать разные рецепты для разных операционных систем.
Таймаут на выполнение рецепта — 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
Блок метаданных начинается с ключевой фразы metadata_begin и заканчивается ключевой фразой metadata_end. Между этими ключевыми фразами могут располагаться следующие метаданные:
- recipe — внутреннее имя рецепта. Обязательное поле. Несколько рецептов могут иметь одинаковое внутреннее имя;
- tags — набор тегов. Указываются через запятую. Используется для контроля совместимости рецепта и шаблона ОС;
- revision — версия рецепта;
- description_XX — краткое описание рецепта на соответствующем языке.
Использование макросов
В теле рецепта можно использовать макросы — особые последовательности символов, которые заменяются на значения перед запуском рецепта:
- ($TIMEZONE) — временная зона сервера. По умолчанию — значение временной зоны узла кластера, на котором создаётся виртуальная машина с рецептом.