The Deployment Bunny

OS Deployment, Virtualization, Microsoft based Infrastructure…

  • Archives

  • Meta

Windows Server 2008 R2 Deployment using MDT 2010 – Part II – “Doing the HP Stuff”

Posted by Mikael Nystrom on April 5, 2011

Recently I have done a bunch of “Deploying Windows Server 2008 R2” sessions, one at MMS 2011 on Server Deployment using MDT 2010 and one at Geek Week and at both occasions  I was asked to give the details on how I do deploy HP servers. Now, this is not a complete guide from A-Z, but it should give you something that covers most of the configuration needed and also you should be able to see the “pattern” on how to do this. If you do have some special requests, just send an email and I’ll do one more posting on the subject.

The goal for this post is too see how you could automate installation of drivers, support pack, firmware update on HP BL/DL/ML series of hardware (Yes, I’ll create another post on how to do it on Dell servers later…)

Support Pack

Ok, so lets assume we have a HP BL 465C G5 and we would like to install Windows Server 2008 R2 x64 SP1. We would also like to have the firmware updated and the support pack installed. I mean, that sound reasonable, right? Yes, it can be done, in fact I do this all the time, in fact so often that I hardly can remember how to do it manually anymore. If you would like to play with all the other switches that hpsum.exe can do, look for a file called CLIHELP.txt, it is in the same folder where you unpack the stuff.

Let’s begin with the support pack, current version is 8.60.

  • Download HP PSP 8.60 from: http://h20000.www2.hp.com/bizsupport/TechSupport/DriverDownload.jsp?lang=sv&cc=se&prodNameId=3716247&taskId=135&prodTypeId=18964&prodSeriesId=3716246&lang=sv&cc=se
  • Uncheck the “this files is download from internet stuff” on the properties page of the file, otherwise you risk to have that “safety” thing stuck on the files at that might get you to small issues later on.
  • Create a folder for the PSP, call it “INSTALL – HP Support Pack 8.60” and in that folder create a folder called “source”. The Source folder is where we store everything that will be installed, the root folder is for storing scripts that works as wrappers to install the application. This very basic principal applies to EVERY application you are installing using MDT.
  • In the root folder you create Install-HP_PSP.WSF that works as the wrapper and it should look like this:

<job id=”Install-HP_PSP”>
<script language=”VBScript” src=”..\..\Scripts\ZTIUtility.vbs”/>
<script language=”VBScript”>
‘//—————————————————————————-
‘// Solution: INSTALL
‘// Purpose: Install-HP_PSP
‘// Usage: cscript Install-HP_PSP.wsf [/debug:true]
‘// Version: 1.1 – 15 Mar 2011 – Mikael Nystrom
‘// This script is provided “AS IS” with no warranties.
‘//—————————————————————————-
‘// Global constant and variable declarations
‘//—————————————————————————-

Option Explicit

Dim iRetVal

‘//—————————————————————————-
‘// End declarations
‘//—————————————————————————-

‘//—————————————————————————-
‘// Main routine
‘//—————————————————————————-

On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0

‘//—————————————————————————
‘//
‘// Function: ZTIProcess()
‘//
‘// Input: None
‘//
‘// Return: Success – 0
‘// Failure – non-zero
‘//
‘// Purpose: Perform main ZTI processing
‘//
‘//—————————————————————————
Function ZTIProcess()

    oLogging.CreateEntry “Install-HP_PSP: Starting Install”, LogTypeInfo
    oUtility.RunWithHeartbeat(“source\hpsum.exe /silent /use_snmp”)
    oLogging.CreateEntry “Install-HP_PSP: Finished Install”, LogTypeInfo   
   
End Function

</script>
</job>


As you can see, the active part of the install is “hpsum.exe /silent /use_snmp”. There is a bunch of other settings you can use, but these are the ones I use.

Firmware Packages

We also need the firmware, it is possible to combine it so that patches and firmware installs at the same time, or even possible to let them find new firmware updates using the web, but this is the way I like it, a bit boring but it works…

  • Download HP Firmware ISO from: http://h20000.www2.hp.com/bizsupport/TechSupport/DriverDownload.jsp?lang=en&cc=us&prodNameId=1844068&taskId=135&prodTypeId=18964&prodSeriesId=1844067&lang=en&cc=us
  • Uncheck the “this files is download from internet stuff” on the properties page of the file, otherwise you risk to have that “safety” thing stuck on the files at that might get you to small issues later on.
  • Create a folder for the PSP, call it “INSTALL – HP Firmware 9.20” and in that folder create a folder called “source”. The Source folder is where we store everything that will be installed, the root folder is for storing scripts that works as wrappers to install the application.
  • Now, the trick is that when you extract the ZIP file that you download, it contains an ISO image, you need to open that and then extract the content from the ISO and save that in the Source folder
  • In the root folder you create Install-HP_FW.WSF that works as the wrapper and it should look like this:

<job id=”Install-HP_FW”>
<script language=”VBScript” src=”..\..\Scripts\ZTIUtility.vbs”/>
<script language=”VBScript”>
‘//—————————————————————————-
‘// Solution: INSTALL
‘// Purpose: Install-HP_FW
‘// Usage: cscript Install-HP_FW.wsf [/debug:true]
‘// Version: 1.0 – 4 Apr 2011 – Mikael Nystrom
‘// This script is provided “AS IS” with no warranties

‘//—————————————————————————-
‘// Global constant and variable declarations
‘//—————————————————————————-

Option Explicit

Dim iRetVal

‘//—————————————————————————-
‘// End declarations
‘//—————————————————————————-

‘//—————————————————————————-
‘// Main routine
‘//—————————————————————————-

On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0

‘//—————————————————————————
‘//
‘// Function: ZTIProcess()
‘//
‘// Input: None
‘//
‘// Return: Success – 0
‘// Failure – non-zero
‘//
‘// Purpose: Perform main ZTI processing
‘//
‘//—————————————————————————
Function ZTIProcess()

    oLogging.CreateEntry “Install-HP_Firmware: Starting Install”, LogTypeInfo
    oUtility.RunWithHeartbeat(“Source\hp\swpackages\hpsum.exe /silent”)
    oLogging.CreateEntry “Install-HP_Firmware: Finished Install”, LogTypeInfo   
   
End Function

</script>
</job>


SNMP Configuration

We also need to fix SNMP (in most cases), so we need to install it and if you want SNMP to work correctly for the Support Pack you also need to configure it. And that of course is done by a script.

Create a folder called “CONFIG – SNMP”

In that folder create a file called “CONFIG-SNMP_Services.wsf” that looks like this:


<job id=”CONFIG-SNMP_Services”>
<script language=”VBScript” src=”..\..\Scripts\ZTIUtility.vbs”/>
<script language=”VBScript”>

‘//—————————————————————————-
‘// Solution: Hydration
‘// Purpose: Used to configure SNMP
‘// Usage: cscript CONFIG-SNMP_Services.wsf [/debug:true]
‘// Version: 1.0 – 3 Apr 2011 – Mikael Nystrom
‘//
‘// This script is provided “AS IS” with no warranties, confers no rights and
‘// is not supported at all.
‘//
‘//—————————————————————————-

‘//—————————————————————————-
‘// Global constant and variable declarations
‘//—————————————————————————-

Option Explicit

Dim iRetVal

‘//—————————————————————————-
‘// End declarations
‘//—————————————————————————-

‘//—————————————————————————-
‘// Main routine
‘//—————————————————————————-

On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0

‘//—————————————————————————
‘//
‘// Function: ZTIProcess()
‘//
‘// Input: None
‘//
‘// Return: Success – 0
‘// Failure – non-zero
‘//
‘// Purpose: Perform main ZTI processing
‘//
‘//—————————————————————————
Function ZTIProcess()

 

    oLogging.CreateEntry “CONFIG-SNMP_Services Adding Community string Public to Registry”, LogTypeInfo   
    oShell.RegWrite “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities\Public”, 8, “REG_DWORD”

    oLogging.CreateEntry “CONFIG-SNMP_Services Stopping SNMP Service”, LogTypeInfo   
    oUtility.RunWithHeartbeat(“NET.exe STOP SNMP /y”)
   
    oLogging.CreateEntry “CONFIG-SNMP_Services Waiting 1000”, LogTypeInfo   
    wScript.Sleep 1000

    oLogging.CreateEntry “CONFIG-SNMP_Services Starting SNMP Service”, LogTypeInfo   
    oUtility.RunWithHeartbeat(“NET.exe START SNMP /y”)

    oLogging.CreateEntry “CONFIG-SNMP_Services Finished SNMP Configuration”, LogTypeInfo   
   
End Function

</script>
</job>


Modifying the Task Sequence

There are many ways of dosing this, you can either do it in the database or customsettings.ini, but in most cases I have found it easier to do this in the task sequence.

You need to create a standard server task sequence with Windows Server 2008 R2 x64 and when you have done that you need to open it up and directly under “State Restore – Tattoo”, you add a new tree structure that looks like this:

image

As you can see I have added a new group called Hardware and under that folder you have HP. You can also see that the condition for running the content of that folder is that “Make” must be HP, same goes for the next step. The group called ProLiant BL 465c G5 has a similar filter, it is only processed when the “Model” is Proliant BL 465c G5. So you just add a folder structure based on make/model. You can get the Make by running “wmic csproduct get name” from the command prompt on the machine and if you need “Make” it is “wmic csproduct get vendor”

Adding the Application and Settings

No, using deployment workbench you browse down to applications and in there I normally create two folders, one is called INSTALL (Contains real applications) and CONFIG (contains only configuration scripts).

  • Create a application with source files, pointing to “CONFIG – SNMP Services” folder, give the application the same name as the folder and set the run command to “cscript.exe CONFIG-SNMP_Services.wsf”

 

  • Create a application with source files, pointing to “INSTALL – HP PSP 8.60” folder give the application the same name as the folder and set the run command to “cscript.exe Install-HP_PSP.WSF”
  • Create a Bundle called “HP Support Pack”
  • Modify the bundle “HP Support Pack” to be dependent of INSTALL – HP PSP 8.60

 

  • Create a application with source files, pointing to “INSTALL – HP Firmware 9.20” folder give the application the same name as the folder and set the run command to “cscript.exe Install-HP_FW.WSF”
  • Create a Bundle called “HP Firmware Update”
  • Modify the bundle “HP Firmware Update” to be dependent of INSTALL – HP Firmware 9.20.

This way, you will only use the bundles whenever you reference these installations and that makes it so much easier if you update the support pack, the you just add a new support pack, flip inside the bundle, test and if it does not work as expected you can keep the old one while you are investigating “why” it fails. Again, there are at least 10 other ways of doing this, I just think it is easy and convenient.

Add tasks to the task sequence

Now it is time to do the last part of this, modifying the task sequence so it will do all the steps for you.

Open the task sequence and add the following tasks under the group for your server (in my case, the BL 465c G5)

  • Install SNMP = Roles and Features with SNMP checked
  • CONFIG – SNMP Services = Install Application – CONFIG – SNMP Services
  • INSTALL – HP Support pack = The HP Support pack Bundle
  • INSTALL – HP Firmware = The Firmware bundle

It should look something like this

image

So, as you can see it is not that hard to do it, should be able to figure out on how to do other similar tasks and for other vendor/models

/mike

18 Responses to “Windows Server 2008 R2 Deployment using MDT 2010 – Part II – “Doing the HP Stuff””

  1. Al White said

    Great article Mike! Have you used any of the OEM packs to configure RAID during the deployment of the server OS(s)? If so, I would really like to see some of the task sequences that you have used!

    • Yes, I have, and that will one of the follow ups, including NIC Teaming and Enable/Disable NIC’s based on Mac, also to switch a certian Nic into a Hyper-V Nic. I hope I will have time to finish up that in a couple of days…

      • Eric said

        Fantastic article! Really helped my in a pinch. Any chance we will see the followup articles? I am especially interested in the NIC Teaming.

        Thanks Again!!!

      • George Kuff said

        Really great article!! I’ve just bough Deployment Fundamentals V3, and since i’m reading all your blogs!

        I’ve search for a follow up to this, and found nothing. ( Raid config and nic teaming) Then I search HP for a bone or something and the white paper ‘Deployment of HP ProLiant Servers Using System Center Configuration Manager 2007’ seems to be gone forever! Since they are Selling an integration kit with Insight Control suite for System Center… i guess i’m dead ( didnt found an offline version of it either )

        So i’m left with getting it done with code from the “new” HP Scripting Toolkit for Windows and Linux …

        Thank for all the great stuff!

      • Egmond said

        I’m also very interested in the follow up articel how to do it with Dell servers, but also about configuring RAID and NIC teaming with MDT 2012/3.

        Thanks for all the sharing :)

      • I need a Dell server and Dell refuse to give me one, sorry to say but they dont get it :-(
        RAID for HP is comming VERY SOON!!!

  2. Per Hertzberg said

    Great article!
    I would also like to see how you manage the raid-config and nic-teaming.
    Kepp up the great work!
    //Pelle

  3. Ralph said

    Thank you for your efforts and sharing with the community.

    I was wondering why the need for a VBS wrapper and why not use, say, the bp000898.cmd from the v8.70 HP PSP DVD ?

    • Thats easy. :-)
      Logging and Troubleshooting. Here is an example, PS require SNMP, so I could check that SNMP is running before installing the PSP, that way, it will always work instead of the “It kind of works, but sometimes…). Right I’m working on getting “all” Microsoft Server agents installed and guess, they all have a bunch of dependices, so installing manually works great since it is taking sometime to do stuff manully, when it is automated it tends to be a bit to “fast” :-) so now I need to make sure that everything is up and running before installing all thoose things…

  4. Steve said

    Thanks for the article, Mikael! I followed everything in this guide but there seems to be a problem when it gets to the task sequence, specifically the CONFIG – SNMP Services, Install – HP Supportpack, and Install – HP Firmware. After the deployment completed a yellow box popped up and summarized the results with 3 errors for the aforementioned tasks, each which said, “Unexpected return code: 1.” SNMP installed fine so I know the problem was related to the VBS wrappers. I tried to run the wrappers manually by opening a command prompt and typing, “cscript Install-HP_PSP.WSF” and get the following error message – “E:\DeploymentShare\Applications\INSTALL – HP Support Pack 8.70\install-hp_psp.wsf(2, 10) Windows Script Host: The value for the attribute is not valid : language.” Do you know what’s wrong?

    • Yes, I do know why that happens. A default action in a task sequence will check the exit code from the application, if it is 0 or 3010 it is ok (0 means ok, 3010 means ok, but i need to reboot)
      The issue is that exit codes are not really “defined” at all, so HP uses 0,1,2 for sucess. You need to modify the respons verfication from 0 3010 to 0 1 2 instead

    • Most likley it is a ” error.
      Copy and paste the script and make sure you have a normal “

      • Steve said

        Thanks, turns out it was the apostrophes and quotation marks that were messing it up. Had to replace them all with their traditional counterparts. However, now I have a different problem. The SNMP service installs and configures fine, but the task sequence gets stuck when it’s installing the HP Support Pack. It goes on infinitely and never completes unless I manually terminate it. This is a snippet from the smsts.log file:

  5. Steve said

  6. Steve said

    For some reason it’s not letting me paste the log file.

  7. Steve said

    I finally figured it out. It was the dashes in the folders names that were screwing it up. Had to re-type them and that fixed the issue. Just a friendly reminder to everyone that you should always be careful when copying and pasting code from web pages since certain characters like quotes and dashes can get messed up.

    Thanks again for the great guide, Mikael.

  8. David Bloom said

    Hey Mikael,

    Love your stuff, thanks a million. Any chance we could see that post on how to do this with Dell servers? I have followed this posting and have the HPSUM stuff setup and it works great.

    I also have Dell servers and have been struggling to find the Dell equivalent of the HPSUM tool.

    • The Problem is Dell, HP gives me servers when I ask for it, Dell has refused to do so, even If I have asked them multiple times for this. I do not know why, but If I could have 1-3 Dell servers, I would be happy to provide the same kind of information for Dell servers too. Sorry :-(

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: