jueves, 25 de noviembre de 2010

Scripting - 300 vms

Hola.

Hago público el scripting que desarrolló mi compañero Michele y que utilizamos para crear las 300 máquinas virtuales:

El primer paso fué copiar los 300 discos virtuales:

$VMVHDSource = "C:\ClusterStorage\Volume1\W2K8R2-STD-ES-NODO2.vhd"

$numarray = (1..300)
foreach ($x in $numarray)
{

$VMName = "00000" + $x.tostring()
$VMName = "MS" + $VMName.Substring($VMName.Length-3,3)
$VMPath = "C:\ClusterStorage\Volume1\folder\" + $VMName.tostring()
$VMVHD = $VMPath.tostring() + "\" + $VMName.tostring() + ".vhd"

new-item -path "C:\ClusterStorage\Volume1\folder" -name $VMName -type directory
copy-item $VMVHDSource -destination $VMVHD

}


Y mientras tanto, desplegamos la plantilla:

# Load Snap-Ins
Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager

# Connect to the VMM server.
$VMMServer = Get-VMMServer "srvmm.dominio.local"

# Define the variables.
$JobGroupID = [Guid]::NewGuid().ToString()
$Template = Get-Template where {$_.Name -eq "W2K8R2STDESP-NODO2"}
$VMHost = Get-VMHost where {$_.ComputerName -eq "nodo2"}
$NetworkName = "vswitch1"

$numarray = (1..300)
foreach ($x in $numarray)
{

$VMName = "00000" + $x.tostring()
$VMName = "MS" + $VMName.Substring($VMName.Length-3,3)
$VMPath = "C:\ClusterStorage\Volume1\folder\" + $VMName.tostring()
$VMVHD = $VMPath.tostring() + "\" + $VMName.tostring() + ".vhd"

# Use the Move-VirtualHardDisk cmdlet to point to the local virtual hard disk on the host.
Move-VirtualHardDisk -IDE -BUS 0 -LUN 0 -Path $VMVHD -JobGroup $JobGroupID

# Use the New-VM cmdlet with the –UseLocalVirtualHardDisks parameter to create the
# virtual machine and to specify that the local virtual hard disk file should be used.

New-VirtualNetworkAdapter -JobGroup $JobGroupID -VirtualNetwork $NetworkName -Synthetic

New-VM -Name $VMName -Path $VMPath -Template $Template -VMHost $VMHost -ComputerName $VMName -JobGroup $JobGroupID -UseLocalVirtualHardDisks -RunAsynchronously -JobVariable "NewVMJob" -SkipInstallVirtualizationGuestServices


}

Nota: Hay ciertas buenas prácticas a tener en cuenta en un servidor con tantas máquinas virtuales, nosotros tenemos uno con 200 y otro con 102, ya que tenemos un dhcp y alguna cosilla más, una de las cosas más importantes es que el de las 200 están en un nodo de un clúster y es importante que ese nodo sea el propietario del CSV ya que como sabéis de no ser así, gran parte del tráfico iría por la tarjeta del latido al dueño del CSV.

Saludos.