Рецепты технические детали

Материал из ISPWiki
Перейти к: навигация, поиск

Что это такое

Рецепты - это скрипты, выполняемые в виртуальной машине после установки операционной системы из шаблона ОС. Их назначение - подготовить ОС виртуальной машины к определенному сценарию ее использования: установить требуемые пакеты, изменить конфигурационные файлы и т.п.

Как использовать

В разделе "Настройки кластера/Рецепты" создайте скрипт, который будет сохранен в локальном репозитории на мастер-сервере кластера, или используйте рецепты, подготовленные ISPsystem, или создайте собственный репозиторий рецептов и подключите его в разделе "Настройки кластера/Рецепты/Репозитории".

Назначьте рецепт по умолчанию, который будет выполняться после каждой установки или переустановки ОС, в разделе "Настройки кластера/Политики" и/или укажите требуемый рецепт при создании/переустановке виртуальной машины в поле "Рецепт".

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

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

Примечания:

  • Пути к файлам рецептов задаются в конфигурационном файле панели, см. path recipecachedir, path recipelocaldir.
  • Несколько рецептов могут иметь одинаковое внутреннее имя (см. ниже)

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

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

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

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

  • recipe: - внутреннее имя рецепта. Несколько рецептов могут иметь одинаковое внутреннее имя, панель не выполняет проверку уникальности. Внутреннее имя должно быть указано обязательно.
  • tags: - набор тэгов, перечисленных через запятую. Необходим для контроля совместимости рецепта и шаблона ОС. Все шаблоны ОС также имеют набор тэгов. Рецепт считается совместимым с шаблоном, если любой тэг рецепта совпадает с любым тэгом шаблона.
  • revision: - номер версии рецепта. Используется панелью для отображения в соответствующей колонке списка рецептов.
  • description_XX: - краткое описание рецепта на соответствующем языке. Отображается в списке рецептов и при выборе рецепта в формах создания VM, переустановки VM.

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

В тексте рецепта допускается использование макросов - особых последовательностей символов, перед запуском рецепта заменяемых на соответствующие значения.

Макросы, доступные для VMmanager KVM, Cloud:

  • ($HOSTNAME) - доменное имя виртуальной машины
  • ($TIMEZONE) - временная зона сервера. По умолчанию берется значение временной зоны хоста, можно изменить в конфигурационном файле панели.

Макросы, доступные для VMmanager OVZ:

  • ($TIMEZONE) - временная зона сервера. По умолчанию берется значение временной зоны хоста, можно изменить в конфигурационном файле панели.

Способ выполнения рецепта

Для VMmanager OVZ: рецепт передается в запросе в панель управления узлом кластера, которая сохраняет его на диске во временном файле и запускает его с помощью утилиты vzctl:

vzctl runscript CTID filename

где CTID - идентификатор контейнера, filename - временный файл с рецептом, сохраненный на узле кластера.


Для VMmanager KVM: Используя подключение по SSH к VM с уже установленной ОС, файл рецепта копируется во временный каталог на виртуальной машине и запускается с правами root.

Ограничения использования

В текущий момент рецепты могут выполняться только на виртуальных машинах с ОС семейства Unix.

Имеется таймаут на выполнение рецепта - 3 часа.

Рецепты для пользователей

Начиная с версии 5.67 доступна возможность использования рецептов пользователями панели.

Для включения доступа в конфигурационный файл панели требуется добавить опцию

Option UserRecipes

По умолчанию конфигурационный файл находится в директории /usr/local/mgr5/etc

После изменения конфигурационного файла требуется перезапустить панель командой:

/usr/local/mgr5/sbin/mgrctl -m vmmgr exit

На уровне пользователя появится пункт меню "Управление/Рецепты". Пользователь сможет создавать собственные рецепты и использовать их при переустановке ОС виртуальной машины.