Утилита ESXi Community Packaging Tools предназначена для создания собственных пакетов для VMware ESXi в форматах VIB (VMware Installation Bundle) and ZIP (VMware Offline Bundle). Утилиту добавил в Сборки программ.
Собранные пакеты получают уровень доверия (acceptance level) Community Supported.
Автор утилиты Андреас Питц и блогер v-front.de выпустил последнюю версию утилиты 2.4 довольно давно, она поддерживает ESXi 5.x/6.x. Но я её успешно использую и для создания пакетов для ESXi 7.x, пока работает.
Инструкция по использованию ниже.
Шаг 1. Создайте свой TGZ файл
Понятно, что для того, чтобы применились правильные права к файлам, нужно работать в Linux. Или в WSL2 для Windows.
В качестве первого шага вам необходимо создать сжатый gzip tar-архив (tar.gz или tgz), в который будут входить всех файлы вашего программного пакета. Условия:
- все пути к файлам в архиве должны относиться к корневому (/) каталогу системы ESXi
- все каталоги, включенные в пути к файлам, должны быть добавлены в архив
Самый простой способ добиться этого — создать пустой каталог, в нём создать необходимую структуру каталогов и скопировать все файлы, которые вы хотите включить, в соответствующие подкаталоги. Вот пример необходимых команд. В этом примере мы предполагаем, что хотим создать пакет драйверов, состоящий из следующих трех файлов:
/etc/vmware/driver.map.d/igb.map /usr/lib/vmware/vmkmod/igb /usr/share/hwdata/driver.pciids.d/igb.ids
В этом примере работаем в ESXi.
cd /tmp
mkdir build
cd build
mkdir -p etc/vmware/driver.map.d
cp /etc/vmware/driver.map.d/igb.map etc/vmware/driver.map.d
mkdir -p usr/lib/vmware/vmkmod
cp /usr/lib/vmware/vmkmod/igb usr/lib/vmware/vmkmod
mkdir -p usr/share/hwdata/driver.pciids.d
cp /usr/share/ hwdata/driver.pciids.d/igb.ids usr/share/hwdata/driver.pciids.d
Cоздаём файл TGZ:
tar cvzf ../net-igb.tgz *
При использовании с v (=verbose ) команда tar выведет файлы, которые она добавила в архив:
etc/ etc/vmware/ etc/vmware/driver.map.d/ etc/vmware/driver.map.d/igb.map usr/ usr/lib/ usr/lib/vmware/ usr/lib/vmware/vmkmod/ usr/lib/vmware/vmkmod/igb usr/share/ usr/share/hwdata/ usr/share/hwdata/driver.pciids.d/ usr/share/hwdata/driver.pciids.d/igb.ids
Теперь у нас есть tgz-архив файлов, составляющих наш новый программный пакет ESXi. Но прежде чем мы сможем использовать или распространять его, нам нужно преобразовать его в собственный формат VIB VMware.
Шаг 2. Создайте файл VIB с помощью tgz2vib5.cmd
Что такое VIB? VIB — это VMware Installation Bundle. VIB файл включаем в себя:
- файловый архив, аналогичный тому, который мы создали в шаге 1 (файл полезной нагрузки — payload file)
- файл XML (descriptor.xml) с метаданными описания
- файл электронной подписи (sig.pkcs7)
Чтобы создать файл VIB из нашего файла TGZ, запустите tgz2vib5.cmd:
Графический интерфейс не требует пояснений, но есть несколько рекомендаций по использованию правильных параметров и подходящих метаданных.
С помощью первой кнопки "Browse" вы выбираете файл TGZ который мы создали на шаге 1. Начиная с версии 2.1 скрипта в качестве альтернативы вы можете выбрать каталог сборки "build directory", чтобы он самостоятельно построил файл TGZ из структуры каталогов Windows. Это сэкономит часть работы на шаге 1 и может полностью убрать необходимость запуска системы Linux, но, обратите внимание, в этом случае при создании файла TGZ в Windows вы потеряете все атрибуты файлов, специфичные для Linux, такие как X бит для исполняемых двоичных файлов или символические ссылки! Вы можете переключаться между двумя режимами радиокнопками вверху.
С помощью второй кнопки "Browse" вы выбираете рабочий каталог скрипта — "working directory". Этот каталог будет использоваться для хранения временных файлов, файла журнала и результирующего файла VIB.
VIB type вы выбираете "bootbank" почти во всех случаях. В настоящее время известен только один случай пакета типа "locker", и это VIB tools-light, включающий VMware Tools, встроенные в ESXi. VIB tools-light.
VIB description data: это метаданные, которые будут храниться в файле descriptor.xml:
- Name — имя вашего драйвера устройства или программного обеспечения. Для драйверов добавьте префикс, обозначающий тип устройства: net- для драйвера сетевого интерфейса, scsi- для драйвера контроллера SCSI, ata- и sata- для драйверов контроллера (S)ATA.
- Version — используйте версию соответствующего драйвера устройства или программного обеспечения (в этом примере 5.2.1), добавьте уникальный номер сборки (в примере -9), который поможет отличить несколько сборок одной и той же версии исходного кода.
- Vendor — заполните имя производителя или автора (имеется в виду производитель устройства или автор программного обеспечения).
- Summary — кратко объясните что представляет собой пакет.
- Description — введите более подробное объяснение, например, для каких устройств можно использовать драйвер или какие функции имеет программное обеспечение. Здесь также можно отдать должное себе или добавить любую другую информацию, которая может быть полезна пользователям этого пакета драйверов.
- Details URL — вы можете ввести адрес сайта или ссылку с дополнительной информацией о пакете.
Примечание. Все эти поля, кроме Details URL, обязательны для заполнения.
Package properties: в этом разделе вы можете определить зависимости от других пакетов, теги для вашего пакета и различные флаги установки. Вы можете загрузить предварительные настройки всех этих свойств для четырех различных типов пакетов:
- hardware driver — ESXi 5.0+, 5.1+, 5.5+ или 6.0+, см. пояснения ниже
- firewall rule
- esxcli plugin
- VMware Tools
Настройки подгружаются из вашего последнего сеанса работы с TGZ2VIB5.
Начиная с версии 2.2 скрипта можно указать уровень совместимости драйвера оборудования, загрузив соответствующий пресет. Выберите версию ESXi, с которой был скомпилирован драйвер. Драйверы, скомпилированные для одной версии будут работать и с более поздними версиями ESXi. Поэтому, если для компиляции драйвера использовался открытый исходный код ESXi 5.0, загрузите пресет "Driver (ESXi 5.0+)". Полученный пакет драйверов также будет работать с ESXi 5.1, 5.5 и 6.0.
Начиная с версии 2.1 сценария, вы также можете выбрать Acceptance Level для пакета VIB. По умолчанию это community (CommunitySupported), который не требует доверенной электронной подписи, но ограничивает системные каталоги, которые могут быть изменены пакетом VIB. Если вы хотите изменить системные каталоги, вам нужно выбрать accepted (VMwareAccepted) или certified (VMwareCertified). Acceptance Level CommunitySupported позволяет изменять каталоги:
- /etc/vmware/shutdown/shutdown/
- /etc/vmware/pciid/
- /etc/vmware/vm-support/
- /etc/vmware/firewall/
- /etc/vmware/service/
- /etc/cim/openwsman/
- /opt/
- /usr/lib/cim/
- /usr/lib/pycim/
- /usr/lib/hostprofiles/plugins/
- /usr/lib/vmware/
- /usr/lib/vmware-debug/
- /var/lib/sfcb/registration/
- /etc/vmware/driver.map.d
- /usr/share/hwdata/driver.pciids.d
Примечание: вы можете создавать файлы, а также деревья подкаталогов в этих разрешенных каталогах. Этого достаточно для создания пакетов с драйверами устройств и правилами брандмауэра.
VMwareAccepted позволяет изменить любой системный каталог. Файлы VIB с уровнем приемлемости, отличным от CommunitySupported, должны иметь действующую электронную подпись, но их все же можно установить одним из следующих способов:
- esxcli software vib install с атрибутом --no-sig-check
- PowerCLI ImageBuilder
- -force с командлетом Add-ESXSoftwarePackage для добавления пакета в Image Profile
- -NoSignatureCheck при экспорте Image Profile в Offline Bundle или образ ISO с командлетом Export-ESXImageProfile
- ESXi-Customizer-PS будет использовать обе эти опции, если вы вызовете его с параметром -nsc
На скриншоте показан пресет для пакета драйверов ESXi 5.0+ с уровнем приемлемости CommunitySupported.
Packaging options: в этом разделе вы можете выбрать вариант переупаковки файла TGZ:
- Если вы следовали инструкциям из шага 1, выбирайте "Do not touch".
- Если вы не создали файл TGZ самостоятельно, вы можете выбрать "Force repacking", это переупаковывает файл и гарантирует, что будет включена полная структура каталогов.
- Последняя опция "Force repacking and pause for adv. editing" сначала распаковывает архив TGZ, затем приостанавливает выполнение скрипта, чтобы вы могли вручную редактировать файлы пакета или добавлять в него новые файлы, прежде чем он запакует проект в новый TGZ. Используйте если точно знаете что делаете.
По умолчанию для полезной нагрузки создаются контрольные суммы и встраиваются в файл descriptor.xml. Вы можете опустить их, сняв соответствующий флажок.
Runtime options:
Enable automatic update check: получать информацию об обновлениях этого скрипта.
Pause execution for manual editing of descriptor.xml: ниже вы видите скриншот файла descriptor.xml, который tgz2vib5.cmd создаёт для данного примера. Хотя вы можете установить большинство тегов с помощью графического интерфейса, показанного выше, вам может потребоваться изменить некоторые более сложные параметры, которые не включены в графический интерфейс. Вы можете сделать это, вручную отредактировав файл descriptor.xml, именно для этого предназначена данная опция.
Файл VIB, созданный с помощью tgz2vib5.cmd, можно установить в работающую систему ESXi с помощью следующих команд в оболочке ESXi (или через удаленный интерфейс командной строки vSphere):
esxcli software acceptance set --level=CommunitySupported
esxcli software vib install -v /path/to/vib-file
Первая команда необходима для того, чтобы система принимала пакеты с Acceptance Level "CommunitySupported" и без действительной электронной подписи (например, созданные tgz2vib5.cmd). Вторая команда устанавливает пакет.
Если вы изменили Acceptance Level пакета VIB при сборке, например, на accepted , то вам не требуется первая команда. Однако вам нужно пропустить проверку электронной подписи:
esxcli software vib install --no-sig-check -v /path/to/vib-file
Используйте параметр --no-sig-check только для пакетов из источника, которому вы полностью доверяете.
Вы также можете создать кастомизированный ISO образ ESXi с уже добавленным VIB пакетом. Для этого можно использовать скрипт ESXi-Customizer-PS.
Шаг 3. Создайте Offline Bundle с помощью vib2zip.cmd
Что такое Offline Bundle? По сути это пакет, содержащий один или несколько файлов VIB и дополнительные метаданные. Таким образом можно создавать хранилища программных пакетов.
В чем уникальность Offline Bundle? Их можно импортировать в vSphere Update Manager (для автоматизации процесса обновления).
Туториал по использованию vib2zip.cmd от Alex Lopez:
Если вам нравится учиться по видео, попробуйте.
Чтобы создать Offline Bundle из нашего файла VIB, запустите vib2zip.cmd:
Все файлы VIB, которые вы хотите включить в Offline Bundle, должны быть скопированы в один и тот же каталог (source VIB directory). Если вы добавите только один файл VIB, имеет смысл использовать те же атрибуты метаданных для автономного пакета, что и для файла VIB (тогда KB-URL соответствует Details URL при сборке VIB). В ином случае вы должны заполнить что-то своё. В Offline Bundle есть два дополнительных атрибута:
- Vendor code — код вендора. Все буквы прописные. VMware рекомендует трёхбуквенные коды, но можно больше.
- Contact — контактная информация, не обязательно, как и KB-URL.
Начиная с версии 1.2 vib2zip у вас есть новая кнопка с надписью "Load from VIB". Нажатие этой кнопки извлечёт метаданные самого последнего файла VIB в каталоге сборки и предварительно заполнит соответствующие поля. Это очень полезно, если ваш автономный пакет содержит только один файл VIB.
ESXi version compatibility setting — вы можете указать, на какие версии ESXi можно устанавливать ваш пакет. По умолчанию используются все версии ESXi 5 и 6. Совместимость зависит от версии ESXi, которая использовалась для создания драйвера. Если использовался код OSS ESXi 5.0, драйвер будет совместим с ESXi 5.* и 6.0. Если использовался код OSS ESXi 5.1, он будет совместим с ESXi 5.1, 5.5, 6.0 и 6.5. А если использовался OSS-код ESXi 5.5, то он будет совместим с ESXi 5.5, 6.0, 6.5 и 6.7.
Для создания ZIP-файла Offline Bundle нажмите Run...
По аналогии с VIB файлами вы можете использовать пакет Offline Bundle для создания кастомизированных ISO образов ESXi . Для этого можно использовать скрипт ESXi-Customizer-PS.
Подобно файлам VIB, Offline Bundle также можно использовать для установки программного пакета в работающую систему ESXi с помощью следующих команд в оболочке ESXi (или через удаленный интерфейс командной строки vSphere):
esxcli software acceptance set --level=CommunitySupported
esxcli software vib install -d /path/to/zip-file
Лицензирование
- ESXi Community Packaging Tools распространяются под лицензией GNU GPL version 3 (см. COPYING.txt).
- В инструментах используются несколько утилит, находящихся в свободном доступе, но частично под разными лицензиями (см. tools\README.txt).
Ссылки
https://www.v-front.de/p/esxi-community-packaging-tools.html