There has been some well deserved buzz about VMware Auto Deploy and I think Auto Deploy will be a key feature for building VMware based clouds. Auto Deploy particularity shines on UCS and I have some cool ideas on how to use the two products together. But I wanted to start with a quick post on using Auto Deploy with UCS.
This is not a primer on Auto Deploy and I’m going to expect that you know how Auto Deploy works, at least at a high level. Instead I plan to cover some specific topics pertinent to Auto Deploy on UCS.
If you need to come up to speed (or need a refresher) on Auto Deploy I would suggest checking out:
- How to run ESXi stateless with vSphere Auto Deploy at Gabe’s Virtual World
- Auto Deploy Cheat Sheet at Yellow Bricks
- Understanding vSphere Auto Deploy VMware KB Article
oemstring Pattern Matching
UCS information is made available to Auto Deploy via the oemstring attributes.
If you have watched a system’s console while it is being provisioned using Auto Deploy then you will recognize the above screen shot. Here you can see there are several oemstrings that we can use to match the right Auto Deploy rule.
I’ve looked around and I have not found any documentation on the oemstrings provided by UCS, but from the above I can deduce that they are the following.
$SPI – “Service Profile Instance” i.e. The name of the service profile assigned that that specific blade (or rack server I presume).
$SPT – “Service Profile Template” i.e. The name of the template used to create that specific service profile.
$SYS - “System” i.e. The name of the physical blade associated with the service profile.
This information allows for the creation of complex Auto Deploy rules without the hassle of dealing with MAC/IP addresses, Serial Numbers, etc.
Say for example that I have a Production and a Dev cluster and I wanted to be able to add systems to either cluster by just provisioning a UCS blade from a service profile template.
Using the UCS specific oemstring attributes makes adding Auto Deploy rules for this scenario pretty simple.
New-DeployRule -Name "Prod-AutoDeploy" -Item "ESXi-5.0","HostProfile-ESX-Prod","Prod-Cluster" -Pattern 'oemstring=$SPT:ESX-Prod-Template' New-DeployRule -Name "Dev-AutoDeploy" -Item "ESXi-5.0","HostProfile-ESX-Dev","Dev-Cluster" -Pattern 'oemstring=$SPT:ESX-Dev-Template' Add-DeployRule Prod-AutoDeploy Add-DeployRule Dev-AutoDeploy
The above deploy rules match for the name of the service profile templates using the oemstring=$SPT attribute. Note that single quotes are used around the pattern match so that PowerShell ignores the $ included in the string.
The above oemstring attributes are only available if the server is running with UCS 2.0 firmware. Also make sure that you are using the latest firmware as there is a bug in the earlier firmware that causes an issues with gPXE and DHCP (at least if you are running a windows DHCP server).
Auto Deploy and VM-FEX
If you plan to use Auto Deploy and VM-FEX then you will need to includ the VEM Software package as part of the ESXi boot image. This is done in a similar way to adding the FDM for HA to the boot image.
First you will need to add the software depot with the package. For VM-FEX you’ll just add the URL for you UCSM instance.
Then you add the cisco-vem-v132-esx software package to your image. In the example below I have an existing image profile called ESXi-5.0-FEX which I add the image to.
Add-EsxSoftwarePackage -ImageProfile "ESXi-5.0-FEX" -SoftwarePackage cisco-vem-v132-esx
Then just create a deploy rule using the image profile that includes the VIM software package. In the example below the rule only match servers that have been provisioned using the Service Profile Template ESX-AD-VMFEX. This service profile template has the configuration required to support VM-FEX. See Deploying Cisco UCS VM-FEX for vSphere for more info.
New-DeployRule -name "ESX-VMFEX" -item "ESXi-5.0-FEX","HP-VM-FEX","Cluster-VM-FEX" -Pattern 'oemstring=$SPT:ESX-AD-VMFEX' Add-DeployRule ESX-VMFEX