CoreSystem/Virtualization/Создание bundle: различия между версиями
Строка 24: | Строка 24: | ||
== Создание bundle с помощью {{prg|mkve-bundle}} == | == Создание bundle с помощью {{prg|mkve-bundle}} == | ||
Утилита {{prg|mkve-bundle}} используется следующим образом: | |||
$ mkve-bundle [<опции>] <шаблон> | |||
Здесь {{term|<шаблон>}} - это либо путь к директории, содержащей шаблон [http://www.altlinux.org/CoreSystem/Virtualization/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_bundle#.D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D0.BD.D0.B0.D1.82.D0.B8.D0.B2.D0.BD.D0.BE.D0.B3.D0.BE_.D1.88.D0.B0.D0.B1.D0.BB.D0.BE.D0.BD.D0.B0_.D0.B4.D0.BB.D1.8F_mkve-bundle], либо имя шаблона, содержащегося в директории {{path|/usr/share/mkve/templates}}. | |||
Например, если у вас есть шаблон {{path|~/test}}, вы можете создать из него bundle следующим образом: | |||
$ mkve-bundle $HOME/test | |||
А если вы установили свой шаблон в {{path|/usr/share/mkve/templates}}: | |||
$ ls -d /usr/share/mkve/templates/test | |||
/usr/share/mkve/templates/test | |||
то вы можете сказать просто | |||
$ mkve-bundle test | |||
== Создание bundle/контейнеров собственными силами == | == Создание bundle/контейнеров собственными силами == |
Версия от 17:43, 25 февраля 2009
Определения
Слово гипервизор является синонимом к понятию "тип виртуализации". Так мы говорим о гипервизорах openvz, qemu, kvm и т.д.
Контейнер - это готовая к работе виртуальная машина под управлением одного из гипервизоров.
Bundle - набор данных и метаданных определенного формата для автоматического создания контейнеров средствами mkve.
Шаблон (шаблон mkve-bundle) - набор данных определенного формата для автоматического создания bundle'ов средствами mkve-bundle.
Формат bundle
Формат нативного шаблона для mkve-bundle
Вот полный список файлов для гипервизора hypervisor:
./version # версия шаблона ./packages/$hypervisor # файл со списком пакетов, устанавливающихся в bundle # при использовании гипервизора $hypervisor ./hooks-lists/$hypervisor # [необ.] файл со списком хуков для гипервизора $hypervisor ./conf/$hypervisor/ # [необ.] директория, содержащая дополнительные файлы для упаковки # в bundle для гипервизора $hypervisor
Таким образом, все, кроме версии зависит от типа виртуализации и единственным обязательным списком является список пакетов.
Создание bundle с помощью mkve-bundle
Утилита mkve-bundle используется следующим образом:
$ mkve-bundle [<опции>] <шаблон>
Здесь <шаблон> - это либо путь к директории, содержащей шаблон [1], либо имя шаблона, содержащегося в директории /usr/share/mkve/templates.
Например, если у вас есть шаблон ~/test, вы можете создать из него bundle следующим образом:
$ mkve-bundle $HOME/test
А если вы установили свой шаблон в /usr/share/mkve/templates:
$ ls -d /usr/share/mkve/templates/test /usr/share/mkve/templates/test
то вы можете сказать просто
$ mkve-bundle test
Создание bundle/контейнеров собственными силами
Пакеты ve-*
Эти пакеты предназначены для создания контейнеров. Они не содержат ни одного файла, но вытягивают указанные в них пакеты по зависимостям. Имеется два типа таких пакетов.
Первый тип составляют пакеты ve-<name>. Они определяют множество пакетов, необходимое для создания контейнера для "сервиса" <name>. Например, пакет ve-ftp-server вытягивает множество пакетов, необходимое для поднятия ftp-сервера на "работающей" виртуальной машине.
Второй тип составляют пакеты ve-hypervisor-<hypervisor>. Они определяют дополнительное множество пакетов, необходимое для запуска сервиса под конкретным типом виртуализации. Этот пакет может оказаться и "пустым", если дополнительных пакетов не требуется (как, например, в случае OpenVZ).
Таким образом, множество пакетов, требуемых для поднятия сервиса <service> на виртуальной машине под управлением гипервизора <hypervisor> определяется "суммой" ve-<service> + ve-hypervisor-<hypervisor>.
Утилита mkve-cache (aka hsh-?)
Для тех, кто привык не надеяться ни на кого, кроме себя и hasher'а, имеется утилита mkve-cache. Эта утилита позволяет создать и упаковать hasher'овский chroot с нужным набором пакетов. Кроме этого, при создании chroot можно запускать хуки, команды и копировать файлы из host'а в chroot. Подробное описание см. в mkve(1).
Пример 1.
$ mkve-cache --out <file> <список пакетов>
установит в дефолтный hasher'овский chroot пакеты <список пакетов>, и после этого запакует содержимое chroot'а в файл <file>.
Пример 2.
$ mkve-cache --out <file> --command 'chkconfig sshd on' <список пакетов>
установит в дефолтный hasher'овский chroot пакеты <список пакетов>, запустит в chroot'е команду
chkconfig sshd on
и после этого запакует содержимое chroot'а в файл <file>.
Пример 3.
$ mkve-cache -z --tarify-only <путь к hasher'овскому chroot'у>
просто запакует указанный chroot в файл $TMPDIR/output.tar.gz.