VMware vSphere 5 AutoDeploy on Cisco UCS – Part 2: Image Profiles

After completing Part 1, we have DHCP configured to assign a reserved IP address to the Cisco B200 M2 blades when they boot to the vNIC. Now the goal is to create the image that the auto-deploy hosts will use..

The image building procedure sounds complicated, but once you break it down, it’s not too bad. First, we need to inventory the components (VIBs) that’ll be needed on the hosts; above-and-beyond the base install. In our case, we needed the HA agent, the Cisco Nexus 1000V VEM and the EMC NAS Plugin for VAAI. The HA driver will be downloaded from the vCenter Server, but you’ll have to download the licensed ZIP files from Cisco and EMC for the others.

In addition to the enhancements, we’ll need the VMware ESXi 5.0 offline bundle, “VMware-ESXi-5.0.0-469512-depot.zip” from the licensed product downloads area of VMware.com. This is essentially a “starter-kit” for image builder, it contains the default packages for ESXi 5.0.


  1. Copy these files into C:\depot
    • VMware-ESXi-5.0.0-469512-depot.zip
    • VEM500-201108271.zip
    • EMCNasPlugin-1.0-10.zip
  2. Launch PowerCLI

On to the PowerCLI code:

Register the offline bundle as a Software Depot (aka source)

Add-EsxSoftwareDepot “C:\depot\VMware-ESXi-5.0.0-469512-depot.zip”

Connect powerCLI to your vCenter server (replace x.x.x.x with your vCenter server’s name or IP)

Connect-VIServer –server x.x.x.x

List the image profiles contained in the offline bundle, ESXi-5.0.0-469512-no-tools and ESXi-5.0.0-469512-standard. We’re going to work with “standard”.


Register vCenter Server depot for HA agent

Add-EsxSoftwareDepot -DepotUrl http://X.X.X.X:80/vSphere-HA-depot

Register depot for updates to ESXi

Add-EsxSoftwareDepot -DepotUrl https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml

Register depot for Nexus 1000V VEM and VAAI plugin for VNX NAS

add-esxsoftwaredepot c:\depot\VEM500-201108271.zip
add-esxsoftwaredepot c:\depot\EMCNasPlugin-1.0-10.zip

List the image profiles, except now it will list several more versions. For each, there is a “no-tools” and a “standard”. Make a note of the newest “standard” image (or the one you want to use)


Clones the standard “ESXi-5.0.0-20111204001” image profile to a new image profile with the name “ESXi-HA-VEM-VAAI-20111204001”

New-EsxImageProfile –cloneprofile ESXi-5.0.0-20111204001-standard –name “ESXi-HA-VEM-VAAI-20111204001”

Add the HA agent (vmware-fdm) to our custom image profile

Add-EsxSoftwarePackage -ImageProfile “ESXi-HA-VEM-VAAI-20111204001”-SoftwarePackage vmware-fdm

Check for the VEM package “cisco-vem-v131-esx”

get-esxsoftwarepackage -Name cisco*

Add the Nexus 1000V VEM to our custom image profile

add-esxsoftwarepackage -Imageprofile “ESXi-HA-VEM-VAAI-20111204001” -SoftwarePackage cisco-vem-v131-esx

Check for EMC VAAI Plugin for NAS “EMCNasPlugin”

get-esxsoftwarepackage -Name emc*

Add the EMC VAAI plugin for NAS to our custom image profile

add-esxsoftwarepackage -Imageprofile “ESXi-HA-VEM-VAAI-20111204001” -SoftwarePackage EMCNasPlugin

Export our custom image to a big zip file – we’ll use this to apply future updates

export-esximageprofile -imageprofile “ESXi-HA-VEM-VAAI-20111204001” -Filepath “C:\depot\ESXi-HA-VEM-VAAI-20111204001.zip” –ExporttoBundle

Deploy Rules
OK, now we have a nice image profile, let’s assign it to a deployment rule. To get Auto-Deploy working, we’ll need a good Host Profile and details from a reference host. So, we’ll apply our initial image profile to our reference host, then use our reference host to create a host profile and update the RuleSetCompliance

Create a new temporary rule with our image profile and an IP range; then add it to the active ruleset.

New-DeployRule –Name “TempRule” –Item “ESXi-HA-VEM-VAAI-20111204001 –Pattern “ipv4=”
Add-DeployRule -DeployRule “TempRule”

At this point, we booted up the blade that would become the reference host. I knew that DHCP would give it the IP that we identified in the temporary deployment rule. BTW – Auto-deploy is not really fast, it takes 10 minutes or so from power-on to visible in vCenter.

Repair Ruleset
You may have noticed a warning about a component that is not auto-deploy ready;  we have to fix that.

In the following code, “referencehost.mydomain.com” is the FQDN of my reference host. This procedure will modify the ruleset to ignore the warning on the affected VIB.

Test-DeployRuleSetCompliance referencehost.mydomain.com
$tr = Test-DeployRuleSetCompliance referencehost.mydomain.com
Repair-DeployRuleSetCompliance $tr
Test-DeployRuleSetCompliance referencehost.mydomain.com

After this completes, reboot the reference host and add it to your Nexus 1000V DVS.

Part 3 (coming soon!) will cover the host profile and final updates to the deployment rules.


VMware vSphere 5 AutoDeploy on Cisco UCS – Part 1: DHCP

First, many thanks to Gabe and Duncan for their great Auto-Deploy guides that got me started.  Found here and here.  Their information answered a lot of questions, but left me with even more questions about how to implement it in my environment.

My goal is to demonstrate how to implement and configure vSphere Auto-deploy in a near-production environment that uses vSphere 5, Cisco UCS, EMC storage, Nexus 1000V and vShield Edge.

The first hurdle I ran into was trying to make DHCP cooperate.  I’m using vShield Edge for DHCP in some of the protected networks, but the Cisco 2900-series router is doing DHCP for the network where the vSphere Management addresses live.  In IOS for DHCP, you can assign a manual address in a pool via the “hardware-address” OR the “client-identifier” parameter.  Looks like “client-identifier” is used by DHCP, whereas “hardware-address” is used by BOOTP.  When booting, the blade first draws information via BOOTP, but after acquiring the details from TFTP, it changes its personality and sends another DHCP DISCOVER request.

Here’s how we got this working in our environment:

  • Identify permanent addresses for your hosts  ( in this case)
  • Identify a temporary address for each host ( is this case)
  • Make sure those addresses are not excluded

    ip dhcp excluded-address
    ip dhcp excluded-address
    ip dhcp excluded-address
    ip dhcp excluded-address

  • Create your “main” pool if it doesn’t already exist

    ip dhcp pool mgmt
    lease 0 8
    update arp

  • Create Pool for your permanent host address, make sure to use the “client-identifier” parameter

    ip dhcp pool AutoDeploy23
    client-identifier 0100.25b5.0000.2d
    bootfile undionly.kpxe.vmw-hardwired
    client-name AutoDeploy23
    option 66 ip
    option 67 ascii undionly.kpxe.vmw-hardwired
    lease 0 8
    update arp

  • Create Pool for the temporary host address, assigned first by BOOTP and dropped after PXE boot

    ip dhcp pool AutoDeploy123
    hardware-address 0025.b500.002d
    bootfile undionly.kpxe.vmw-hardwired
    client-name AutoDeploy23
    option 66 ip
    option 67 ascii undionly.kpxe.vmw-hardwired
    lease 0 8

Continue on to Part 2, covering the creation and assignment of the image profile

Components Diagram

Here’s a diagram I put together listing the arrangement of the equipment in use in our Mobile VCE

Mobile VCE - Components
Mobile VCE - Components

As you can see, there’s a lot of technology crammed into these boxes.  Together they make up one regular-size rack (40 RU).  The boxes altogether draw about 24KW at idle, starting them up draws a lot more of course.