Powercli. Клонирование и создание ВМ из шаблона.
Продолжение разговора, начатого в предыдущей статье, посвященной созданию ВМ с помощью PowerCLI.
Клонирование виртуальной машины
Есть много причин для клонирования виртуальной машины. Пожалуй, самым популярным является создание тестового экземпляра рабочей виртуальной машины. Клоны могут служить формой резервного копирования. Мы даже видели клоны, реализованные как недорогое решение DR. Независимо от вашей причины, PowerCLI может удовлетворить вас. Например, давайте клонируем тот SQL Server, который мы только что создали. Мы клонируем его в тестовый кластер и назовем его SQL01_Clone:
1 2 3 4 5 6 7 8 9 10 11 |
# 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).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |
Клоны в сочетании со спецификациями настройки ограничены только вашим воображением. Они не используются так часто, как шаблоны, но могут служить той же цели.
Развертывание из шаблона
Шаблоны являются предпочтительным средством массового развертывания виртуальных машин. Использование шаблонов также является самым простым из трех. В листинге 5.4 развертывается виртуальная машина с использованием шаблона.
1 2 3 4 5 6 7 8 9 10 11 |
# 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 развертывает виртуальную машину со спецификациями настройки.
Листинг 5.5. Развертывание виртуальной машины с использованием шаблона и спецификаций настройки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 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. Развертывание с использованием шаблона, спецификаций настройки и проверок на наличие достаточного свободного места
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# 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.