Creating a new offline bundle from a VIB file

Creating VUM Friendly ESXi Images for Home Lab Supermicro Servers

All of the Supermicro server builds that I’ve created for the lab (Sandy Bridge with X9SCM here and Haswell with X10SLH/X10SLL here) require a few drivers that aren’t part of the standard ESXi installation media. Normally I just bake them into a custom image using VMware’s Image Builder. Even though I already published Utilizing vSphere ESXi Image Builder with Partner Software Depots well over a year ago, I wondered if anyone else is looking for a shortcut to do the same.

I asked Twitter:

Alrighty then. This post will cover the location of various 3rd party software packages required to build your own ESXi ISOs for use with X9SCM, X10SLH, and X10SLL Supermicro boards.

3rd Party Offline Bundles and VIBs

Start by downloading the required offline bundles or VIB (vSphere Installation Bundle) files for the image. Offline bundles are preferred, but some drivers can only be found as a VIB. I’ve compiled a table of the needed drivers below:

[table]Motherboard;Controller 1;VIB Details;Controller 2;VIB Details

X9SCM;Intel 82579LM;Daisuke’s custom net-e1000e for Intel I217/I218/82579LM/82574L VIB file;Intel 82574L;VMware Native Support

X10SLH;Intel i210AT;VMware Offline Bundle Driver Download;N/A;N/A

X10SLL;Intel i210AT;VMware Offline Bundle Driver Download;Intel i217LM;Daisuke’s custom net-e1000e for Intel I217/I218/82579LM/82574L VIB file[/table]

If you downloaded Daisuke’s custom VIB file (or any other VIB files, for that matter), continue to the next step. Otherwise, you can skip it.

Convert the VIB to an Offline Bundle

The raw VIB file won’t cut it for Image Builder, and using ESXi-Customizer (an awesome tool which supports using a VIB file) disables the ability to use VMware Update Manager (VUM). Thus, we need to properly convert the VIB file to an offline bundle, which works with Image Builder and VUM.

To do this, we’ll need the vib2zip.cmd program to do the conversion. Navigate to the VMware Front Experience website and snag the ESXi Community Packaging Tools. At the time of this post, the latest version is 2.2.1. Extract the contents of the ESXi5-CPT-v2.2.1 file and dig around for the vib2zip.cmd application.

The contents within yield solid gold
The contents within yield solid gold

Run vib2zip.cmd to launch a wizard that will walk you through creating an offline bundle from a VIB. In the example below, I’ve taken Daisuke’s net-e1000e VIB and put it through VIB2ZIP. I loaded the details by clicking the Load from VIB button.

[symple_box color=”green” text_align=”left” width=”100%” float=”none”]
Note: I suggest you create an empty folder and place your VIB file into it, then point the wizard to that empty folder. This avoids any complications of trying to package multiple VIB files at once.
[/symple_box]

Creating a new offline bundle from a VIB file
Creating a new offline bundle from a VIB file

Click Run! and bask in the glow of your newly created offline bundle ZIP file.

A new offline bundle is born
A new offline bundle is born

Build the Custom ISO with Image Builder

The remainder of the custom image process requires PowerCLI code and access to the ESXi 5.X software depot. I downloaded the ESXi 5.5 offline bundle from VMware as shown below:

The offline bundle contains unicorn tears
The offline bundle contains unicorn tears

The code for my Image Builder script is below. You’ll need to change the paths for your particular environment. It’s configured in four distinct function calls called Step1, Step2, Step3, and Step4. I know, kinda boring, right? However, I find it useful for me since I often want to run just one particular segment at a time.

[sourcecode language=”powershell”]
function Step1 {
## Add base ESXi software depot
Add-EsxSoftwareDepot -DepotUrl "X:\Apps\VMware Image Builder\esxi55-depot\VMware-ESXi-5.5.0-1331820-depot.zip"
}

function Step2 {
## New image profile based on the tools image profile
New-Variable -Scope "Global" -Name esxiprofile
$esxiprofile = Get-EsxImageProfile -Name "*standard*"

## Create the custom wahlnetwork profile
New-EsxImageProfile -CloneProfile $esxiprofile.Name -Name "$($esxiprofile.Name)-wahlnetwork" -Vendor "Wahl Network" -AcceptanceLevel:CommunitySupported

## Update profile name with the custom wahlnetwork created image profile
$esxiprofile = Get-EsxImageProfile -Name "*wahlnetwork*"
}

function Step3 {
## Add 3rd party software

## e1000e driver for Intel 82579LM NIC
Add-EsxSoftwareDepot -DepotUrl "X:\Apps\VMware Image Builder\esxi55-depot\net-e1001e-2.3.2-offline_bundle.zip"
Add-EsxSoftwarePackage -ImageProfile $esxiprofile -SoftwarePackage "net-e1000e"
}

function Step4 {
## Export the wahlnetwork image as an ISO
Export-EsxImageProfile -ImageProfile $esxiprofile -ExportToIso -FilePath "X:\Apps\VMware Image Builder\esxi55-depot\55wahlnetwork2.iso" -NoSignatureCheck

## Export the wahlnetwork image as a ZIP (for future work)
Export-EsxImageProfile -ImageProfile $esxiprofile -ExportToBundle -FilePath "X:\Apps\VMware Image Builder\esxi55-depot\55wahlnetwork2.zip" -NoSignatureCheck
}
Step1
Step2
Step3
Step4
[/sourcecode]

Final Results

You can now use the ISO to do a fresh new installation of ESXi, or import the resulting ISO into VUM and patch your hosts to the latest version. 🙂

Kinda nice to have your own Vendor name, eh?
Kinda nice to have your own Vendor name, eh?