Powercli. Клонирование и создание ВМ из шаблона.

Продолжение разговора, начатого в предыдущей статье, посвященной созданию ВМ с помощью PowerCLI.

Клонирование виртуальной машины

Есть много причин для клонирования виртуальной машины. Пожалуй, самым популярным является создание тестового экземпляра рабочей виртуальной машины. Клоны могут служить формой резервного копирования. Мы даже видели клоны, реализованные как недорогое решение DR. Независимо от вашей причины, PowerCLI может удовлетворить вас. Например, давайте клонируем тот SQL Server, который мы только что создали. Мы клонируем его в тестовый кластер и назовем его SQL01_Clone:

# Get source VM Object

$SourceVM = Get-VM -Name SQL01

#Get a host within the Test cluster

$VMHost = Get-Cluster Test | Get-VMHost | Get-Random 

#Clone SQL01 to SQL01_Clone

$VM = New-VM -Name SQL01_Clone -VM $SourceVM -VMHost $VMHost

 

Это так же просто, как и операция клонирования; это и хорошо, и плохо. С хорошей стороны, у нас есть точная копия SQL01. С другой стороны, у нас есть точная копия SQL01. Вы должны быть очень осторожны с этой новой виртуальной машиной. Простое включение может вызвать конфликты с рабочей виртуальной машиной SQL01. Вы можете преодолеть это, настроив клон с помощью задачи OSCustomization.

Давайте сделаем это с виртуальной машиной SQL, которую мы только что создали. SQL01 содержит критически важную базу данных, и мы хотим иметь возможность работать над процедурой обновления. Чтобы выполнить эту задачу, давайте начнем с клонирования SQL01. На этот раз мы применим задачу кастомизации OSC с именем SQL_TEST. Мы подготовим нашу виртуальную машину с помощью Sysprep и за один раз изменим имя хоста и IP-адрес. Чтобы добиться успеха, нам также нужно изменить сеть виртуальной машины на VLAN с поддержкой протокола динамической настройки хоста (DHCP).

# Get source VM Object

$SourceVM = Get-VM -Name ‘SQL01’

#Get a host within the Test cluster

$VMHost = Get-Cluster ‘Test’ | Get-VMHost | Get-Random

# Get the OS CustomizationSpec

$OSCustomizationSpec = Get-OSCustomizationSpec -Name ‘SQL_TEST’

# Clone SQL01 to SQL01_clone

$VM = New-VM -Name ‘SQL01_Clone’ -VM $SourceVM -VMHost $VMHost -OSCustomizationSpec $OSCustomizationSpec

# Change the Network

Get-NetworkAdapter -VM $VM | Set-NetworkAdapter -NetworkName ‘dvSwitch0_VLAN100’ -Confirm:$false

# PowerOn our clone, triggering the CustomizationSpec
 
Start-VM -VM $VM

 

Читайте также:  Vmware проброс usb в виртуальную машину.

Клоны в сочетании со спецификациями настройки ограничены только вашим воображением. Они не используются так часто, как шаблоны, но могут служить той же цели.

Развертывание из шаблона

Шаблоны являются предпочтительным средством массового развертывания виртуальных машин. Использование шаблонов также является самым простым из трех. В листинге 5.4 развертывается виртуальная машина с использованием шаблона.

# Get source Template

$Template = Get-Template -Name ‘REHL5.5’

# Get a host within the development cluster

$VMHost = Get-Cluster ‘dev01’ | Get-VMHost | Get-Random

# Deploy our new VM

New-VM -Template $Template -Name ‘REHL_01’ -VMHost $VMHost

 

При правильном шаблоне код в листинге 5.4 может создать виртуальную машину с нулевым касанием. Это потребует от вас выполнения всей подготовки заранее. Часто шаблоны соединяются со спецификациями настройки для выполнения этой задачи после конфигурации. Код в листинге 5.5 развертывает виртуальную машину со спецификациями настройки.

Читайте также:  Copy paste vmware. Включаем буфер обмена.

Листинг 5.5. Развертывание виртуальной машины с использованием шаблона и спецификаций настройки

 

# Get source Template

$Template = Get-Template -Name ‘REHL5.5’

# Get a host within the development cluster

$VMHost = Get-Cluster ‘dev01’ | Get-VMHost | Get-Random

# Get the OS CustomizationSpec

$Spec = Get-OSCustomizationSpec -Name ‘REHL5.5’

# Deploy our new VM

New-VM -Template $Template -Name ‘REHL_01’ -VMHost $VMHost -OSCustomizationSpec $Spec

 

Хотя код в листинге 5.5 завершен, он оставляет некоторые вещи на волю случая. Ничто не мешает вам собрать все это вместе и полностью автоматизировать развертывание виртуальной машины. В листинге 5.6 показано, как проверить, что в целевом хранилище данных достаточно свободного места перед началом развертывания.

Листинг 5.6. Развертывание с использованием шаблона, спецификаций настройки и проверок на наличие достаточного свободного места

# Get source Template

$Template = Get-Template -Name ‘REHL5.5’

# Get the OS CustomizationSpec

$OSCustomizationSpec = Get-OSCustomizationSpec -Name ‘REHL5.5’

# Get a host within the development cluster

$VMHost = Get-Cluster ‘dev01’ | Get-VMHost | Get-Random

# Determine the capacity requirements of this VM
 
$CapacityKB = Get-HardDisk -Template $Template |

Select-Object -ExpandProperty CapacityKB |

Measure-Object -Sum | Select-Object -ExpandProperty Sum

# Find a datastore with enough room

$Datastore = Get-Datastore -VMHost $VMHost | ?{($_.FreeSpaceMB * 1mb) -gt (($CapacityKB * 1kb) * 1.1 )} | Select-Object -first 1

#  Deploy our Virtual Machine

$VM = New-VM -Name ‘REHL_01’ -Template $Template -VMHost $VMHost -Datastore $Datastore -OSCustomizationSpec $OSCustomizationSpec

 

 

Вот такими способами можно развернуть виртуальную машину из шаблона или склонировать при помощи PowerCLI.

Читайте про: Массовое развертывание виртуальных машин VMware.

Поделиться ссылкой:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.