По роду своей работы в сфере IT мне достаточно часто приходится сталкиваться с проблемами не всегда стандартными для IT сферы.
Так же заметки со ссылками на статьи которые очень часто на практике выручали, держать на своем компе стало не удобно. По этой причине создан этот блог - записная книжка статей и заметок. Авторов статей прошу не обижаться если местами забыл сделать на них обратную ссылку. Пишите в комментариях все обязательно поправлю..
Поиск по моему блогу
Создание шаблона TrixBox для OpenVZ
Продолжаем заметки о Linux.
Сегодня будем самостоятельно изготавливать шаблон для OpenVZ. Для большинства популярных linux-дистрибутивов не составляет труда найти готовый шаблон в интернете (например на сайте OpenVZ), но не для всех. Поэтому будем учиться тому, как изготовить шаблон самостоятельно. В качестве цели я выбрал дистрибутив Trixbox версии 2.8 (текущий стабильный релиз 2.8.0.4).
Собственно Trixbox 2.8 это CentsOS 5.5 с предустановленными Asterisk, FreePBX и прочими приятными мелочами. Распространяется он в виде iso-файла. Наша конечная цель - сделать из этого iso полноценный шаблон для OpenVZ и заставить его работать.
Первое, что нам нужно сделать это установить систему на отдельный компьютер или на виртуальную машину. Разницы нет никакой, выбирайте тот вариант, который удобней вам. Я буду устанавливать в виртуалку на VMWare. Выделите для системы 512 Mb оперативки и диск размером 10 Gb - нам понадобится сделать архив всей системы.
Установка Trixbox не отличается от установки любого другого дистрибутива linux, только вопросов при установке будет значительно меньше. Система полностью сконфигурирована, вам останется только выбрать ваш регион и задать пароль root-а. После этого система самостоятельно установится в течении 10 минут.
При возникновении вопросов с установкой обращайтесь к официальному руководству trixbox quick install guide.
Заходим в систему под root-ом. Нам нужно сделать архив всех файлов и после передать его на компьютер с OpenVZ. Сначала создадим файл со списком того, что не нужно включать в архив. Для этого выполним команду:
Как видно из предыдущей команды архив передается на наш сервер в папку /tmp.
Виртуальная машина нам больше не нужна, можете смело ее удалять. Все дальнейшие действия будут производится непосредственно на сервере. ВАЖНО! Все последующие действия будут производиться на работающем сервере с полными правами доступа (root). Очень внимательно вводите команды и перед тем как нажать Enter еще раз проверьте, что вы собираетесь редактировать или удалять!
Теперь мы вручную создадим виртуальное окружение (VE). После того как мы закончим мы получим работающий VPS с которого и снимем шаблон для дальнейшего использования.
Итак приступим. У меня все, что касается OpenVZ, лежит в директории /vz. Это символическая ссылка на /var/lib/vz. Сделать ее просто:
ln-s /var/lib/vz/vz
Создаем пустой контейнер для Trixbox и разархивируем в него полученный ранее архив. VID у меня будет 102:
# $Id: minimal.list,v 1.1 2005/10/10 15:23:38 kir Exp $
#
# List of packages to be installed into VPS
# to form a "base" of Fedora Core 4 "minimal" template
#
# NOTE: if you change this file, you have to re-create OS template cache
# from scratch, e.g. run vzpkgcache -f fedora-core-4--minimal
ed
basesystem
coreutils
openssh-clients
openssh-server
less
vim-minimal
iptables
rpm
crontabs
gzip
passwd
rootfiles
sudo
tar
tmpwatch
# Add-ons for VZ
dummy-centos-4
vzdev
MAKEDEV
Теперь приступим к подготовке самой системы. Нам нужно адаптировать ее для корректного функционирования в виртуальном окружении. Убедитесь, что вы редактируете файлы в виртуальном окружении, а не в директории /etc своего сервера!
Удаляем пароль пользователя root. Для этого отредактируем файл /vz/private/102/etc/shadow и заменим хеш пароля на !!.
nano /vz/private/102/etc/shadow
После редактирования строка с записями root должна выглядеть примерно так:
root:!!:15027:0:99999:7:::
Удалим из файла /vz/private/102/etc/inittab вызов mingetty, т.к. у нас отсутствуют физические консоли:
sed-i -e '/getty/d'/vz/private/102/etc/inittab
В виртуальном окружении нет физических устройств для монтирования поэтому удалим файл /vz/private/102/etc/mtab и заменим его символической ссылкой на /proc/mounts:
rm-f /vz/private/102/etc/mtab
ln-s /proc/mounts/vz/private/102/etc/mtab
Отредактируем файл /vz/private/102/etc/rc.sysinit и закомментируем команды отвечающие за очистку mtab:
nano /vz/private/102/etc/rc.sysinit
После редактирования эти строки будут выглядеть так:
# Clear mtab
# (> /etc/mtab) &> /dev/null
# Remove stale backups
# rm -f /etc/mtab~ /etc/mtab~~
Так же закомментируем в /vz/private/102/etc/rc.sysinit запуск udev:
# /sbin/start_udev
Удалим в файле /vz/private/102/etc/fstab все строки кроме той, в которой монтируется устройство /dev/pts:
nano /vz/private/102/etc/fstab
Останется только это:
devpts /dev/pts devpts gid=5,mode=620 0 0
Создадим ноды устройств:
cd/vz/private/102/dev
mknodptmx c 5 2
mkdirpts
/sbin/MAKEDEVttyp ptyp
mknodnull c 1 3
mknod-m 644 random c 1 8
mknod-m 644 urandom c 1 9
Чтобы не глючил yum сделаем еще вот такой финт ушами:
Запретим IPv6. Для этого отредактируем файл /vz/private/102/etc/sysconfig/network и изменим значение параметра NETWORKING_IPV6 на no:
nano /vz/private/102/etc/sysconfig/network
Добавим в файл /vz/private/102/etc/modprobe.d/blacklist две строки:
blacklist ipv6
blacklist net-pf-10
Отключим все физические сетевые интерфейсы. Для этого отредактируем файл /vz/private/102/etc/sysconfig/network-scripts/ifcfg-ethX, где X - номер интерфейса начиная с нуля. Изменим значение параметра ONBOOT на no:
Удаляем файл /vz/private/102/etc/resolv.conf - он будет создаваться системой при каждом запуске виртуального окружения:
rm-f /vz/private/102/etc/resolv.conf
У меня в сети есть proxy-сервер с адресом 192.168.0.100 и портом 3128 и я хочу что бы yum работал через него. Для этого создадим файл /vz/private/102/etc/profile.d/proxy.sh:
На этом подготовка закончена. Осталось задать параметры новому виртуальному окружению и попробовать запустить его. Не буду описывать все параметры, т.к. я это уже делал в предыдущей статье, просто перечислю их:
Для нормального функционирования asterisk ему необходим tty9. Разрешим VE его использование:
vzctl set102 --devices c:4:9:rw --save
vzctl exec102 /sbin/MAKEDEVtty
vzctl exec102 /sbin/MAKEDEVpty
Проверим работоспособность Trixbox. Для этого зайдем по адресу http://192.168.0.102
Все в порядке, все службы работают! Для входа в панель администратора используйте логин maint и пароль password - это данные по умолчанию.
Заходим в VPS:
vzctl enter 102
Обновляем систему:
yum -y --skip-broken update
shutdown-r now
Некоторые модули ядра не будут обновляться, т.к. у них в зависимостях стоит более новая версия ядра, чем у меня, поэтому я использую ключ --skip-broken.
Осталось теперь только создать шаблон и после этого разворачивать новый сервер за пару кликов. Выходим из виртуального окружения и останавливаем его:
На этом пока все. В следующем посте попытаемся сконфигурировать Trixbox.
P.S. Если у кого-то есть замечания/дополнения с удовольствием выслушаю и добавлю.
Комментариев нет:
Отправить комментарий