The Deployment Bunny

OS Deployment, Virtualization, Microsoft based Infrastructure…

  • Archives

  • Meta

Archive for April, 2011

Quick and Dirty – Testing customsettings.ini variables in MDT

Posted by Mikael Nystrom on April 27, 2011

One of the fastest “Quick n Dirty” you can do to test the behavior of customsetting.ini when you are on the deployment server is to create a batch file and store that in the scripts folder that will run the gather process and display the results. To be honest, make a good test bed is my number one priority, time is the enemy and testing just eats up the time. Here is how-to:

Download and install Trace 32 (you should have this already, but in case you don’t have, get it)

Create a batch file called testini.cmd that looks like this

del C:\MININT\SMSOSD\OSDLOGS\VARIABLES.DAT /q
cscript ZTIGather.wsf /inifile:..\Control\CustomSettings.ini
“C:\Program Files (x86)\ConfigMgr 2007 Toolkit V2\Trace32.exe” c:\minint\smsosd\osdlogs\bdd.log

Now, just run it from an elevated command prompt in the scripts folder of your deployment root and you are done. If you don’t have trace 32 in hand, use notepad.exe instead, that is second “best”

If you need more logging and use notepad instead (I don’t recommend that)  just add /debug:true on ztigather.wsf part and replace trace32.exe with notepad, like this

del C:\MININT\SMSOSD\OSDLOGS\VARIABLES.DAT /q
cscript ZTIGather.wsf /Debug:True /inifile:..\Control\CustomSettings.ini
notepad.exe c:\minint\smsosd\osdlogs\bdd.log

/mike

Posted in Deployment | Tagged: | 4 Comments »

Modifying the LiteTouch Wizard in MDT 2010 – Sample 1

Posted by Mikael Nystrom on April 27, 2011

When I was working for a customer a while ago, they asked me if it was possible to modify the Wizard in MDT and of course I answered yes, since that is possible. They wanted many things and in this post I will cover the easy stuff. and that is reading from the existing environment and present it on screen during the deployment…

The requirements was pretty easy, something like…

-Could you help us to create a extra page in the wizard that will help the local tech to be able to see and verify that everything is correct when he is deploying the machine?

-You mean something like this?

image

-Yes, that would be ok, thank you.

Adding a Deployment Runtime Environment page in the Wizard

So, maybe you would like to do this on your own, and here is how you do:

  • Download the Wizard Editor from http://mdtwizardeditor.codeplex.com/
  • Create a backup of “DeployWiz_Definition_ENU.xml” (it is in the scripts folder in your deployment root folder)
  • Open \scripts\DeployWiz_Definition_ENU.xml using the Wizard Editor
    (It should look similar to this)

image

  • Select Deployroot
  • Click Add (left side in wizard, far down)
  • Create a new “Pane ID” and call it “RunTimeInfo”
    (It should look something like this)

image

Now when you have created the new Wizard page (with the amazing context of “Hello world”) you need to “fill” that page with some good information, and here it is:

-HTML-

<h1>Deployment Environment Information</h1>

<table border=”1″ cellspacing=”1″ cellpadding=”1″ width=”650″ align=”center”>
<tbody>
      <tr>
        <td width=”300″ align=”right”><em>IP Address (ipaddress001)</em></td>
        <td><input style=”width: 340px” name=ipaddress001 readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>Default Gateway (DefaultGateway001)</em></td>
        <td><input style=”width: 340px” name=DefaultGateway001 readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>Deployment root (Deployroot)</em></td>
        <td><input style=”width: 340px” name=Deployroot readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>WDS Server (WDSSERVER)</em></td>
        <td><input style=”width: 340px” name=WDSSERVER readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>Log Share (SLShare)</em></td>
        <td><input style=”width: 340px” name=SLShare readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>Log Share (SLShareDynamicLogging)</em></td>
        <td><input style=”width: 340px” name=SLShareDynamicLogging readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>Backup Share (BackupShare)</em></td>
        <td><input style=”width: 340px” name=BackupShare readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>Userdata Share (UDShare)</em></td>
        <td><input style=”width: 340px” name=UDShare readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>WSUS Server (WSUSServer)</em></td>
        <td><input style=”width: 340px” name=WSUSServer readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>BuildAccount (UserDomain\UserID)</em></td>
        <td><input style=”width: 110px” name=UserDomain readonly/>\
        <input style=”width: 110px” name=UserID readonly/></td>
      </tr>
      <tr>
        <td width=”300″ align=”right”><em>JoinAccount(DomainAdminDomain\DomainAdmin)</em></td>
        <td><input style=”width: 110px” name=DomainAdminDomain readonly/>\
        <input style=”width: 110px” name=DomainAdmin readonly/></td>
      </tr>
</tbody>
</table>

-HTML-

Copy the text between the two –HTML- parts in the text and paste it into the HTML tab in the Wizard, it should look like this when your are done.

image

And if you click the Preview tab you will see this:

image

There is one thing left and that is “condition”, we would like to set condition for this page, so what about this as a condition?

ucase(Property(“SkipRunTimeInfo”)) <> “YES”

It basically means that if SkipRunTimeInfo is set to YES, it should not show and that should work just fine for us.

Switch over to the “Settings” tab and paste that in and your are almost done

If you would like to test the wizard, just go ahead and use the” Wizard – Test” menu in top of the editor.

The only thing you need to do is to add the new property we added, the “SkipRunTimeInfo to the Properties in the Rules file (customsettings.ini)
Like this

image

And now you are done.

You might ask your self if it is possible to get other kind of information into the wizard pane, and yes, that can be done. This time it was the easy part, just reading the information from the environment we already have and just show it, next time, it will be a bit more fun..

Mike

Posted in Deployment | Tagged: | 7 Comments »

Remote Server Administration Tools for Windows 7 with Service Pack 1 (SP1) or RSAT SP1 for short

Posted by Mikael Nystrom on April 8, 2011

Finally it is here and ready for download.


Remote Server Administration Tools for Windows® 7 with SP1 enables IT administrators to manage roles and features that are installed on computers that are running Windows Server® 2008 R2, Windows Server® 2008, or Windows Server® 2003, from a remote computer that is running Windows 7 or Windows 7 with SP1.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3a+MicrosoftDownloadCenter+$Microsoft+Download+Center$

Posted in Uncategorized | Leave a Comment »

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

Posted in Deployment, Windows Server 2008 R2 | Tagged: , | 18 Comments »

Microsoft iSCSI Software Target 3.3 for Windows Server 2008 R2 available for public download

Posted by Mikael Nystrom on April 4, 2011

YES !!!

Microsoft is releasing the iSCSI Target Server and that means that you now can use a Windows Server 2008 R2 x64 OS as a SAN by adding this download, it is so cool!!!.

The Microsoft iSCSI Software Target 3.3 provides storage (disks) over a TCP/IP network. It turns a computer running Windows Server into a storage device which provides shared block storage. You can use Microsoft iSCSI Software Target 3.3 to perform a variety of storage-related tasks, including the following:

  • Provide shared storage for Hyper-V to enable high availability and live migration
  • Consolidate storage for multiple application servers (i.e. Microsoft SQL Server or Hyper-V)
  • Provide shared storage for applications hosted on a Windows failover cluster
  • Enable diskless computers to boot remotely from a single operating system image using iSCSI

The Microsoft iSCSI Software Target 3.3 is an economical solution suited for a development or test environment and a small, medium, or branch office production environment. It enables storage consolidation and sharing on a Windows Server by implementing the iSCSI (Internet Small Computer Systems Interface) protocol, which supports SCSI-block access to a storage device over a TCP/IP network. For details on how to manage iSCSI targets, see http://technet.microsoft.com/en-us/library/gg232606(WS.10).aspx.

Read more here and get the download

Blog: http://blogs.technet.com/b/josebda/archive/2011/04/04/microsoft-iscsi-software-target-3-3-for-windows-server-2008-r2-available-for-public-download.aspx

TechNet: http://technet.microsoft.com/en-us/library/gg232597.aspx

Download: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=45105d7f-8c6c-4666-a305-c8189062a0d0

Posted in Hyper-V, iSCSI, Windows Server 2008 R2 | Tagged: , , | 1 Comment »

System Center Virtual Machine Manager 2008 R2 SP1

Posted by Mikael Nystrom on April 3, 2011

Yes, it is finally here and the major “thing” is that it fully supports Dynamic Memory and RemoteFX (included in SP1 for Windows Server 2008 R2). In most cases you download the Service Pack, apply it and you are done, but that is NOT the case this time. What you do is to download the complete ISO image and install that. There are reasons, one being that once you have installed SP1 you cannot go back to RTM, since the database has been modified and Microsoft would like to be sure that you have the complete package (the ISO) so that you can perform a disaster recovery operation. Well, ok, but still I think it would have been better if they did release it as a SP trough WSUS, but that is me. Anyway, here are the steps:

Download System Center Virtual Machine Manager 2008 R2 SP1 (read more about different locations and different licensed version here)

  • Perform a backup of the SCVMM Database (just to be safe)
  • Mount the ISO on the server
  • Install SCVMM 2008 R2 SP1 (It will detect that you are running RTM and upgrade itself)
  • Stop the SCVMM service
  • Uninstall the Console
  • Install the SP1 Console
  • Start the SCVMM Service
  • Done

To be honest, not sure that you need to uninstall/re-install the console, but if I did not do that I could not use/see the new features. When I did, it worked like a charm.

List of features in SCVMM 2008 R2 SP1

  • Dynamic Memory
  • RemoteFX
  • Live migration
  • Clustered Shared Volume (CSV) support that enables multiple Highly Available Virtual Machines (HAVM) per LUN.
  • Hot add of storage
  • Support for VMware vSphere 4 (VMware VI3 feature parity only)
  • SAN Migration into and out of clustered hosts
  • Processor flexibility
  • Network optimization
  • Quick storage migration
  • Maintenance mode for hosts
  • Support for third party cluster file system, Sanbolic Melio FS
  • Support for third party storage class resource, Veritas Storage Foundation for Windows
  • Expanded support for iSCSI SANs
  • Support for VMware port groups for virtual switches
  • Support for Virtual Machine permissions assigned in Hyper-V
  • Dynamic policy based load balancing

Read more:

/mike

Posted in Hyper-V, SCVMM | Tagged: , | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 2,347 other followers