понедельник, 11 января 2016 г.

VMware PowerCLI: создание стенда из однородных виртуальных машин на основе технологии Linked Clone

Если необходимо организовать нагрузочное тестирование с участием множества однородных виртуальных хостов, можно воспользоваться технологией от VMware под названием Linked Clone. Суть её заключается в том, что все клонируемые машины работают используя исходный родительский жесткий диск, а собственными дисками у них являются лишь разницы от реплики. Главный плюс технологии - экономия дискового пространства тома VMFS, минус - необходимость слежения за свободным местом на томе, поскольку тонкие диски постепенно вырастают по мере их использования.
Чтобы быстро развернуть такую мини лабораторию, воспользуйтесь следующим PowerCLI скриптом:

########## Change here for your infrastructure
# vCenter Server Name or Ip
$vCenter="vc.mydomain.local"
# vCenter User Name
$vCenterUser="user"
# vCenter User Password
$vCenterUserPassword="yourpassword"
# Source VM for cloning
$SourceName = "SOURCE-VM"
# Names for clones of source VM for example MYVM-01,MYVM-02,MYVM-03 etc.
$ClonePrefix = "MYVM-"
# Specify number of VMs you want to create
$vm_count = "5"
##############################################

# Connect to vCenter
Write-Host "Connecting to vCenter Server $vCenter" -foreground green
Connect-viserver $vCenter -user $vCenterUser -password $vCenterUserPassword -WarningAction 0
$vm = Get-VM $SourceName

# Create temporary snapshot of source VM for clone
Write-Host "Creating new snapshot for clone ..." -foreground green
$sName = Get-Random
$cloneSnap = $vm | New-Snapshot -Name "$sName"

# Get managed object view
$vmView = $vm | Get-View

# Get folder managed object reference
$cloneFolder = $vmView.parent

# Build clone specification
$cloneSpec = New-Object Vmware.Vim.VirtualMachineCloneSpec
$cloneSpec.Snapshot = $vmView.Snapshot.CurrentSnapshot

# Make linked disk specification
$cloneSpec.Location = New-Object Vmware.Vim.VirtualMachineRelocateSpec
$cloneSpec.Location.DiskMoveType = [Vmware.Vim.VirtualMachineRelocateDiskMoveOptions]::createNewChildDiskBacking

# Cycle to create clones of source VM
1..$vm_count | foreach {
$y="{0:D2}" -f $_
$CloneName = $ClonePrefix + $y
Write-Host "Creating VM $cloneName ..." -foreground green

# Create clone
$vmView.CloneVM( $cloneFolder, $cloneName, $cloneSpec )

# Power on new VM
Get-VM $cloneName | Start-VM -RunAsync
}
# End of cycle

# Remove temporary snapshot of source VM
Write-Host "Removing snapshot for clone ..." -foreground green
Remove-Snapshot $cloneSnap -Confirm:$false

# End
Write-Host "Done!" -foreground green

Перед запуском не забудьте поменять данные в начале скрипта на актуальные.

Комментариев нет:

Отправить комментарий