Согласитесь, приятно получить сервер уже готовый к выполнению задач. Установленный ISPmanager позволит сразу приступить к размещению сайта. Teamspeak – организовать тренировку по WoT без траты времени на инсталляцию.
Провайдеры за счет этого повышают доход. Сегодня они предлагают не просто машины с чистой ОС, а бухгалтерские, торговые, игровые серверы. «Предпродажная подготовка» повышает лояльность клиентов и уменьшает нагрузку на техподдержку.
Изначально в наших продуктах это было реализовано посредством установки нужных пакетов через Шаблон ОС. Проблема в том, что шаблоны требуют значительных затрат на создание, поддержку и актуализацию. Все усугубляется, когда клиент просит сделать предустановку непопулярного набора пакетов. К примеру, BigBlueButton, платформы для проведения вебинаров. Пользователь заказывает VDS и проводит видеоконференции, но только раз в 3 месяца. Он не хочет тратить по 30 минут на инсталляцию ПО при каждом заказе выделенного сервера. Провайдеру же подобные запросы не всегда интересны. Узкоспециализированный шаблон порой влечет неоправданные издержки.
Под катом мы расскажем о том, как решить такие проблемы с помощью рецептов — скриптов, выполняющих автоматическую установку ПО в VMmanager и DCImanager.
Сначала подробнее остановимся на Шаблонах ОС. C появлением рецептов их популярность снижается и вот почему.
- Если устанавливаемое программное обеспечение поддерживает несколько операционных систем, для каждой придётся сделать свой шаблон. Рецепт же может быть один на несколько ОС.
- Если речь идёт про KVM или выделенный сервер, то чтобы установить дополнительные пакеты нужно внести изменения в install.cfg (файл ответов). Если про OpenVZ, то нужно пересобрать весь контейнер, добавив в него нужные файлы. А в случае рецепта достаточно открыть через браузер меню в VMmanager или DCImanager и вставить код в поле ввода.
Таким образом получается, что дополнительное ПО сейчас можно установить и шаблонами и рецептами, однако последние проще в использовании. На данный момент мы используем шаблоны для добавления новых операционных систем, а рецепты для установки дополнительных пакетов.
Писать рецепт можно на любом языке, надо только, чтобы в ОС был необходимый интерпретатор. После окончания установки операционной системы и перезагрузки сервера, этот файл копируется по SSH во временную директорию и запускается с правами root.
В рецепте должен быть блок метаданных в начале тела.
#!/bin/sh # # metadata_begin /*Метка начала блока*/ # recipe: Hello! /*Внутреннее имя рецепта. Отображается в списках*/ # tags: centos7,debian8,ubuntu1404,ubuntu1604 /*Набор тэгов. Необходим для контроля совместимости рецепта и операционной системы. Рецепт считается совместимым с ОС, если совпадает хотя бы один тэг в шаблоне ОС и в рецепте*/ # revision: 1 /*Номер версии рецепта*/ # description_ru: Пример рецепта. Приветствие миру, которое будет выводиться при каждом входе в shell. # description_en: Example of recipe. Greetings to world, that will be shown after every login to shell. # /*Выше — описания на соответствующих языках. Отображаются при выборе рецепта в меню установки ОС на выделенном или виртуальном сервере*/ # metadata_end /*Метка конца блока*/ # echo "Hello World!" > /etc/motd
Меню рецептов доступно с уровня администратора:
- “Настройки кластера” → “Рецепты” в VMmanager.
- “Настройки” → “Рецепты” в DCImanager.
BILLmanager в свою очередь получает из этих панелей список рецептов и выводит его когда клиент заказывает услугу.
Также можно сделать разные тарифы на серверы: с рецептами и без. Нужные настройки выполняются при создании обработчика, см. спойлер.
Если нужно закрыть для всех клиентов доступ к установке того или иного ПО, например, для исправления ошибок в рецепте, это тоже возможно. Описание процесса на примере VMmanager — под ещё одним спойлером.
Затем на этапе настройки интеграции установить или снять флажок.
И при создании тарифа выбрать желаемый обработчик.
Выбираем нужный уровень доступа из выпадающего списка и нажимаем “Ok”.
На случай если клиент часто устанавливает ПО, которое пользуется малой популярностью, и хочет автоматизации процесса, в наших продуктах есть возможность дать конечным пользователям права на создание своих, локальных, рецептов. Для этого нужно зайти /usr/local/mgr5/etc и добавить в файл vmmgr.conf или dcimgr.conf строку Option UserRecipes, после чего перезапустить панель командой /usr/local/mgr5/sbin/mgrctl -m vmmgr exit или /usr/local/mgr5/sbin/mgrctl -m dcimgr exit соответственно.
На уровне пользователя в панели появится пункт меню «Управление” → “Рецепты», а значит возможность создавать собственные рецепты и использовать их при переустановке ОС виртуального или выделенного сервера.
Руководство
Теперь попробуем на практике написать рецепт и дать к нему доступ конечным пользователям. Для примера возьмём развёртывание на VDS продукта BigBlueButton 1.0, платформы для проведения вебинаров. Под спойлером описание процесса со скриншотами.
Нажимаем кнопку “Создать”.
Указываем имя файла, в котором будет находиться рецепт, пишем/вставляем в поле ввода скрипт, заполняем блок метаданных и нажимаем “Ок”.
Созданный рецепт появляется в списке.
Результат — при заказе услуги клиент хостинг-провайдера видит ещё один вариант предустановленного ПО.
Интересующихся исходным кодом приглашаем ещё под один спойлер.
#!/bin/bash # # metadata_begin # recipe: BigBlueButton # tags: ubuntu1404 # revision: 1 # description_ru: BigBlueButton, платформа для проведения вебинаров. # description_en: BigBlueButton, webinar platform. # metadata_end # # Запускаем логирование. RNAME=BigBlueButton set -x LOG_PIPE=/tmp/log.pipe.$$ mkfifo ${LOG_PIPE} LOG_FILE=/root/${RNAME}.log touch ${LOG_FILE} chmod 600 ${LOG_FILE} tee < ${LOG_PIPE} ${LOG_FILE} & exec > ${LOG_PIPE} exec 2> ${LOG_PIPE} killjobs() { jops="$(jobs -p)" test -n "${jops}" && kill ${jops} || : } trap killjobs INT TERM EXIT echo echo "=== Recipe ${RNAME} started at $(date) ===" echo #Обновляем пакеты, а затем дистрибутив ОС. apt-get update apt-get -y dist-upgrade #Добавляем репозиторий LibreOffice 4.4. LibreOffice используется для конвертации презентаций в формат PDF. apt-get -y install software-properties-common add-apt-repository -y ppa:libreoffice/libreoffice-4-4 add-apt-repository -y ppa:ondrej/php # Добавляем ключ доступа к репозиторию BigBlueButton и сам репозиторий. wget http://ubuntu.bigbluebutton.org/bigbluebutton.asc -O- | apt-key add - echo "deb http://ubuntu.bigbluebutton.org/trusty-1-0/ bigbluebutton-trusty main" | tee /etc/apt/sources.list.d/bigbluebutton.list # Обновляем список пакетов. apt-get update # Ставим кодеки ffmpeg. apt-get -y install build-essential git-core checkinstall yasm texi2html libvorbis-dev libx11-dev libvpx-dev libxfixes-dev zlib1g-dev pkg-config netcat libncurses5-dev FFMPEG_VERSION=2.3.3 cd /usr/local/src if [ ! -d "/usr/local/src/ffmpeg-${FFMPEG_VERSION}" ]; then wget "http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2" tar -xjf "ffmpeg-${FFMPEG_VERSION}.tar.bz2" fi cd "ffmpeg-${FFMPEG_VERSION}" ./configure --enable-version3 --enable-postproc --enable-libvorbis --enable-libvpx make checkinstall --pkgname=ffmpeg --pkgversion="5:${FFMPEG_VERSION}" --backup=no --deldoc=yes --default # Заранее принимаем с лицензионное соглашение пакета ttf-mscorefonts-installer чтобы во время установки BigBlueButton не появлялось окно и не требовалось участие пользователя. echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections # Ставим сам BigBlueButton. apt-get -y install bigbluebutton # Ставим штатный (по задумке разработчиков BBB, тестовый) пакет для проведения конференций. apt-get -y install bbb-demo # Ставим пакет для тестирования совместимости клиентского браузера с BBB. apt-get -y install bbb-check # Выполняем чистый перезапуск сервера BigBlueButton. bbb-conf --clean
Итак, новый рецепт доступен для клиентов. Теперь если кому-то надо, например, провести срочный вебинар или совещание, он может в сжатые сроки организовать площадку для встречи. Как видите, ничего сложного.
Желающим воспользоваться нашими продуктами и рецептами в частности, напоминаем ссылки на VMmanager и DCImanager, а также на документацию по рецептам.
Довольных вам клиентов!
P.S. В статье использована иллюстрация Антона Курятникова.
Ссылка на источник
ссылка на оригинал статьи https://habrahabr.ru/post/316624/
Добавить комментарий