VMware PowerCLI и PowerShell

08/10/2020

powercli & powershell img

В последнее время лично я привык использовать для автоматизации задач с системой виртуализации 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.

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

Ваш адрес email не будет опубликован.