08/10/2020
В последнее время лично я привык использовать для автоматизации задач с системой виртуализации VMware такое средство как Hashicorp Terraform. Однако, есть один замечательный инструмент от самой компании VMware, который работает под Windows и позволяет автоматизировать многие задачи виртуализации. Это программное обеспечение VMware PowerCLI. На данный момент актуальный релиз данного ПО — 12.0. PowerCLI очень тесно интегрируется с PowerShell и по сути представляет собой дополнительный модуль в PowerShell, который обеспечивает взаимодействие со средой vSphere. Вообщем, когда возникают задачи по автоматизации определенных действий в среде VMware из операционной системы Windows, данный инструмент оказывается незаменимым помощником. С помощью него можно производить различные манипуляции с виртуальными машинами, темплейтами и в целом инфраструктурой виртуализации.
Установка
Упомяну здесь, что несколько лет назад, когда я пользовался PowerCLI, установка производилась с помощью специального инсталляционного пакета Windows и не представляла никаких затруднений и специфичных знаний во внутренностях Microsoft Windows. В документации по данному инструменту установка его текущей 12.0 версии в операционную систему выглядит предельно просто. Необходимо выполнить просто следующую команду в PowerShell.
PS> Install-Module -Name VMware.PowerCLI
Однако, мне чтобы добиться выполнения этой команды без ошибок пришлось выполнить определенные изыскания и манипуляции в PowerShell. Поделюсь своим опытом на базе операционной системы Microsoft Windows 2016 далее по тексту.
Для начала необходимо установить в PowerShell сторонний репозитарий Chocolatey, если он не был установлен. Это делается с помощью следующей команды.
PS> Install-PackageProvider -Name Chocolatey -Force
Далее зарегистрировать дефолтный PowerShell репозитарий NuGet с помощью нижеуказанной команды.
PS> Register-PSRepository -Default -Verbose
Результаты выполнения вышеприведенных команд можно увидеть следующим образом.
PS> Get-PSRepository
Name InstallationPolicy SourceLocation
---- ------------------ --------------
PSGallery Untrusted https://www.powershellgallery.com/api/v2
PS> Get-PackageProvider -ListAvailable
Name Version DynamicOptions
---- ------- --------------
Chocolatey 2.8.5.130 SkipDependencies, ContinueOnFailure, ExcludeVersion, ForceX86, PackageSave...
msi 3.0.0.0 AdditionalArguments
msu 3.0.0.0
NuGet 2.8.5.208 Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag...
PowerShellGet 1.0.0.1 PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, ...
Programs 3.0.0.0 IncludeWindowsInstaller, IncludeSystemComponent
Еще один важный нюанс, необходимый для установки VMware PowerCLI это включение протокола TLS 1.2 в PowerShell. Это реализуется следующим образом.
PS> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
После всех вышеуказанных манипуляций можно будет свободно установить и сам VMware PowerCLI, как это указано в документации.
PS> Install-Module -Name VMware.PowerCLI
Реальное использование VMware PowerCLI
В качестве небольшого реального примера использования VMware PowerCLI, хочется привести PowerShell скрипт, который производит подключение к vCenter и выключает определенную виртуальную машину. Содержание данного скрипта приводится ниже.
# Allow Connection with Invalid vCenter Certificate
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
# Connect to vCenter Server
Connect-VIServer -Server vCenterHostName -Protocol https -User 'somevCenterUser' -Password 'somevCenterUserPassword' -Force
# Shutdown VM MyVM
Stop-VMGuest MyVM -Confirm:$False
while((Get-VM MyVM | where{$_.PowerState -ne 'PoweredOff'}).Count -ne 0){
sleep 5
}
В данном скрипте мы настраиваем подключение в vCenter серверу, после чего корректно отключаем виртуальную машину MyVM. При этом в цикле while мы дожидаемся перевода виртуальной машины в режим PoweredOff.
Резюме
VMware PowerCLI дает возможности по автоматизации работы с виртуализованной инфраструктурой из операционной системы Windows. Да, большая часть системных администраторов, увлечанная автоматизацией инфраструктуры, работает в Linux. Но, как видим, в случае необходимости, аналогичные вопросы можно успешно решать и в операционной системе от Microsoft.