Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Управление облачной инфраструктурой при помощи VMware vSphere PowerCLI

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
10 февраля 2022 г.
261
9 минут чтения
Средний рейтинг статьи: 5

Управлять продуктами VMware можно с помощью vCenter Server, используя графический интерфейс. Но есть задачи, которые гораздо удобнее решать через командную строку. Это упрощает процесс и избавляет администратора от рутины.

Типичный пример, когда командная строка может оказаться более эффективным решением, чем графический интерфейс — развертывание виртуальных машин. Допустим, у вас есть виртуальная инфраструктура на timeweb.cloud. Используя специальные команды, вы можете через командную строку создавать, конфигурировать и удалять ресурсы. Или вообще написать скрипт, который будет выполнять указанные задачи без вашего участия.

Управление Облачной Инфраструктурой При Помощи V Mware V Sphere Power Cli (1)

Сила PowerCLI

Основной инструмент для управления VMware через командную строку называется PowerCLI. Это интерфейс для управления и автоматизации всех аспектов vSphere, включая сеть, хранилище, виртуальные машины, гостевую ОС и многое другое.

PowerCLI работает поверх PowerShell, кроссплатформенной среды автоматизации задач и управления конфигурацией Windows. Он состоит из оболочки командной строки и языка сценариев. VM PowerCLI использует базовый синтаксис и концепции Microsoft Powershell. По сути, это модули PowerShell, которые содержат более 700 командлетов — специализированных команд.

VMWare PowerCLI использует интегрированную среду сценариев (ISE). Получается сложная на первый взгляд связка PowerShell ISE PowerCLI. Но вникать в то, как это работает, необязательно. На практике проблем с использованием командной строки для управления VM vSphere не возникает.

Установка PowerCLI vCenter

Посмотрим, как установить PowerCLI vCenter на примере компьютера с Windows. 

Есть два способа. Первый — использовать PowerShell Gallery. 

  1. Запустите PowerShell.
  2. Выполните команду:
Install-Module -Name VMware.PowerCLI

Все необходимые компоненты скачаются и установятся на компьютер без вашего участия. Этот способ хорош тем, что позволяет впоследствии обновлять утилиту онлайн. Для этого достаточно выполнить команду:

Update-Module -Name VMware.PowerCLI

Второй способ — загрузить установщик vSphere PowerCLI с официального сайта. Файлы собраны в ZIP-архив. 

Чтобы установить PowerCLI Windows, сначала проверьте путь к модулю PowerShell, выполнив команду:

$env:PSModulePath

Распакуйте содержимое архива по одному из путей к модулям PowerShell. Затем в окне терминала переключитесь на папку с модулями и разблокируйте файлы:

cd path_to_powershell_modules_folder
Get-ChildItem * -Recurse | Unblock-File

Чтобы убедиться, что установленным модулем можно пользоваться, выполните команду:

Get-Module -Name VMware.PowerCLI -ListAvailable

Порядок установки vSphere CLI в Linux и macOS смотрите в документации.

Если вы устанавливали утилиту автономно, то обновить ее онлайн не получится. Новую версию можно только поставить в том же режиме: скачать файлы, распаковать их и разблокировать.

Основные команды

Чтобы посмотреть возможности PowerCLI, выполните команду:

Get–VICommand

В ответ вы получите огромный перечень с описанием командлетов. Можно фильтровать его, используя ключевые слова. Например, вам нужно увидеть список виртуальных машин, выбрать одну и изменить ее конфигурацию. Получите перечень командлетов для управления ВМ с помощью такой команды:

Get–VICommand *VM

Все команды также можно посмотреть в документации. Для удобства они разбиты по категориям.

Интерфейс также предлагает посмотреть справку и примеры использования каждого командлета. Чтобы вызывать руководство по применению, добавьте аргумент help или Get-Help.

Есть дополнительные ключи, которые помогают управлять полнотой справки. Например, если вы хотите увидеть не только описание, но и примеры использования, выполните:

help Connect–VIServer –Full

Здесь help — это аргумент, который указывает на необходимость отобразить справку, Connect–VIServer — командлет, с работой которого вы хотите разобраться, а -Full — ключ, который вызывает детальную информацию, в том числе примеры использования.

Можно посмотреть только примеры использования, указав вместо -Full ключ -Examples.

Подключение к vCenter Server

Чтобы установить соединение с vSphere, используйте командлет Connect-VIServer. Пример синтаксиса:

Connect-VIServer -Server 10.23.112.235 -Protocol https -User admin -Password pass

После командлета вы указываете адрес или имя сервера. Затем — протокол, по которому будет установлено соединение. Напоследок — имя пользователя и пароль. 

Чтобы убедиться в том, что подключение установлено, выполните команду:

Get-CustomCertificates

В ответ должны быть извлечены все пользовательские сертификаты хоста.

Это пример базового подключения. Но можно использовать разные опции, чтобы решать более интересные задачи.

Например, так подключаются к серверу с помощью объекта учетных данных:

Connect-VIServer Server -Credential $myCredentialsObject -Port 1234

VMWare последней версии позволяет после подключения сохранять идентификатор сеанса. Его можно использовать в следующий раз для восстановления предыдущего сеанса. 

Connect-VIServer "Server" -SessionId $sessionId

Если учетные данные, которые вы используете для входа на свой компьютер, совпадают с учетными данными сервера, можно использовать для установки соединения встроенную аутентификацию:

Connect-VIServer Server

А эта команда позволяет подключиться к серверу vSphere, который является частью серверной системы федерации vCenter. Она также подходит для случаев, когда вам нужно подключиться ко всем серверам vSphere в федерации.

Connect-VIServer "Server" -AllLinked

Примеры использования PowerCLI

vSphere PowerCLI в Linux, Windows и macOS можно использовать как для решения совсем простых задач, так и для автоматизации рутины и выполнения сложных сценариев. 

Получение и фильтрация данных

Начнем с совсем простых примеров. Допустим, нужно получить список всех виртуальных машин, которые размещены в инфраструктуре VMWare

Способ сделать это «в лоб»:

Get–VM

Если виртуальных машин немного, то можно обойтись и таким отчетом. Если же список огромный, то гораздо удобнее будет отфильтровать нужные данные на этапе выполнения команды. Для этого используются специальные параметры.

Например, нужны все ВМ, имена которых начинается с TW:

Get-VM -Name TW* 

Или все ВМ, находящиеся в указанном хранилище данных:

$myDatastore = Get-Datastore -Name "MyDatastore"
Get-VM -Datastore $myDatastore

Чуть более сложный пример — нужно вывести все отключенные ВМ:

Get-VM | Where {$_.Powerstate -ne “PoweredOn”} | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table

Здесь вы указываете дополнительные параметры, которые влияют на вид ответа. В итоге получается таблица, которая состоит из пяти столбцов: Name, VMHost, NumCPU, MemoryMB, Version.

Можно также извлекать конкретные свойства объекта. Например:

Get-VM VMname | Get-Member -MemberType property

Вы получаете детали виртуальной машины с именем VMname. Можно получать информацию и о других свойствах:

Get-VM VMname | Select Name, NumCPU, MemoryMB, PowerState, VMHost | Format-Table

В ответе вы увидите таблицу с именем машины, количеством ядер, объемом памяти в МБ, статуса и vmhost.

Сохранение результатов

Анализировать информацию внутри окна PowerShell не всегда удобно. Особенно, если данных очень много. CLI предлагает альтернативный вариант — экспорт результатов в форматы, которые больше подходят для изучения и анализа. Речь идет о файлах TXT, CSV, XML и HTML.

Например, эта команда сохранит результат в простом текстовом файле:

Get-VM | Select Name, NumCPU, MemoryMB, PowerState, VMHost | Out-File c:myPowerCLIReport.txt

Вот так можно получить отчет в формате CSV — отличный выбор для дальнейшего автоматизированного анализа данных:

Get-VM | Select Name, NumCPU, MemoryMB, PowerState, VMHost | Export-Csv c:myPowerCLIReport.csv -NoTypeInformation

Если нужны данные в формате XML:

Get-VM | Select Name, NumCPU, MemoryMB, PowerState, VMHost | ConvertTo-Xml -NoTypeInformation).Save("c:myPowerCLIReport.xml"

Или HTML-файл, который можно открыть в любом браузере:

Get-VM | Select Name, NumCPU, MemoryMB, PowerState, VMHost | ConvertTo-Html | Set-Content "c:myPowerCLIReport.html"

Экспорт виртуальной машины

Теперь — еще более сложный пример использования. Посмотрим, как выполняется экспорт виртуальной машины VMWare через CLI.

Командлет Export-VApp экспортирует vApp или отдельную виртуальную машину в указанное место назначения. Если место назначения не указано, командлет создает новую папку в текущем рабочем каталоге и экспортирует в нее vApp или виртуальную машину. Имя новой папки совпадает с именем vApp или виртуальной машины, которое отображается в vCenter Server.

Пример команды:

Get-VApp -Name "MyTW*" | Export-VApp -Destination "C:\vapp\"

Здесь вы извлекаете все vApps, имена которых начинаются с «MyTW», и экспортируете их по указанному пути.

Создание кластера

Напоследок рассмотрим сценарий, который часто встречается на практике. Допустим, вам нужно создать и настроить кластер. У вас есть vCenter Linux, но вы хотите автоматизировать процесс — написать скрипт, который будет сам выполнять все необходимые команды. Сделать это поможет ISE VMWare, который работает через PowerCLI.

Создайте новый кластер, используя командлет New-Cluster. Кроме имени нужно обязательно указать локацию. Например:

New-Cluster -Name "MyTimeweb" -Location "TimeWebDatacenter"

Этот командлет создает новый кластер с предоставленными входными данными в расположении, указанном параметром Location. Важно, что некоторые настройки устанавливаются по умолчанию.

HA — это высокая доступность. Суть настройки в том, что при выходе из строя одного из узлов кластера нагрузка перераспределяется между другими узлами, на которых зарезервированы ресурсы.

При создании кластера для HAEnabled автоматически устанавливается значение $true, если указаны некоторые параметры высокой доступности, HAAdmissionControlEnabled, HAFailoverLevel, HARestartPriority или HAIsolationResponse

Все эти параметры можно задать явно. Например:

New-Cluster -Name "MyTimeweb" -Location "TimeWebDatacenter" -HAEnabled -HAAdmissionControlEnabled -HAFailoverLevel 2 -VMSwapfilePolicy "InHostDatastore" -HARestartPriority "Low" -HAIsolationResponse "PowerOff"

DRS — функция, которая определяет где запустить или куда перенести работающую виртуальную машину, чтобы на всех узлах кластера была равномерно распределена нагрузка.

При создании кластера для DrsEnabled автоматически устанавливается значение $true, если указаны некоторые параметры DRS, DrsAutomationLevel или DrsMode. Эти параметры тоже можно задать явно:

New-Cluster -Name "MyTimeweb" -Location "TimeWebDatacenter" -DRSEnabled -DRSAutomationLevel 'Manual'

Для изменения настроек кластера используется другой командлет — Set-Cluster. Например, можно отключить планировщик распределенных ресурсов:

Set-Cluster -Cluster "MyTimeweb" -DRSEnabled:$false

Подробное описание всех командлетов с примерами использования есть в документации PowerCLI. Ее изучение не займет много времени. Взамен вы получите полное понимание того, как упростить и автоматизировать задачи, которые встают перед администратором при управлении инфраструктурой VMware vSphere.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону