Рецепти. Установка на сервери в VMmanager і DCImanager



Погодьтеся, приємно отримати сервер вже готовий до виконання завдань. Встановлений ISPmanager дозволить відразу приступити до розміщення сайту. Teamspeak – організувати тренування по WoT без витрати часу на інсталяцію.
Провайдери за рахунок цього підвищують дохід. Сьогодні вони пропонують не просто машини з чистою ОС, а бухгалтерські, торгові, ігрові сервери. «Передпродажна підготовка» підвищує лояльність клієнтів і зменшує навантаження на техпідтримку.

Спочатку в наших продуктах це було реалізовано за допомогою установки потрібних пакетів через Шаблон ОС. Проблема в тому, що шаблони вимагають значних витрат на створення, підтримку і актуалізацію. Все ускладнюється, коли клієнт просить зробити попередню непопулярного набору пакетів. Приміром, BigBlueButton, платформи для проведення вебінарів. Користувач замовляє VDS і проводить відеоконференції, але тільки раз в 3 місяці. Він не хоче витрачати по 30 хвилин на інсталяцію ПЗ при кожному замовленні виділеного сервера. Провайдеру ж подібні запити не завжди цікаві. Вузькоспеціалізований шаблон деколи тягне невиправдані витрати.
Під катом ми розповімо про те, як вирішити такі проблеми за допомогою рецептів — скриптів, які виконують автоматичну установку ПО VMmanager і DCImanager.


Спочатку докладніше зупинимося на Шаблонах ОС. C появою рецептів їх популярність знижується і ось чому.
  1. Якщо програмне забезпечення підтримує кілька операційних систем, для кожної доведеться зробити свій шаблон. Рецепт же може бути один на кілька ОС.
  2. Якщо мова йде про 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, платформи для проведення вебінарів. Під спойлером опис процесу зі скріншотами.
Створення рецептуВиконуємо авторизацію в панелі VMmanager під користувачем з правами адміністратора, заходимо «Налаштування кластера»→«Рецепти».



Натискаємо кнопку «Створити».



Вказуємо ім'я файлу, в якому буде знаходитися рецепт, пишемо/вставляємо в поле вводу скрипт, заповнюємо блок метаданих і натискаємо «Ок».



Створений рецепт з'являється у списку.



Результат — при замовленні послуги клієнт хостинг-провайдера бачить ще один варіант встановленого ПЗ.


Цікавляться вихідним кодом запрошуємо ще під один спойлер.
Вихідний код рецепта
#!/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-вірного 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 | посередник 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. У статті використана ілюстрація Антона Курятникова.
Посилання на джерело
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.