ESXi : créer un vib manuellement sous linux
Commencez par extraire les fichiers que vous voulez placer dans le VIB :
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