Многие пользователи виртуальной инфраструктуры VMware vSphere 4 и серверов ESX не раз сталкивались с публикациями о том, как можно управлять серверами виртуализации и виртуальными машинами с помощью интерфейса PowerShell. Для VMware vSphere это реализуется средствами пакета PowerCLI, который представляет собой надстройку к PowerShell для управления виртуальной инфраструктурой с помощью сценариев командной строки.
Назначение интерфейса PowerCLI (как и других интерфейсов VMware vSphere) - автоматизация рутинных задач администратора при выполнении типовых действий любой сложности с серверами ESX и виртуальными машинами. Примеров сценариев PowerCLI / PowerShell великое множество - от простых для, например, поиска пользователя, который удалил виртуальную машину, до полноценных программ диагностики виртуальной инфраструктуры VMware vSphere.
Выбор интерфейса PowerCLI для управления VMware vSphere очевиден - большинство системных администраторов Windows-инфраструктуры освоят или уже осовили PowerShell для управления серверами и настольными ПК в своей компании (реализации PowerShell есть в Windows Server 2008 и Windows 7). Поэтому если вы администратор VMware, вам необходимо приступить и к освоению этого, бесспорно, мощного инструмента управления.
Прежде всего, нужно скачать пакет Windows PowerShell с сайта Microsoft. Если у вас на рабочей станции администратора установлена Windows 7 или Windows 2008, то скачивать ничего не нужно - все уже есть в ОС.
Далее нужно включить запуск удаленных скриптов PowerShell, который по умолчанию отключен в целях безопаснсоти. Для этого необходимо открыть командную строку (cmd) и напечатать: powershell
Затем ввести строчку: set-ExecutionPolicy RemoteSigned
После установки запускаем PowerCLI для VMware vSphere из меню программ или щелкнув по ярлыку PowerCLI на рабочем столе:
После получения приглашения ко вводу, мы видим подсказку о первых командах, которые системный администратор VMware vSphere может выполнить с помощью PowerShell (например, соединение с хостом VMware vCenter, вывод списка доступных команд или списка виртуальных машин). Давайте попробуем соединиться с VMware vCenter с помощью команды Connect-VIServer.
Команды PowerShell не чувствительны к регистру. Кроме того, они могут работать в интерактивном режиме, то есть запрашивая параметры у пользователя (можно их также указывать сразу). Просто введем Connect-VIServer и будем указывать параметры по ходу их запроса:
Когда мы соединились с сервером VMware vCenter, настало время поэкспериментировать с первыми командами PowerCLI / PowerShell. Введем команду:
Get-VM
Будет выведен список всех доступных виртуальных машин на сервере VMware vCenter.
Чтобы узнать список всех доступных команд PowerCLI / PowerShell, нужно ввести:
Get-VICommand
Теперь мы можем далее пробовать такие команды как Start-VM (запуск виртуальной машины) или ShutDown-VMGuest (выключение гостевой ОС). Краткую шпаргалку по командам PowerShell для PowerCLI вы можете найти здесь.
Кроме того, вы можете написать скрипт PowerShell в текстовом файле и дать ему расширение .ps1 (например файл first.ps1). Для запуска скрипта просто введите имя скрипта с полным путем к файлу. Если текущая директория совпадает с папкой скрипта, тогда исполнить его можно таким образом:
.\first.ps1
Кроме того, текущую директорию скриптов можно задать командой set-location <папка>.
Теперь мы научились писать скрипты PowerShell / PowerCLI для VMware vSphere, но неплохо бы еще и научиться их выполнять по расписанию для автоматизации повторяющихся задач с серверами ESX и виртуальными машинами.
Создаем новый текстовый документ, куда добавляем следующую строчку (без переводов строки):
Затем сохраняем его как .bat-файл и добавляем в планировщик Windows:
Не забывайте начинать скрипты PowerCLI / PowerShell с команды Connect-VIServer.
Кроме того, если вам не хочется писать скрипты самостоятельно, то вы можете воспользоваться специальным "макрорекордером" VMware Project Onyx, который может генерировать скрипты PowerShell / PowerCLI из действий пользователя, выполняемых в VMware vSphere Client.