Развертывание виртуальной машины vSphere через PowerSHell часть 1

Стал задаваться вопросом — как автоматизировать выполнение рутинных операций в vSphere?

Лучше бы не задавался 🙂

Начал с задачи «развернуть виртуальную машину из шаблона с указанной кастомизацией гостевой операционной системы».

Основные проблемы, с которыми я столкнулся:

  • мною использовалась настройка кастомизации ОС «Prompt User», спрашивающая только IP-адрес (подразумевается, что развертывание происходит в одно и то же адресное пространство). Как оказалось, проще использовать передачу «всех» параметров IP в скрипте;
  • перемещение учетной записи сервера после ее развертывания для применения групповых политик в другой контейнер Active Directory;
  • поле «Notes» получает строку. Как передать ей несколько строк, если потребуется перевод строки, я пока не разбирался;
  • за кадром остались процессы дальнейшей настройки сервера — установка обновлений и дополнительного ПО. Это будет рассмотрено в следующих частях статьи.

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

А вот что получил:

Get-OSCustomizationSpec -Name windows | New-OSCustomizationSpec -Name temp1 -Type NonPersistent
Get-OSCustomizationSpec -Name temp1 | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress '10.0.0.1' -SubnetMask '255.255.255.0' -DefaultGateway '10.0.0.254' -Dns '10.0.0.254','10.0.0.253'
New-VM -Name 'new-vm' -Template (Get-Template windows_template) -OSCustomizationSpec (Get-OSCustomizationSpec 'temp1') -ResourcePool (Get-ResourcePool -Name 'Resources'-Location 'Cluster_Name') -Datastore (Get-DatastoreCluster -Name 'Datastore_Cluster') -Notes "Zdes mogla by byt vasha reklama"
Start-VM -VM new-vm
Do {Get-ADComputer -identity new-vm -ErrorAction SilentlyContinue;write-host "." -nonewline -f red;sleep 3} until(Get-ADComputer -identity new-vm -ErrorAction SilentlyContinue -warningaction silentlycontinue)
Move-ADObject -identity (Get-ADComputer -identity new-vm).distinguishedname -TargetPath "OU=Servers,DC=DOMAIN,DC=COM"
Do {$tools=(Get-VM -Name new-vm).ExtensionData.Guest.ToolsStatus;write-host "." -nonewline -f red;sleep 3} until(($tools -eq "toolsOk") -or($tools -eq "toolsOld"))
Restart-VMGuest -VM new-vm -Confirm:$false
Start-Sleep -Seconds 10
Do {$tools=(Get-VM -Name new-vm).ExtensionData.Guest.ToolsStatus;write-host "." -nonewline -f red;sleep 3} until(($tools -eq "toolsOk") -or($tools -eq "toolsOld"))
Write-Host("Server is ready!")

Данный скрипт берет гостевую кастомизацию «windows» (Guest Customization OS) и создает на ее основе временную кастомизацию «temp1».

Затем скрипт задает настройки IP, которые должна будет получить новая ВМ.

Далее мы создаем виртуальную машину из шаблона «windows_template», используя подготовленную кастомизацию «temp1». Машина создается в кластере «Cluster_name» с примечанием о том, для чего нужна эта ВМ. Диски шаблона при этом клонируются на кластер хранилищ (Datastore Cluster) с названием «Datastore_Cluster».

Затем мы включаем виртуальную машину и ждем.

Ждем мы до тех пор, пока в AD не появится учетная запись компьютера. А эта запись должна появиться там потому, что в гостевой кастомизации настроено автодобавление ПК в домен.

Как только мы этого дождались, мы перекладываем эту учетную запись ПК в соответствующую OU.

Проверяем статус VMware Tools и, если они работают, перезагружаем наш сервер для применения актуальных групповых политик.

Затем ждем 10 секунд пока VMware Tools 100% остановятся в ходе перезагрузки, ждем пока они будут запущены и выводим на экран сообщение о том, что сервер готов.

Запись опубликована в рубрике 6.5, VMware, vSphere с метками . Добавьте в закладки постоянную ссылку.

Один ответ на “Развертывание виртуальной машины vSphere через PowerSHell часть 1

  1. Anonymous говорит:

    Set-VM -Notes «MY`nTest`nVM»

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

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