Как создать собственный ESXi образ

Sypalo.com

page.title

В этой статье я покажу вам, как создать собственный образ ESXi с помощью PowerShell

Вам понадобится 30 минут чтобы выполнить следующие шаги:

  1. Идём в VMWare downloads и загружаем ESXi образ для производителя вашего сервера
    Загружаем ESXi образ для производителя вашего сервера
  2. Переключаемся на вкладку драйвера и скачиваем необходимые/дополнительные/обновленные драйвера, если необходимо
    Загружаем драйвера с VMWare
  3. Идём в VMWare patches и загружаем последнюю сборку ESXi
    Загружаем последнюю сборку ESXi
  4. Идём на страницу загрузки драйверов производителя вашего сервера, в моем случае Cisco и загружаем последние драйвера для вашей версии ESXi
    Загружаем драйверы от производителя сервера
  5. Идём в раздел меню vCenter AutoDeploy, щелкните ссылку Import в правом верхнем углу, укажите путь к ESXi образу производителя вашего сервера на локальном диске, а также имя
    Импортируем ESXi образ производителя вашего сервера
  6. Повторите предыдущий шаг и импортируйте последнюю сборку ESXi и драйверы
    Импортиртируем оставшиеся вибы
  7. Добавляем собственный depot
    Добавляем собственный depot
  8. Щелкните ссылку «Новый профиль изображения» и укажите имя и подробности.
    Обычно я использую следующее соглашение об именах: ESXi-[основная_версия].[Второстепенная_версия]-[сборка]-[standard/no-tools]. Последняя часть зависит от того, включаю ли я VMTools или нет.
    Добавляем новый профиль образа
  9. Выбираем только последние пакеты, так как по умолчанию мастер показывает вам список со всеми доступными вибами со всех источников
    Выбираем пакеты
  10. Пользовательский ESXi образ был создан, и теперь вы можете использовать его в автоматическом развертывании или экспортировать в zip или ISO, нажав кнопку «Экспорт»
    Создаем собственный ESXi образ

Или вы можете использовать следующий PowerShell скрипт, который делает описанные выше шаги


$vcenter = Read-Host "Provide vCenter name"
$esxi_build = Read-Host "Provide ESXi build number you want to download"
$handle = Connect-VIServer $vcenter
$version = $handle.Version.Substring(0,3)

# Import downloaded ESXi Cisco Custom image, latest ESXi image, Cisco enic drivers and NetApp VAAI driver from the folder below
Get-EsxSoftwareDepot | Remove-EsxSoftwareDepot
Add-EsxSoftwareDepot (Get-ChildItem "c:\packages\$version" *.zip).FullName

$profilename = "ESXi-$version-$esxi_build"
Write-Host "Checking if already downloaded build matches target one"
if ((Get-EsxSoftwarePackage -Newest | ? name -eq esx-base).Version.Split('.')[-1] -ne $esxi_build) {
	Get-EsxSoftwareDepot | Remove-EsxSoftwareDepot
		
	Write-Host "New build $profilename wasn't found locally, adding online depot to download it"
	Add-EsxSoftwareDepot "https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml"

	Write-Host "Looking for a build to download"
	$ver = "ESXi-"  + $handle.Version + "-202"	
	Get-EsxImageProfile | ? Name -like *$ver*standard* | sort Name -Descending | % {
		if (($_.VibList | ? name -eq esx-base).Version.Split('.')[-1] -eq $esxi_build) {
			$profilename = $_.Name
			Write-Host "Found correct build in profile $profilename, downloading it"
			Export-EsxImageProfile $profilename -ExportToBundle c:\packages\$version\$profilename.zip
			break 
		}	
	}
}
else {
	Write-Host "Correct build is already downloaded"
	$profilename = "ESXi-$version-$esxi_build"
}

# Import downloaded ESXi Cisco Custom image, latest ESXi image, Cisco enic drivers and NetApp VAAI driver from the folder below
Get-EsxSoftwareDepot | Remove-EsxSoftwareDepot
Add-EsxSoftwareDepot (Get-ChildItem "c:\packages\$version" *.zip).FullName

Write-Host "Creating custom stateless ESXi image without tools"
if (!(Test-Path c:\packages\$profilename-no-tools.zip)) {
	New-EsxImageProfile -NewProfile -Name $profilename-no-tools -SoftwarePackage (Get-EsxSoftwarePackage -Newest | ? name -ne tools-light) -Vendor DevOps -AcceptanceLevel PartnerSupported
	Export-EsxImageProfile $profilename-no-tools -ExportToBundle c:\packages\$profilename-no-tools.zip
}

Write-Host "Creating custom stateful ESXi image with tools"
if (!(Test-Path c:\packages\$profilename-standard.zip)) {
	New-EsxImageProfile -NewProfile -Name $profilename-standard -SoftwarePackage (Get-EsxSoftwarePackage -Newest) -Vendor DevOps -AcceptanceLevel PartnerSupported
	Export-EsxImageProfile $profilename-standard -ExportToBundle c:\packages\$profilename-standard.zip
}

Вот и все, мы создали нужный нам образ ESXi с указанными драйверами