Monday, March 16, 2009

Cluster Config Powershell from Alex Pavlovsky

if ($args.count -ne 2){

write-host "usage: installcluster.ps1 10.0.0.1(virtual ip of the cluster) PRBMSGHUB001(file share wittness name)"

break}

else{

$clusterVname = ((hostname).substring(0,(hostname).Length - 1)+'v') -replace "PRB","PRC"

$clusterBname = (hostname).substring(0,(hostname).Length - 1)+'b'

$creds = get-credential

$ClusterSvc = $creds.Username

$ClusterPwd = $creds.Password

$clusterVIPAddress = $args[0]

$fswName = $args[1]

write-host""

write-host "Cluster Configuration Parameters:"

write-host "=================================================="

write-host ""

write-host "Virtual cluster name: " $clusterVName

write-host "Cluster IP address: " $clusterVIPAddress

write-host "Cluster service account: " $clusterSvc

write-host "=================================================="

write-host ""

write-host "The cluster configuration will execute in 10 seconds. To cancel, press Ctrl-C"

start-sleep -s 10

Cluster.exe /cluster:$clustervname /create /node:(hostname) /ipaddress:$clusterVIPAddress /user:$ClusterSvc /min

Cluster.exe $clusterVName res "Majority Node Set" /create /group:`"Cluster Group`" /type:`"Majority Node Set`"

Cluster.exe $clusterVName res `"Majority Node Set`" /online

Cluster.exe $clusterVName /quorum:`"Majority Node Set`"

Cluster.exe $clusterVName res `"Local Quorum`" /offline

Cluster.exe $clusterVName res `"Local Quorum`" /delete

write-host "================================================="

write-host "Completed the cluster configuration for node A."

write-host ""

write-host "WARNING: Node $clusterbname will be added in 10 seconds. To cancel, press Ctrl+C"

start-sleep -s 10

cluster.exe $clusterVName /add:$clusterbname /min

write-host "================================================="

write-host "Completed the cluster configuration for node B."

write-host "Creating File Share Witness share:"

new-item \\$fswname\c$\MNS_FSW_$clusterVName -type directory

$Class = "Win32_Share"

$Method = "Create"

$MC = [WmiClass]"\\$FSWName\ROOT\CIMV2:$Class"

$InParams = $mc.psbase.GetMethodParameters($Method)

$InParams.Access = $null

$InParams.Description = "$clusterVName file share witness"

$InParams.MaximumAllowed = 10

$InParams.Name = [string]"MNS_FSW_$clusterVname"

$InParams.Password = $null

$InParams.Path = "C:\MNS_FSW_$clusterVname"

$InParams.Type = [uint32]0

$result = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)

if ($result.ReturnValue -ne 0) {

write-host "Failed to create MNS Share"

}

else

{

write-host "Created MNS share succesfully. Please set appropriate security ACLs on the share (by default, everyone has full access = VERY BAD)."

cluster.exe $clusterVName res `"Majority Node Set`" /priv MNSFIleShare=\\$fswName\MNS_FSW_$clusterVName

cluster.exe $clusterVName group `"Cluster Group`" /move

cluster.exe $clusterVName res `"Majority Node Set`" /priv

cluster.exe $clustervName /priv HeartBeatLostInterfaceTicks=10:DWORD

cluster.exe $clustervName /priv HeartBeatLostNodeTicks=10:DWORD

cluster.exe $clusterVname network "Heartbeat" /prop Role=1

cluster.exe $clusterVname /setnetpri:"Heartbeat","Team"

write-host "Please reboot each cluster node to complete configuration."

write-host "It is also necessary to change share permissions on the MNS FSW"

}

}

No comments:

Post a Comment