Когда вам нужно протестировать новые или стандартизованные экземпляры серверов, Hyper-V предоставляет среду для быстрого и эффективного создания тестовых конфигураций, из-за чего Hyper-V стал популярной средой для тестовых лабораторий. Но есть один нюанс: виртуальные машины (ВМ) приходится создавать регулярно.
Если вам нужен простой способ построения образов Hyper-V, вполне могут подойти сценарии Windows PowerShell. Богатство вариантов настройки Windows PowerShell и гибкая структура ее команд делают ее подходящей практически для любой среды. В связке со стратегией автоматической или необслуживаемой установки это позволяет создавать практически любые компьютерные конфигурации.
Конфигурирование Windows PowerShell
Стратегия подразумевает, что вы работаете с системой Windows Server 2008 R2, которая удовлетворяет требованиям к роли Hyper-V. Подготовка системы для работы сценариев Hyper-V выполняется в несколько шагов.
- Установите роль Hyper-V и Windows PowerShell. Это можно сделать средствами Server Manager или утилиты командной строки ServerManagerCmd.exe (ServerManagerCmd.exe –install Hyper-V и ServerManagerCmd.exe –install PowerShell).
- Сконфигурируйте Windows PowerShell для поддержки этих сценариев. По умолчанию эта функция отключена. Это можно сделать с помощью командлета Set-ExecutionPolicy (Set-ExecutionPolicyRemoteSigned).
- Загрузите и установите модуль Windows PowerShell Hyper-V. Этот модуль необходим для доступа к командлетам, предназначенным для работы с Windows PowerShell. Из библиотеки CodePlex PowerShell Management Library for Hyper-V загрузите последний стабильный выпуск, не предназначенный для разработки. Позаботьтесь об удалении атрибута блокировки со сжатых файлов перед их установкой. Это позволит выполнить сценарии установки без необходимости предоставления цифровых сертификатов. Если вы выполняете установку ядра сервера, разблокируйте и распакуйте файл модуля на другом компьютере перед копированием на сервер файлов установки. В противном случае вам понадобятся дополнительные средства для выполнения этих операций на сервере (утилита stream.exe из состава SysinternalsSuite и 7-Zip).
- Откройте командную строку Windows PowerShell с административными полномочиями, включите поддержку сценариев Hyper-V путем импорта вновь установленного модуля (Import-Module HyperV). Если вы получите сообщение об ошибке, проверьте, не пропустили ли вы предыдущий шаг. Если вы собираетесь регулярно использовать Windows PowerShell для управления средой Hyper-V, в файл профиля Windows PowerShell надо добавить командлеты Import-Module и Set-ExecutionPolicy. Это позволит использовать командлеты без необходимости каждый раз конфигурировать сервер. Чтобы с командлетами не возникало проблем, нужно всегда использовать командую сроку Windows PowerShell с административными полномочиями.
Чтобы убедиться, что командлеты успешно установлены и правильно работают, используйте командлет Get-Command для просмотра всех доступных команд (Get-Command –Module Hyperv). Как и в других модулях к каждому командлету прилагается полезная информация о его функциях и примеры его использования (Get-Help New-VM –Detailed и Get-Help New-VM –Examples). Дополнительную информацию см. на сайте CodePlex.
Конфигурирование сценария Windows PowerShell для Hyper-V
Подготовив среду Windows PowerShell, можно переходить к созданию новых ВМ. Не забудьте, что следующие команды надо выполнять в контексте административной учетной записи. В сценарии командлеты Hyper-V используются для создания новых ВМ на основе пяти переменных (рис. 1), которые вы предоставили во время установки. У каждой переменно есть значение по умолчанию, которое используется, если не указано другое значение.
Рис. 1. Описания переменных, определяемых при создании виртуальных машин Hyper-V
$SRV1 | Имя ВМ |
$SRAM | Объем памяти, выделяемой ВМ |
$SRV1VHD | Размер виртуального жесткого диска ВМ |
$VMLOC | Место, где нужно создать виртуальный жесткий диск ВМ |
$Network1 | Подключение ВМ к сети |
После определения этих переменных сценарий New-Image.ps1 (рис. 2) конфигурирует виртуальную сеть Hyper-V, используя значение, заданное в переменной $Network1. Перед определением новой частной сети средствами New-VMPrivateSwitch удалите ее, используя Remove-VMSwitch, независимо существует ли она или нет. Это гарантирует, что вы не определите дублирующиеся сети с тем же именем.
Рис. 2. Сценарий New-Image.ps1, который создает новые виртуальные машины
# This script creates a new Hyper-V machine with hard drive, memory & network resources configured.
# Variables
$SRV1 = Read-Host "Enter the Virtual Machine name (Press [Enter] to choose Server01): "
if ($SRV1 -eq ""){$SRV1="Server01"} ; if ($SRV1 -eq $NULL){$SRV1="Server01"}
$SRAM = Read-Host "Enter the size of the Virtual Machine Memory (Press [Enter] to choose 512MB): "
if ($SRAM -eq ""){$SRAM=512MB} ; if ($SRAM -eq $NULL){$SRAM=512MB}
$SRV1VHD = Read-Host "Enter the size of the Virtual Machine Hard Drive (Press [Enter] to choose 40GB): "
if ($SRV1VHD -eq ""){$SRV1VHD=40GB} ; if ($SRV1VHD -eq $NULL){$SRV1VHD=40GB}
$VMLOC = Read-Host "Enter the location of the Virtual Machine file (Press [Enter] to choose C:\HyperV): "
if ($VMLOC -eq ""){$VMLOC="C:\HyperV"} ; if ($VMLOC -eq $NULL){$VMLOC="C:\HyperV"}
$Network1 = Read-Host "Enter the name of the Virtual Machine Network (Press [Enter] to choose Network1): "
if ($Network1 -eq ""){$Network1="Network1"} ; if ($Network1 -eq $NULL){$Network1="Network1"}
# Configure Hyper-V Virtual Network
remove-vmswitch $Network1 -force -erroractionsilentlycontinue
new-vmprivateswitch $Network1
# Create Virtual Machines
MD $VMLoc -erroractionsilentlycontinue
new-vm $SRV1 -path $VMLoc
new-vhd -vhdpaths $VMLoc\$SRV1 -size $SRV1VHD
add-vmdisk -vm $SRV1 -controllerid 0 -lun 0 -path $VMLoc\$SRV1
get-vm $SRV1 | add-vmdrive -controllerid 1 -lun 0 -dvd
get-vm $SRV1 | set-vmmemory -memory $SRAM
get-vm $SRV1 | add-vmnic -virtualswitch $Network1
Финальный этап процесса, на котором собственно созадется ВМ, проста. Создайте место на диске для виртуального жесткого диска. Новую ВМ создают и конфигурируют шесть командлетов.
Команда New-VM определяет машину и ее местоположение. New-VHD создает файл виртуального жесткого диска (VHD), а Add-VMDisk назначает его ВМ. Add-VMDrive добавляет на машину DVD-привод, Set-VMMemory определяет объем памяти, а Add-VMNIC конфигурирует сетевую карту.
На сконфигурированной ВМ можно установить нужную ОС. Средствами Windows PowerShell можно также создать сценарий управления установкой ОС. Windows PowerShell позволяет автоматизировать выполнение этих задач, за счет чего этот процесс ускоряется и делается более осмысленным, особенно если виртуальные машины создаются регулярно.