Рецепты VMmanager

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

Иерархия: VMmanager KVM -> Шаблоны операционных систем
VMmanager Cloud -> Шаблоны операционных систем
VMmanager OVZ -> Шаблоны операционных систем

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

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

В разделе "Настройки кластера" -> "Политики" предусмотрена возможность указания рецепта, который будет принудительно выполняться после каждой установки или переустановки операционной системы.

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

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

Создание и управление рецептами

Создание и управление рецептами осуществляется в разделе "Настройки кластера" -> "Рецепты". По умолчанию добавлен репозиторий ISPsystem и загружены рецепты, которые присутствуют в данном репозитории.

Раздел «Управление рецептами»
  • Обновить — обновление данных из репозиториев;
  • Создать — создание нового локального рецепта. Созданные рецепты сохраняются в локальном репозитории на мастер-сервере кластера;
  • Изменить — редактирование рецепта;
  • Свойства — изменение прав доступа к рецепту;
  • Удалить — удаление рецепта;
  • Репозитории — управление репозиториями рецептов:
    • Создать - добавление нового репозитория:
      • Репозиторий - наименование добавляемого репозитория;
      • Ссылка на файл архива рецептов.
    • Изменить - изменение ссылки на репозиторий;
    • Удалить - удаление репозитория.

Обратите внимание, что репозиторий ISPsystem, а также рецепты, загруженные из данного репозитория, не могут быть удалены.

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

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

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

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

Метаданные необходимы панели управления:

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

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

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

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

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

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

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

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

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

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

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

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

vzctl runscript CTID filename

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

Создание рецептов пользователями

Разрешение пользователям доступа к рецептам осуществляется путем добавления в конфигурационный файл панели опции:

Option UserRecipes

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

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

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

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