The two scripts below are a quick solution to pushing out an identical (except for IP and hostname) configuration to a large number of Dell DRAC boards. They’re not the most efficient and they were written for a specific scenario, but, they should be easy enough to customize. There are two scripts:

  • RemoteDracConfig.vbs – This one will take a config template, customize it for a host, and apply it via psexec
  • RemoteDracConfigLoop.vbs – This one will read an input CSV and call RemoteDracConfig.vbs for each line

I seperated the scripts specifically so that the first one could easily be used as part of a build process without having to generate an input file for it. To get started, you’ll need to configure a reference DRAC and export its configuration. Once you’ve done the configuration work, run racadm getconfig –f baseline.txt on the reference machine. You’ll next need to replace the machine specific info with tokens. I support two:

  • %drac-ip% – this one will get replaced with the IP to use for the DRAC
  • %drac-hostname% – this one will get replaced with the hostname to use for the DRAC
Note: This script assumes that the drac-hostname will actually be the server’s hostname with something appended on the end. For example all my DRACs I’m using server-drac.domain.com as the FQDN, so, the relevant lines in my DRAC config look like this:

cfgDNSRacName=%drac-hostname%-drac
cfgDNSDomainName=domain.com

If you want to do something different, you’ll need to modify the script.

The baseline config also will not have any passwords in it. You’ll need to scroll down to the cfgUserAdmin section and uncomment the # cfgUserAdminPassword=******** (Write-Only) line and replace it with cfgUserAdminPassword=YourPassword. You’ll also need a copy of psexec from Sysinternals. The path to that is hardcoded at the top of RemoteDracConfig.vbs. You’ll need to change this.

Here is RemoteDracConfig.vbs:

'==========================================================================
' NAME: Remote Drac Config
'
' AUTHOR: Brian Desmond, brian@briandesmond.com
' DATE  : 11/25/2009
'
' COMMENT: 
'    cscript RemoteDracConfig.vbs <targetServer> <targetDracIp>
'==========================================================================

Option Explicit

Const BASE_CONFIG = "baseline.txt"
Const PSEXEC_PATH = "z:\tools\sysinternals\psexec.exe"

Dim shl
Set shl = WScript.CreateObject("WScript.Shell")

Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Dim targetServerName
targetServerName = WScript.Arguments(0)

Dim targetDracIp
targetDracIp = WScript.Arguments(1)

Dim baseConfig
Set baseConfig = fso.OpenTextFile(BASE_CONFIG)

Dim baseConfigStr
baseConfigStr = baseConfig.ReadAll

baseConfig.Close()

baseConfigStr = Replace(baseConfigStr, "%drac-hostname%", targetServerName)
baseConfigStr = Replace(baseConfigStr, "%drac-ip%", targetDracIp)

If fso.FolderExists("\\" & targetServerName & "\c$\temp") = False Then 
    fso.CreateFolder "\\" & targetServerName & "\c$\temp"
End If 

Dim configOutput
Set configOutput = fso.CreateTextFile("\\" & targetServerName & "\c$\temp\dracConfig.txt", True)

configOutput.write baseConfigStr
configOutput.Close

shl.Run PSEXEC_PATH & " \\"& targetServerName & " racadm config -f c:\temp\dracconfig.txt -p", 1, True 
shl.Run PSEXEC_PATH & " \\"& targetServerName & " racadm racreset", 1, True 

fso.DeleteFile "\\" & targetServerName & "\c$\temp\dracConfig.txt", True 

Here is RemoteDracConfigLoop.vbs:

'==========================================================================
' NAME: Drac Config Loop
'
' AUTHOR: Brian Desmond, brian@briandesmond.com
' DATE  : 11/25/2009
'
' COMMENT: 
'
'==========================================================================

' Input File Format
'    DracIp,ServerNbtName
' Example:
'    10.10.10.102,srv1
'    10.10.10.104,srv2

Option Explicit

Const INPUT_FILE = "input.txt"

Dim shl
Set shl = WScript.CreateObject("WScript.Shell")

Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Dim inputFile
Set inputFile = fso.OpenTextFile(INPUT_FILE)

Dim line
Dim tokens
While Not inputFile.AtEndOfStream
    line = inputFile.ReadLine
    tokens = Split(line, ",")
    WScript.Echo tokens(1)
    
    shl.Run "cscript RemoteDracConfig.vbs " & tokens(1) & " " & tokens(0), 1, True 
Wend 

inputFile.Close()

I tested this against several Windows Server 2008 x64 and Windows Server 2008 R2 machines equipped with DRAC5 boards and it worked well. YMMV of course. The racadm tool ships with the Dell OpenManage Server Administrator components so you’ll need those installed on each machine in order for this to work.