Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018)

Материал из 0x1.tv

Докладчик
Денис Силаков.jpg
Денис Силаков

Пользователи OpenVZ активно пользуются шаблонами контейнеров для создания новых виртуальных окружений. В «legacy» OpenVZ (с ядром 2.6.x) шаблон представляет собой архив с готовым образом файловой системы, который можно напрямую использовать для новых контейнеров.

В репозиториях OpenVZ содержится несколько десятков как официальных шаблонов, так и шаблонов от сообщества. Официальные шаблоны для OpenVZ создавались не копированием образа ФС заранее подготовленного контейнера, а специальными инструментальными средствами, входящими в коммерческие версии Virtuozzo.

Возможности этих инструментов существенно шире, чем одноразовая подготовка образа ФС для контейнера.

Начиная с OpenVZ 7, код этих утилит открыт и администраторы могут использоваться ими не просто для создания контейнеров, но и для их сопровождения на протяжении всего жизненного цикла.

Видео[править вики-текст]

on youtube


Презентация[править вики-текст]

Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018).pdf

Thesis[править | править вики-текст]

Виды[править | править вики-текст]

В OpenVZ 7 есть шаблоны двух типов — ОС и приложений. Первые используются для создания контейнеров с заданным дистрибутивом, вторые — для установки, удаления и обновления конкретного приложения или стека программ в контейнере, где уже установлена ОС. Каждый шаблон приложения рассчитан на использование в контейнере, созданном из шаблона определённой ОС — можно создать контейнер с CentOS 6 на основе шаблона ОС CentOS 6, а затем добавить туда MySQL с помощью шаблона приложения MySQL для CentOS 6.

Шаблоны ОС разделяются на базовый (устанавливающий ОС в минимальном варианте) и кастомизированные, отличающиеся от базового настройками или набором предустановленных программ.

Согласно правилам именования, базовый шаблон содержит имя, версию и архитектуру ОС (например, «centos-6-x86_64»), кастомизированные содержат некоторый дополнительный суффикс («centos-6-x86_64-server»), а имя шаблона приложения содержит название приложения и название базового шаблона целевой ОС («mysql-centos-6-x86_64»).

Структура[править | править вики-текст]

Шаблон в OpenVZ 7 -это набор конфигурационных файлов, на основе которых готовится образ образ ФС. Эти файлы вместе с закэшированными образами ФС хранятся в директории /vz/template. Структура поддиректорий соответствует названию ОС шаблона — например, «centos/6/x86_64». Конфигурация базового шаблона ОС хранится в файле config/os/default, кастомизированных — в файлах config/os/<суффикс>. Файлы шаблонов приложений для данной ОС — в config/app/<имя_приложения>/default. Имена файлов самоговорящие — packages, package_manager, repositories, summary и так далее.

Шаблоны могут содержать скрипты, выполняемые на определённой стадии их развёртывания — перед либо сразу после завершения одного из шагов cache, install, upgrade и remove. Скрипт, выполняемый перед тем или иным шагом, имеет префикс «pre-» (например, ), а после завершения шага — префикс «post-».

Утилиты[править | править вики-текст]

Управление шаблонами осуществляется с помощью утилиты vzpkg.

Для установки шаблона ОС необходимо дать ей команду в OpenVZ 7 эта команда сводится к установке RPM-пакета с файлами соответствующего шаблона. После установки шаблона ОС, желательно сразу создать кэш входящих в него пакетов и образ диска с установленными пакетами командой vzpkg create cache.

Имя шаблона ОС можно передать стандартным утилитам при создании контейнера:

 # prlctl create c1 --vmtype=ct --ostemplate=centos-6-x86_64

Установить шаблон приложения в работающий контейнер можно с помощью vzpkg:

 # vzpkg install c1 mysql

Утилита vzpkg может также обновлять внутри работающих контейнеров пакеты, относящиеся к тому или иному шаблону, обновлять кэшированные образы и производить много других полезных действий — см. «man vzpkg».

Механизм работы[править | править вики-текст]

При создании кэша для шаблона ОС, разворачивается заранее подготовленное минимальное chroot-окружение с «родным» для целевой системы пакетным менеджером, модифицированным для целей vztt. С помощью этого менеджера осуществляется установка необходимых пакетов (перечисленных в os-packages) из репозиториев, указанных в os_repositories.

Chroot-окружения и модифицированные пакетные менеджеры входят в пакеты vzpkgenv*. Обновляются пакеты vzpkgenv достаточно редко — только если в новых версиях пакетных менеджеров и связанной с ними инфраструктуре (например, в структуре метаданных репозиториев) происходят радикальные изменения. Если же имеющийся пакетный менеджер способен устанавливать пакеты от новой версии дистрибутива, то нет никаких причин его не использовать.

Создание шаблонов[править | править вики-текст]

Проще всего создать шаблон на основе уже существующего. Достаточно создать каталог для шаблона в соответствии с его именем, скопировать файлы из исходного шаблона и внести необходимые изменения. Если все модификации сводятся к изменению набора пакетов или настроек по умолчанию, то много времени это не займёт.

Можно создать шаблон с нуля с помощью утилиты vzmktmpl из пакета vztt-build, которому на вход надо передать файл с инструкциями. Примеры инструкций есть в /usr/share/vztt/samples.


Шаблоны контейнеров в OpenVZ 7 (Денис Силаков, OSSDEVCONF-2018)!.jpg

Примечания и ссылки[править вики-текст]



Plays:82   Comments:0