ESXi : créer un vib manuellement sous linux

De Linux Server Wiki
Sauter à la navigation Sauter à la recherche


Commencez par extraire les fichiers que vous voulez placer dans le VIB (dans notre cas, smartmontools issu de http://builds.smartmontools.org/) :

tar -xf smartmontools-6.6-0-20170808-r4433.linux-x86_64-static.tar.gz

Un vib contient les fichiers dans une architecture de dossier qui seront extrait à la racine de ESXi. Nous allons placer le binaire smartctl dans /opt/smartmontools/

mkdir -p opt/smartmontools

Dans cet exemple, nous allons uniquement garder le binaire smartctl.

mv usr/local/sbin/smartctl opt/smartmontools/
rm -rf usr/

Créez une archive nommée smartctl contenant notre fichier et son architecture de dossier, puis stocke sa somme SHA1 :

tar -cf smartctl opt/
TAR_SHA1=$(sha1sum smartctl | cut -d" " -f1)

Gzipez notre archive fraîchement créé, stocker son SHA256 et sa taille en bytes :

gzip smartctl
mv smartctl.gz smartctl
GZIP_SHA256=$(sha256sum smartctl | cut -d" " -f1)
GZIP_SIZE=$(du --bytes smartctl | cut -f1)

Le fichier suivant contient normalement une signature, mais peut être vide dans le cas d'un paquet VIB community

touch sig.pkcs7

Créez un fichier descriptor.xml qui contient les informations de notre paquet et ses fichiers. Pensez à modifier la version.

cat << EOF > descriptor.xml
<vib version="5.0"><type>bootbank</type><name>smartctl</name><version>6.6-4433</version><vendor>smartmontools</vendor><summary>smartctl: SMART Tool</summary><description>Tool to display S.M.A.R.T data</description><release-date>2017-08-11T10:00:59.000000+00:00</release-date><urls/><relationships><depends></depends><conflicts/><replaces/><provides/><compatibleWith/></relationships><software-tags></software-tags><system-requires><maintenance-mode>false</maintenance-mode></system-requires><file-list><file>opt/smartmontools/smartctl</file></file-list><acceptance-level>community</acceptance-level><live-install-allowed>true</live-install-allowed><live-remove-allowed>true</live-remove-allowed><cimom-restart>false</cimom-restart><stateless-ready>true</stateless-ready><overlay>false</overlay><payloads><payload name="smartctl" type="tgz" size="666"><checksum checksum-type="sha-256">256000256</checksum><checksum checksum-type="sha-1" verify-process="gunzip">10001</checksum></payload></payloads></vib>
EOF

Ces trois sed vont placer les informations que nous avons recueillis plus tôt au bon endroit dans le fichier descriptor :

sed -i s/666/$GZIP_SIZE/g descriptor.xml
sed -i s/256000256/$GZIP_SHA256/g descriptor.xml
sed -i s/10001/$TAR_SHA1/g descriptor.xml

Enfin, créez le paquet VIB. Notez que le fichier descriptor.xml doit toujours être le premier du VIB.

ar -r smartctl-6.6-4433.x86_64.vib descriptor.xml sig.pkcs7 smartctl