Gabarits disque
De ISPWiki.
Sommaire |
Création des gabarits disque sous FreeBSD
Installez les sources de système d'exploitation qui sont situées dans /usr/src
Puis, créez un répertoire où le gabarit disque sera placé, par exemple:
mkdir -p /vs/tsrc/FreeBSD-8-minimal
Ensuite, faites le monde (la commande 'make the world') et installez-en dans le répertoire créé
cd /usr/src/ make buildworld make DESTDIR=/vs/tsrc/FreeBSD-8-minimal installworld make DESTDIR=/vs/tsrc/FreeBSD-8-minimal distribution cp /etc/resolv.conf /vs/tsrc/FreeBSD-8-minimal/etc/resolv.conf
Donc, nous avons un gabarit default du système. Changez les fichiers de configuration à votre choix, ajoutez des paquets supplémentaires. Для этого удобнее всего войти внутрь шаблона и проводить все операции как на обычном сервере, для этого выполним следующие команды:
mount -t devfs devfs /vs/tsrc/FreeBSD-8-minimal/dev chroot /vs/tsrc/FreeBSD-8-minimal /bin/csh
Теперь мы внутри шаблона, редактируем все, что считаем нужным, устанавливаем порты, пакеты и т.д.
Для инициализации виртуального сервера можно создать файл с именем
/root/.vpsinstall
он будет запущен при создании виртуального сервера
exemple: .vpsinstall
#!/bin/sh
HOST=`hostname`
IP=$1
echo "${IP} ${HOST}" >> /etc/hosts
echo "hostname=\"$HOST\"" >> /etc/rc.conf
Обычно он бывает гораздо сложнее и выполняет функции настройки конфигов по конкретным IP-адресам и доменному имени, генерирует SSL сертификаты и пароли, выполняет инициализацию баз данных и т.д.
По завершении работы по создании шаблона, команда exit вернет вас из шаблона.
Создаем конфиг со списком файлов, которые не нужно включать в шаблон (exemple .history)
cd /vs/tsrc/FreeBSD-8-minimal echo "root/.history" > .uptmp.exclude echo "tmp/" >> .uptmp.exclude
Lancez le programme utilitaire depuis le gabarit d'archive:
/usr/local/ispmgr/sbin/uptmp -C FreeBSD-8-minimal /vs/tsrc/FreeBSD-8-minimal
В текущей директории получим файлы
- VERSION - хранит имя шаблона и текущую версию
- .uptmp - список файлов шаблона (НЕ УДАЛЯЙТЕ ЕГО, он необходим для создания обновлений)
- install.tgz - архив, из которого можно развернуть шаблон
Файл install.tgz можно залить на свой сервер (ftp или http), c которого будет производится его установка в VDSmanager
scp install.tgz install.tgz.md5 download@master.download.ispsystem.com:~/htdocs/FreeBSD-8.0/i386/VDSmanager/DiskTemplate/FreeBSD-8-minimal/ rm install.tgz install.tgz.md5
После этого заходим в интерфейс VDSmanager - > "Шаблоны диска" и устанавливаем созданный шаблон.
Обновление дисковых шаблонов для FreeBSD
Со временем возникает необходимость что-либо обновлять в дисковых шаблонах, для этого, как и прежде, заходим внутрь шаблона и делаем необходимые изменения
mount -t devfs devfs /vs/tsrc/FreeBSD-8-minimal/dev chroot /vs/tsrc/FreeBSD-8-minimal /bin/csh
Если вам необходимо выполнить какие-либо действия после обновления, например, для перезапуска сервисов, создайте скрипт
/.uptmp.afterupdate
После разворачивания шаблона он будет выполнен на каждом из запущенных виртуальных серверов
После этого запускаем утилиту создания обновления шаблона
/usr/local/ispmgr/sbin/uptmp -c /vs/tsrc/FreeBSD-8-minimal
и заливаем файлы на свой сервер
cd /vs/tsrc/FreeBSD-8-minimal scp update-2.tgz update-2.tgz.md5 download@master.download.ispsystem.com:~/htdocs/FreeBSD-8.0/i386/VDSmanager/DiskTemplate/FreeBSD-8-minimal/ rm update-2.tgz update-2.tgz.md5
Цифра 2 в данном случае обозначает номер версии шаблона, и она будет постоянно увеличиваться
Создание дисковых шаблонов XEN
По сути, виртуальная машина xen - это обычный сервер, так что надо на него все устанавливать самым обычным способом (в HVM режиме воспользовавшись стандартным инсталятором). Если виртуальный сервер должен работать в VM режиме, то там надо будет ставить некоторые специальные пакеты (например: udev) и не надо ставить ядро. Оно должно лежать где-нибудь рядом с шаблоном диска на dom0 и должно поддерживать xen. Ничего плохого в использовании одного ядра (двух: i386 и amd64) для всех виртуальных машин я не вижу. Они, кстати, в этом случае будут память общую для сегмента кода использовать. Разве что, найдется маньяк, которому нужны непременно разные версии.
FreeBSD в VM режиме пока не работает (был какой-то проект, но похоже загнулся). Они обещают в "8ке" поддержку xen.
Debian (utilisez debootstrap)
Получаем "голую", абсолютно не настроенную систему (т.е. только необходимые файлы будут распакованы).
mount -o loop <image path> /mnt/debian /usr/sbin/debootstrap --arch ARCH lenny /mnt/debinst http://ftp.us.debian.org/debian mount -t proc /proc /mnt/debinst LANG=C chroot /mnt/debinst /bin/bash cd /dev MAKEDEV generic
Modifiez fstab, он должен выглядеть примерно так:
/dev/hda / ext3 defaults 0 1 /dev/hdb none swap sw 0 0 proc /proc proc defaults 0 0
Настраиваем сеть. Прописываем hostname в /etc/hostname. Прописываем hostname в /etc/hosts. Редактируем /etc/network/interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.42
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
Настраиваем apt. Редактируем /etc/apt/sources.list:
deb-src http://ftp.us.debian.org/debian lenny main deb http://security.debian.org/ lenny/updates main deb-src http://security.debian.org/ lenny/updates main
Устанавливаем пароль root. И ставим openssh-server (по умолчанию его нет) + udev (без него sshd работать не будет).
Вот собственно и все. Теперь можно настроить всякие мелочи.
- Вынести ненужные пакеты (например dhcp-client).
- Если хочется иметь безпарольную консоль, открываем /etc/inittab и заменяем в следующей строке /sbin/getty на /bin/bash:
1:2345:respawn:/sbin/getty 38400 tty1
После этого к виртуальной машине можно будет подключиться, используя команду:
xm console <имя виртуального сервера>
Чтобы отключиться от консоли, нажите Ctrl+[
Ubuntu (используя debootstrap)
Для этого надо установить debootstrap скрипты для ubuntu. Вот как это делается на Debian:
#!/bin/bash # add jaunty repository cat <<EOF> /etc/apt/sources.list.d/jaunty.list deb http://archive.ubuntu.com/ubuntu/ jaunty main restricted deb-src http://archive.ubuntu.com/ubuntu/ jaunty main restricted EOF # update apt-get update # install debootstrap apt-get install -y --force-yes debootstrap # remove repository rm /etc/apt/sources.list.d/jaunty.list apt-get update
После этого процедура полностью аналогична установки Debian.
CentOS, Fedora (используя rinse)
debootstrap умеет устанавливать только Debian (вернее дистрибутивы работающие через apt). Если хочется поставить что-то работающее через yum: centos или fedora, rinse - то что надо.
apt-get install rinse
Правда и тут без граблей не обошлось. У него в списке пакетов для centos5 похоже нескольких не хватает (и без них ничего не встает). Поэтому надо дописать в файл /etc/rinse/centos-5.packages:
nss nspr python-iniparse
Теперь ставим голую ОС (процедура во многом схожая с установкой Debian)
mount -o loop <image path> /mnt rinse --arch i386 --distribution centos-5 --directory /mnt mount -t proc /proc /mnt/proc LANG=C chroot /mnt /bin/bash cd /dev MAKEDEV generic
Редактируем fstab, должен выглядеть примерно так:
/dev/hda / ext3 defaults 0 1 /dev/hdb none swap sw 0 0 proc /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0
Настраиваем сеть. Прописываем hostname в /etc/hosts. Редактируем /etc/sysconfig/network-scripts/ifcfg-eth0:
TYPE=Ethernet DEVICE=eth0 #BOOTPROTO=none #BOOTPROTO=dhcp ONBOOT=yes IPADDR=82.146.37.118 NETWORK=82.146.37.0 NETMASK=255.255.255.0 BROADCAST=82.146.37.255 GATEWAY=82.146.37.254
/etc/sysconfig/network:
NETWORKING=yes HOSTNAME=centos5-i386.ispsystem.net GATEWAY=82.146.37.254
Для Fedora7 надо еще passwd поставить.
Устанавливаем пароль root. И ставим openssh-server (поумолчанию его нет). Добавляем (раскоменчиваем) две строки в /etc/ssh/sshd_config:
PermitRootLogin yes PasswordAuthentication yes
Использование xen-tools
Для упрощения установки можно воспользоваться пакетом xen-tools (если xen собирался вручную, возникнут проблемы, т.к. он поставит xen из репозитария через зависимости). Он позволяет упростить создание шаблона. Пример:
xen-create-image –hostname=hobbiton –dist=etch \
–ip=192.168.1.10 –netmask=255.255.255.0 –gateway=192.168.1.1 \
–lvm=lvmxen –debootstrap
xm create -c hobbiton.cfg
Ручная установка
Иногда бывает тяжело создать нормальный шаблон для автоматической установки ОС, или появляется необходимость тонкой настройки ОС на этапе установки (например, нужно определенным образом разбить разделы на жестком диске, установить ОС Windows). В этих случаях можно создать шаблон для ручной установки ОС с использование стандартной процедуры установки. Для этого вам понадобится образ установочного диска вашей ОС.
Предположим, у вас есть образ для установки Windows 7 (/xen/iso/Windows7.iso).
- Создаем каталог /xen/template/Windows7.
- В нем создаем файл VERSION (его содержимое будет отображаться в виде версии в списке шаблонов VDSmanager)
- Создаем шаблон конфига XEN (файл с именем config)
kernel = "/usr/lib64/xen/boot/hvmloader" builder='hvm' name = "__NAME__" pae=0 acpi=1 apic=1 vif = [ 'type=ioemu, ip=__IP__' ] disk = [ '__TYPE__:__DISK__,hda,w', 'file:/xen/iso/Windows7.iso,hdb:cdrom,r' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' device_model = '/usr/lib64/xen/bin/qemu-dm' boot='cd' sdl=0 vnc=1 vncviewer=1 vncunused=0 vncdisplay=__ID__ vncpasswd='__PASSWD__'
Теперь вы можете создать VDS, используя шаблон Windows7. И, зайдя на него через VNC, установить Windows на ваш VDS.
Аналогичным образом можно установить и другие операционные системы, например, OpenBSD, в этом случае конфигурационный файл будет выглядеть так:
kernel = "/usr/lib64/xen/boot/hvmloader" builder='hvm' name = "__NAME__" pae=0 acpi=1 apic=1 vif = [ 'type=ioemu, ip=__IP__, model=ne2k_pci' ] disk = [ '__TYPE__:__DISK__,hda,w', 'file:/xen/iso/install47.iso,hdb:cdrom,r' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' device_model = '/usr/lib64/xen/bin/qemu-dm' boot='cd' sdl=0 vnc=1 vncviewer=1 vncunused=0 vncdisplay=__ID__ vncpasswd='__PASSWD__' ne2000=1
В данном конфигурационном файле следует обратить особое внимание на модель сетевого адаптера - model=ne2k_pci и ne2000=1, т.к. с re (по-умолчанию) внутри VDS не работает сеть из-за конфликта прерываний.
Скрипты, вызываемые VDSmanager
setpass <ip> '<mountdir>' < <password> setname <ip> '<mountdir>' '<name>' setip <ip> '<network>' '<netmask>' '<gateway>' '<mountdir>' setsize <path> <size>
ip - основной IP адрес сервера (если адрес в конфиге не указан, может быть указано имя VDS, например, в при работе с уже существующими VDS, созданными не через VDSmanager).
mountdir - каталог, куда на данный момент смонтирован приватный диск.
network, netmask, gateway - выбирается из конфига VDSmanager, в зависимости от IP адреса сервера.
path - путь до приватного диска (файла или ресурса LVM).
size - размер в мегабайтах.
name - имя сервера (hostname).
password - пароль plaintext. Для шифрования можно использовать утилиту /usr/local/ispmgr/sbin/crypt.
Кроме того в каталоге с шаблоном могут находиться следующие файлы:
VERSION - версия шаблона.
image - .tgz архив, содержащий файлы VDS. В этом случае будет создан раздел ext3, в который будут распакованы все файлы из этого архива. Если это не .tgz, то считается, что это бинарный шаблон диска VDS.
config - шаблон конфигурации для VDS. В нем могут быть использованы следующие макросы:
- __TYPE__ - тип диска (для LVM - phy, для файлов - file)
- __DISK__ - путь до приватного диска
- __IP__ - ip адрес сервера + имя bridge интерфейса, если необходимо. Например: 1.1.1.1, bridge=eth0
- __NAME__ - имя сервера
- __ID__ - VNC id
- __PASSWD__ - пароль (plaintext)
- __TEMPL__ - путь до каталога с шаблоном
+ любые файлы, которые небходимы для настройки и работы VDS.
Создание дисковых шаблонов openVZ
В качестве основы для шаблона лучше использовать имеющиеся шаблоны:
http://download.openvz.org/template/precreated/
Можно создать шаблон через debootstrap и т.п., но могут возникнуть определенные проблемы, которые в шаблонах с openvz.org уже могут быть решены.
- Скачиваем шаблон, создаём директорию для шаблона и распаковываем его в данную директорию.
Выполнять команды необходимо с правами пользователя root.
mkdir new_template tar -xvzpf fedora-13-x86.tar.gz -C new_template
- Монтируем procfs
mount -t proc none new_template/proc
- И делаем чрут
chroot new_template
- Далее, устанавливаем пакеты, настраиваем систему.
- Чтобы выполнить какие-либо действия при создании VDS, необходимо прописать их в скрипт, который удалит себя после выполнения.
Для centos это можно сделать следующим образом:
- Создать шеловый скрипт /etc/rc3.d/S50vdsinstall
echo '#!/bin/sh' > /etc/rc3.d/S50vdsinstall echo '' >> /etc/rc3.d/S50vdsinstall chmod +x /etc/rc3.d/S50vdsinstall
- В скрипте прописать какие-либо действия
- В самом конце файла прописать команду для его удаления:
echo 'rm -f /etc/rc3.d/S50vdsinstall' >> /etc/rc3.d/S50vdsinstall
В результате этот скрипт будет запускаться при старте системы и после выполнения удалять себя.
- После того, как шаблон настроен, выходим из чрута
exit
- Отмонтируем proc и убьём все процессы, использующие файлы в директории new_template
fuser -k new_template/ umount new_template/proc
- И заархивируем шаблон
tar -czpf fedora-13-my-x86.tar.gz -C net_template .
Имя файла обязательно должно начинаться с имени дистрибутива. Так как openVZ, в зависимости от имени, по-разному настраивает сеть, hostname и т.д внутри VDS
Получившийся файл fedora-13-my-x86.tar.gz на сервере помещается в директорию с шаблонами. Обычно, это /vz/template/cache/
