« Back to Microsoft Discussions

Modify Host Firmware Policies

Combination View Flat View Tree View
Threads [ Previous | Next ]
Modify Host Firmware Policies
powershell ucsm firmware service profile
Answer
6/1/11 7:35 PM
Hey Josh!  Great to see the Powershell cmdlets evolve and its nice to have a space to post questions to the community regarding Microsoft-specific products and environments.
 
First off, is there a set command to modify firmware policies to apply firmware updates to a subset of servers or profiles via Powershell?  Also, a way to update and activate firmware on blades that are not associated with profiles.
 
This is one of the more time-consuming tasks through the GUI and it would be great to get it automated.

Hi Sean,

I am just curious why you are wanting to update the blade firmware without having a service profile attached. It is my understanding that the blades can't be used without a service profile attached to it so why go update it if it is going to get updated when you attach a service profile anyway? I am not saying there is not a use case for this I just don't see it and I am curious to learn how other people are using the UCS.

Thanks,
Kevin Murphy

Hey Kevin,

Normally, we would push the firmware updates through a host package when the profile is created and associated with a blade. We have been doing it this way for a year now.

The catalyst for the change is that we have an open TAC case regarding a critical thermal fault on one of our chassis. This chassis is populated with B200 M1 blades but none of them are associated with profiles. One of the troubleshooting steps TAC has requested is to match our blade firmware to the rest of the infrastructure (unassociated blades on 1.3.1m; UCSM on 1.4.2b). Doubtful that it will make any difference in the fault but I'm willing to try it.

In addition, it might save us a few crucial minutes when we bring up a new profile.

We've got a cmdlet planned, but that one's not in there yet. It will let you set the FW policy of an SP via PowerShell. You'll also eventually be able to manage those policies via PowerShell as well, but that's a later release as well. Currently, there isn't a way to set the FW levels of a blade w/o an associated SP. The UCS world makes the FW a property of the SP -- not the blade. So we need an SP in place to 'host' the FW.

j.

See I knew there would be a justification for it. That is a bit of a pickle but I would just go ahead and create a blank SP and assign it to the blades and power them on so they get the same firmware package you are using in the rest of the organization. I don't know how you have things laid out in your UCS but this or some variation should work although it assumes you already have a firmware package that you manually created but at least you don't have to push it out by handle to each blade. Also, I am unsure if the UCS pushes out the entire firmware even if no vNICs are apart of the service profile. If it doesn't push out that update because of the lacking components you would need to run the add-vnic or add-vhba commandlets on the Service Profile template. This should create the templates, associate them and power down the blades. Then all you have to do is go back and mass power them off and remove the profiles and template or just do script that too!

 1
 2# Reference previously created and configured Host Firmware Policy
 3$HostFirmwarePolicy = "1.4.2b"
 4
 5# Create Service Profile Template and configure it to point to the Host Firmware Policy from above variable
 6$SPtemp = Add-SPTemplate -Org "root/POD60" -SPTemplateName FirmwareTemplate
 7Invoke-XmlCommand -XMLStringList "<configConfMo inHierarchical=""false""><inConfig><lsServer dn=""$($SPtemp.dn)"" hostFwPolicyName=""$HostFirmwarePolicy"" /></inConfig></configConfMo>"
 8
 9# Get all blades not associated to a Service Profile
10$unassociatedblades = Get-Blade | where {$_.association -match "none"}
11
12# Foreach blade create a Service Profile and assign it to a blade
13foreach ($blade in $unassociatedblades)
14{
15    $SP = Add-SPFromTemplate -Org "root/POD60" -SPName "FirmwareTemp" -SPTemplateName "FirmwareTemplate" -TemplateOrg "root/POD60"
16    Invoke-XmlCommand -XMLStringList "<configConfMo inHierarchical=""false""><inConfig><lsServer dn=""$($SP.dn)""><lsBinding pnDn=""sys/chassis-$($blade.chassis)/blade-$($blade.blade)"" /></lsServer></inConfig></configConfMo>"
17}

Awesome! Figured it might be something that would leverage the profile to quickly apply to package and then unassociate. I'll get to work trying to modify this as necessary to our environment but excellent foundation to build on.

Thanks guys!