Powercli vmware что это
На просторах есть много статей о том, как настраивать PowerChute Business Edition, и как подключаться к VMWare из PowerShell, но как-то не встретилось все это в одном месте, с описанием тонких моментов. А они есть.
Установка модулей PowerCLI в Linux
Вы можете установить и использовать PowerCLI не только в Windows, но и в Linux. Сначала установите PowerShell Core в ваш дистрибутив Windows, а затем выполните следующие команды в консоли для установки VMware PowerCLI:
pwsh
Install-Module -Name VMware.PowerCLI
Импортируйте модуль в сессию:
PowerCLI
Претерпев неудачу в поисках рабочих инструментов от третьих лиц, я решил обратиться к вендорскому решению.
Вендор предлагает два решения — PowerCLI (надстройка над Powershell) и vmware-cli (командный интерфейс для *nix).
Заставить работать vmware-cli на CentOS 7 и OS X не удалось (один страдалец даже написал блог об этом), посему я решил сразу начать пользоваться инструментом, который работает.
Внимательный читатель может поинтересоваться, почему я потратил столько времени на Ansible и Terraform, в то время как PowerCLI уже давно используется. Причины просты — я не знаю Powershell на должном уровне, чтобы с наскоку начать пользоваться им, плюс это вынуждает меня использовать windows машину, которая будет заниматься чистым provision’ом. Впрочем, иных вариантов у меня и нет.
Беглое изучение документации дало мне достаточно навыков, чтобы написать простенький скрипт.
Этот скрипт рабочий и делает все необходимое. Запуск скрипта выглядит следующим образом:
Скрипт попросит меня предоставить логин и пароль, переиграет переменные и создаст машинку с помощью cmdlet’а new-vm. Читатель может поинтересоваться, почему присутствует вот эта строка:
Пусть меня поправят опытные powershell ребята, если я ошибаюсь. Get-Credential создает объект состоящий из логина, пароля и домена (если он есть). Пароль находится в состоянии SecureString. К сожалению, PowerCLI не умеет работать ни с объектом Get-Credential, ни с SecureString, потому приходится идти на подобные ухищрения, чтобы передать ему логин и пароль простой строковой переменной.
Примеры скриптов PowerCLI
На сайте есть несколько примеров использования PowerCLI для получения информации об элементах инфраструктуры VMware и автоматизации некоторых действий. Вы можете использовать примеры из этих статей в качестве основы для ваших скриптов PowerCLI:
vSphere PowerCLI это мощный инструмент для управления и автоматизации инфраструктуры VMWare. В состав PowerCLI вход более 2000 командлетов для управления облачной и виртуальной инфраструктурой VMware (vSphere, vSAN, vRealize Operations Manager, vCloud Director, Site Recovery Manager, Horizon, NSX-T, VMware Cloud Services, VMware Cloud on AWS и т.д.).
advbg
О рутине и борьбе с ней
Всем нам очень нравятся продукты VMware! Помимо всеми нами любимого Workstation, WMware предлагает мощнейшие средства виртуализации на корпоративном и мультикорпоративном уровне.
Правда в один момент, эта инфраструктура может стать очень большой и неподъемной. Всякого рода администрирование в один момент может занимать слишком времени и отнимать слишком много усилий. Некоторые задачи выполнять периодично, что малость надоедает.
Возникает довольно резонный вопрос, а что из этого всего можно заскриптить и как? Вот тут к нам приходит на помощь PowerCLI.
Немного о Powershell
После установки дистрибутива, запускаем ярлык PowerCLI. Откроется консоль, по сути являющейся полноценной Powershell, но с прогруженными Снапинами для управления Виртуальной инфраструктурой. Можно просто открыть Powershell и догрузить снапины из папки, где установлен PowerCLI.
Вкратце напомню о синтаксисе Powershell. Команды в нем формируются следующим образом:
Здесь мы берем все процессы с именем notepad с помощью комадлета Get-Process и передаем его по pipeline комадлету Stop-Process, который их останавливает.
Как это работает в PowerCli
Применяем эту философию для управления нашей инфраструктурой:
Можем усложнить команду и показать другую информацию. Как в примере с notepad, берем виртуальную машину, передаем ее по pipeline на Select-Object, которая берет часть полей объекта виртуальной машины и результат передаем на Format-Table, который форматирует вывод.
PS> $vm | Select-Object Name,VMHost,Version | Format-Table -AutoSize
Name VMHost Version
---- ------ -------
DemoMachine 10.23.83.210 v7
Попробуем теперь что-нибудь изменить. Допустим, у нас добавили памяти на хостовых машинах. Одной строчкой мы можем проапгрейдить все виртуальные машины, например, в маркетинговом отделе:
PS> Get-VM –Location MarketingPool | Set-VM –MemoryMB 512 –Confirm:$false
Name PowerState Num CPUs Memory (MB)
---- ---------- -------- -----------
MarketingVM05 PoweredOff 1 512
MarketingVM04 PoweredOff 1 512
MarketingVM03 PoweredOff 1 512
MarketingVM01 PoweredOff 1 512
MarketingVM02 PoweredOff 1 512
Модное нынче слово облак.
Данные команды выполнялись на vSphere, но как я уже сказал подобным образом мы можем управлять и Cloud инфраструктурой. Для этого есть свой набор комадлетов.
Подключившись с облаку, нам интересно, какие у на есть виртуальные машины. Выполняем:
PS> Get-CIVM | Select Name
Name
----
CloudVM03
CloudVM04
CloudVM01
CloudVM02
CloudVM05
Ну и, наконец, мы можем выполнять команды и над vSphere и над Cloud одновременно.
Одной строкой мы можем переместить виртуальные машины в Cloud:
PS> Get-VM –Location AccountingPool | Import-CIVapp –OrgVdc AccountingVdc
Name Enabled InMaintenanceMode Owner
---- ------- ----------------- -----
AccountingVM03 True False system
AccountingVM04 True False system
AccountingVM01 True False system
AccountingVM02 True False system
AccountingVM05 True False system
Вот так! Все очень просто!
Напоследок немного магии
С помощью командлетов можно взаимодействовать и с гостевой операционной системой. Для этого на ней должны быть установлены VMware Tools. Проапдейтить их можно так:
PS> Get-VMGuest VM | Update-Tools
Что же в себя включает данное взаимодействие? Например, мы хотим переписать некий файл на все наши виртуальные машины (в случае под Windows) на определенное место:
PS> Get-VM | Copy-VMGuestFile -Source c:\text.txt -Destination c:\temp\ -GuestToLocal -HostUser root -HostPassword pass1 -GuestUser user -GuestPassword pass2
И самое интересное – выполняем скрипт на гостевой ОС:
PS>$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.e
xe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM MyVM -HostCredential $hostCredential -GuestCredential $guestCredential -ScriptType Bat
Командлет позволяет выполнение bat/bash/powershell скриптов.
Я уверен, большинство из Вас уже почувствовали всю силу этого взаимодействия! С их помощью можно создавать, например, мощные post-provisioning конфигурации.
Вывод
Итак, PowerCLI является довольно мощным инструментом для администрирования всей Виртуальной инфраструктурой. Можно создавать сложные сценарии для всякого рода манипуляций над ней. Эти сценарии можно, например, запускать периодически или использовать для подъема среды. Можно также создавать сценарии для disaster recovery. Свойства и подход Powershell позволяют довольно легко – малым количеством команд манипулировать большим количеством объектов.
По приведенной выше ссылке можно получить полную инструкцию по использованию сего продукта. Там же в community можно спросить об интересующих Вас проблемах. Оно является одним из самых больших для powershell вообще.
Приветствую, дорогой читатель. Я начинаю цикл статей о том, как мы искали решение для применения подхода Infrastructure-as-Code в нашем виртуальном окружении VMware VSphere.
У нас есть система управления конфигурациями Puppet для Linux, есть (на данный момент) DSC для Windows Server.
Что касается Linux — практически все автоматизированно. Мы заносим конфигурации машин в nodes.yaml, мы заносим роли в Hiera, строим модули (или берем готовые), у нас есть PXE, IP адреса раздаются из DHCP по MAC адресу.
То есть с момента как Linux виртуалка стартует, до момента, когда виртуалка готова к эксплуатации — никаких действий не нужно. Попробуйте угадать, что в этой цепочке делается вручную? Верно, создание самой виртуальной машины в VSphere.
Когда я впервые поднял этот вопрос, мне сказали, что искали решение, пробовали варианты, но ничего не получилось. “К черту!” — подумал я и поспорил на ящик пива, что найду решение, которое будет работать по следующему сценарию: разработчик или инженер делает Pull Request, в котором у нас находится конфигурация виртуальной машины (ядра, память, сеть, шаблон и т.д.) — далее некая магия обращается в VSphere и создает машину, согласно настройкам в файле.
Позволь рассказать немного о нашем окружении, чтобы ты понял с чем мне приходится иметь дело.
У нас в качестве On-Premise виртуализации используется VMware VSphere — парочка датацентров, datastore-кластер и несколько Resource Pool’ов (RP) под каждую команду. Члены команды имеют права на создание виртуальных машин в пределах RP, ребята-инфраструктурщики им в этом не мешают и просто занимаются обслуживанием всей платформы, периодически напоминая разработчикам и инженерам убирать за собой неиспользуемые машины (ресурсы-то не резиновые).
У нас есть Windows виртуалки, Linux виртуалки, масштаб задач огромен — веб серверы, реверс прокси, балансировщики, контроллеры домена, серверы приложений и баз данных и нет им конца и края.
Теперь я поведаю тебе, какие инструменты я пытался применять, и почему они мне не подошли.
Terraform
Иная тулза, которая умеет создавать виртуалки в VMware это Terraform, продукт от HashiCorp. Изначально он заточен под взаимодействие с Packer и деплоит в AWS, но наши задачи он тоже решает. Вот собственно файл с конфигурацией:
terraform plan работает прекрасно.
Что так же здорово, можно задать IP адрес, доменное имя — то есть задать полноценную кастомизацию машинки из шаблона. Пробуем запустить…
Хм, не найден datastore. Как я уже говорил, у нас кластер, так что я попробую сделать по-грязному указав одну из нод кластера.
Что ж… снова неудача. Позже выяснилось, что Terraform не умеет работать с datastore-кластерами. Соответственный issue был создан на GitHub моим коллегой, но успехов на этот поприще тоже, увы, нет.
Управление хостами ESXi
Рассмотрим примеры управлением ESXi хостами. Для этого нам понадобятся команды с именами «VMHost».
По названиям команд нетрудно определить их назначение.
Введем хост в Maintenance Mode.
Переместим хост в другой кластер, для этого предварительно нужно ввести его в Maintenance.
С остальными командами проблем думаю не должно быть, кроме того, что перед какими-то серьезными действиями хост должен быть переведен в Maintenance Mode.
Основные команды PowerCLI для управления VMware vSphere и виртуальными машинами
Список командлетов в модулях PowerCLI можно получить так (доступно более 2200 команд):
Get-Command –Module *vmware*
Чтобы при запуске модуля не появлялось предложение сбора данных через VMware Customer Experience Improvement Program (CEIP), можно отключите это уведомление:
Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false
Для подключения к vCenter Server или конкретному хосту ESXi:
Если вы используете для сервера vCenter самоподписанный SSL сертификат, то PowerCLI запретит подключение:
Чтобы игнорировать самоподписанные сертификаты:
Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction Warn
Вывести только отключенные ВМ:
Get-VM | Where | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table
Запустить виртуальную машину:
Start-VM -VM TestVM01
Корректная перезагрузка ВМ (через агента VMware tools):
Restart-VMGuest -VM TestVM01 -Confirm:$False
Shutdown-VMGuest -VM TestVM01 -Confirm:$False
Вывести список снапшотов для конкретной ВМ:
Get-VM| Get-Snapshot| Format-List
Чтобы переместить запущенную ВМ на другой хост с помощью VMotion используется команда Move-VM. Например, мы хотим перенести все ВМ с хоста msk-esxi1 на msk-esxi2:
Get-VMHost msk-esxi1|Get-Vm| Move-VM –Destination (Get-VMHost msk-esxi2)
Чтобы создать новую виртуальную машину используется командлет New-VM:
New-VM –Name testVM -VMHost msk-esxi1 –ResourcePool Production –DiskGB 10 –DiskStorageFormat Thin –Datastore MSA2000_2_Prod1
Чтобы изменить настройки виртуальной машины, используйте Set-VM .
С помощью командлетов PowerCLI можно взаимодействовать с гостевыми операционными системами виртуальных машин. Для этого в ВМ должны быть установлены VMware Tools. Вы можете обновить VMware Tools так:
Get-VMGuest VMname1 | Update-Tools
С помощью Invoke-VMS можно выполнить скрипт в гостевой ОС с Windows:
$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM msk-dc01 -HostCredential $hostCred -GuestCredential $msk-dc01Cred -ScriptType Bat
Или можно скопировать файл на все ВМ:
Чтобы скопировать определенный файл на все ВМ, выполните команду:
Get-VM | Copy-VMGuestFile -Source C:\PS\get-info.ps1 -Destination C:\PS\ - LocalToGuest -GuestUser administrator -GuestPassword p@$$w0rdes2
В модуле есть командлеты для управления кластерами, датацентрами, хранилищами и хостами ESXi:
Вывести список ESXi хостов в кластере:
Get-Cluster mskprod1 | Get-VMHost | sort name
Перевести определенный хост ESXi в режим обслуживания:
Set-VMhost -VMHost msk-esxi1 -State Maintenance
Подключить iSCSI LUN к хосту ESXi и создать на нем VMFS хранилище:
Get-ScsiLun -VmHost msk-esxi1 | ft
New-Datastore -Name 'new-datastore' -VMHost msk-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs
Информация. PowerCLI работает в режиме только чтения (read-only) с бесплатным VMware vSphere Hypervisor. Это означает, что вы использовать команды для просмотра свойств хоста и ВМ, но не сможете их изменить.
5. Катарсис
Смотрим диспетчер задач, видим – промелькнуло cmd, промелькнуло powershell. Приглядываемся повнимательней – cmd *32 и, соответственно, powershell *32. Понимаем, что служба агента APC 32-разрядная, а значит она запускает соответствующую консоль.
Запускаем powershell x86 от администратора, проделываем еще раз установку и настройку PowerCLI из пункта 3.
31.03.2022
itpro
PowerShell, VMWare
комментариев 8
VMware vSphere PowerCLI — это набор модулей PowerShell, позволяющий администрировать компонентами инфраструктуры VMware из командной строки. Вы можете использовать PowerCLI для получения состояния виртуальных машин, хранилищ, сетей, пользователей, управлять различными настройками, создавать новые объекты и использовать PowerShell в скриптах автоматизации ESXi, vCenter Server, vSphere, vSAN и других продуктов VMware.
На данный момент VMware разрабатывает версию PowerCLI только для PowerShell Core (7.0+). Эта версия PowerShell является кроссплатформенной, и может использовать как в Windows, так и в Linux или macOS. Для старых модулей PowerCLI под Windows PowerShell 5.x выпускаются только исправления безопасности. Рекомендуется использовать обновленную версию PowerShell Core.
Работа с VM
Для базовой работы с виртуальными машинами в vSphere используются командлеты, в составе которых есть «VM». Вот список этих команд:
Думаю, понятно по названию команд что они делают. Давайте рассмотрим пару примеров. В примере ниже мы создадим VM с простой конфигурацией.
А теперь из шаблона с использование кастомизации.
Клонирование существующей виртуальной машины.
А теперь рассмотрим более интересный пример. У PowerShell есть много прекрасных свойств и одно из них — это работа с различными источниками данных, например, с CSV фалами. Для начала нам нужен CSV файл со списком VM и их требуемыми характеристиками. Например, такого состава.
name | mem | cpu | gb |
vm-01 | 2 | 2 | 128 |
vm-02 | 4 | 2 | 256 |
Мы с помощью PowerShell импортируем содержимое файла в переменную, а затем циклом воспроизведем команду по созданию VM с параметрами из ее строки.
Также возможно создать множество машин похожим способом, но с использованием XML файла как источника информации. Допустим мы имеем XML с таким содержанием.
Теперь загрузим его содержимое в переменную.
Затем создаем машину.
И вуаля… Можно усложнять у увеличивать количество данных в источнике информации, что придаст нам удобности и гибкости. Так же мы с помощью PowerCLI можем использовать недоступный из GUI инструмент – InstantClone, который используется в VMware Horizon для быстрого создания машин для развертывания VDI ресурсов. Об этом отлично написано в блоге Уильяма Лама .
Теперь сделаем с помощью PowerCLI список всех включенных машин и выгрузим его в CSV файл.
Список машин, где не установлены VMware Tools или устарели.
Где подключен CD привод и отключим его.
Список снепшотов. О это моя любимая тема. Когда инфраструктура большая и множество людей имеют доступ к vSphere, в промышленных масштабах растет и количество создаваемых снепшотов, которые нам как администратору приходиться вовремя удалять.
Как пользоваться PowerCLI
Теперь остановимся на использовании данного решения в администрировании. Итак, после того как мы установили PowerCLI и воспылали желанием его использовать, нам нужно подключиться к нашей инфраструктуре vSphere, это может быть, как vCenter так и одиночный хост ESXi. В случае хоста ESXi нужно учесть, что если он лицензирован бесплатной лицензией, то использовать PowerCLI с ним не получиться. Давайте начнем. Открываем консоль PowerShell и запускаем команду:
Эта команда подключает нас к инфраструктуре VMware. Нам сразу же всплывет окно для вывода логина и пароля и после успешной аутентификации мы будем подключены к vCenter или ESXi. Логин с паролем мы можем ввести вместе с командой:
Но это достаточно небезопасно. Можно использовать переменную для аутентификационных данных, а потом вставить ее в команду выше:
В команде выше мы использовали ключ «–SaveCredentials», с помощью которого наши логин и пароль запоминаются PowerShell-ом и в последствии при подключении к этому vCenter нам нет необходимости повторно их вводить, если мы работаем на машине под тем же самым пользователем. Если вы подключаетесь к vCenter в первый раз, у которого нет доверенного сертификата, как это бывает в большинстве случаев, то добавьте ключ «–Force» в конец команды, что бы проверка сертификата игнорировалась. Или используйте предварительно команду ниже, чтобы определить будущую реакцию PowerCLI на не доверенные сертификаты.
После того как мы залогинились, можно приступать к работе. Что бы ознакомиться с доступными командами PowerCLI можно использовать команду ниже.
И Мы увидим весь список доступных команд PowerCLI. С помощью следующей команды мы можем получить информацию о какой-либо интересующей нас команде, о ее синтаксисе и функционале.
Это отлично помогает разобраться в устройстве командлетов и подобрать нужный для ситуации. Запомнить все командлеты нереально, даже если вы пользуетесь PowerCLI и PowerShell постоянно, то и дело придется регулярно использовать Get-Help. Теперь рассмотрим базовые команды и примеры с ними.
4. Default.cmd
Тот самый командный файл, который запускается агентом APC. Лежит в “C:\Program Files[ (x86)]\APC\PowerChute Business Edition\agent\cmdfiles”, а внутри:
«C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe» -File «C:\. \shutdown_hosts.ps1»
Вроде все настроили и проверили, даже запустили cmd – отрабатывает правильно, выключает.
Запускаем из консоли APC проверку командного файла (там есть кнопка Test) – не работает.
Вот он, тот неловкий момент, когда вся проделанная работа ни к чему не привела.
Выводы
Дорогой читатель, если у тебя однажды встанет задача автоматизировать создание виртуальных машин в VMware, то учти следующее:
- используешь ли ты Resource Pool’ы
- используешь ли ты Datastore кластеры
Если же у тебя такая же сложная инфраструктура, как и у нас, то лучше не изобретай велосипед, а осваивай PowerCLI.
В следующей части я расскажу, как мы сделали наш скрипт умнее, и научили его делать проверки на кастомизацию, количество ядер и других ресурсов и naming convention.
В этой статье попытаюсь рассмотреть инсталляцию замечательного инструмента для администрирования и автоматизации управления виртуальной средой vSphere – PowerCLI. По правде сказать, PowerCLI поддерживает и может управлять не только vSphere, но и рядом других продуктов VMware, а именно:
- NSX-T
- VMware Cloud Director
- VMware vSAN
- VMware Site Recovery Manager
- vRealize Operations Manager
- VMware Horizon
- VMware Cloud on AWS
- VMware Hybid Cloud Extension
Но к сожалению, или к счастью данный список за пределами нашего топика, и мы сосредоточены на установке и базовом использовании PowerCLI.
Что такое PowerCLI? Это инструмент администрирования вышеописанных продуктов VMware из командной оболочки PowerShell, который после инсталяции добавляет множество дополнительных командлетов в PowerShell для работы с ними. Становиться очень удобно автоматизировать многие рутинные процессы и отчеты в инфраструктуре. Для базового администрирования vSphere PowerCLI не сильно подходит ввиду определенной сложности команд и времени, необходимом на их ввод в консоль.
Рассмотрим два варианта установки PowerCLI. Первый вариант прост и подразумевает наличие на машине, на которой производится установка доступа в интернет, а второй – где интернета нет. В обоих случаях, если присутствует старая версия, установленная при помощи MSI файла, ее необходимо удалить через панель управления.
Установка PowerCLI на машину с интернетом
Как ясно из названия нам потребуется доступ в интернет и консоль PowerShell. Запускаем PowerShell от имени администратора и используем команду:
Опционально можно использовать ключ, чтобы установить PowrCLI только для текущего пользователя:
Если на нашей машине ранее не было установок модулей PowerShell из интернета, то скорее всего пошик ругнется на источник пакетов PSGellery и спросит, что делать, выбираем «Y» и продолжается установка. После завершения процесса инсталляции модуля PowerCLI убеждаемся, что все установилось и появились новые командлеты:
Нам вывалится огромный список командлетов PowerCLI, что означает что установка прошла успешно и можно приступать к их использованию.
Об авторе
Какой то инженер по виртуализации. В данном контексте это не особо важно. Вы же не за этим сюда пришли, верно?
1. Вступление
Несмотря на то, что мы имеем некоторое отношение к энергетике, проблемы с электричеством иногда возникают. Тут в дело вступает ИБП, но и его батареи, увы, не долговечны. Что делать? Выключать!
Пока все серверы были физическими, дела шли неплохо, нас выручала PowerChute Business Edition. Бесплатная, на 5 серверов, чего вполне хватало. На одной машине был установлен агент, сервер и консоль. При приближении конца агент просто выполнял командный файл, в котором на соседние серверы посылалось shutdown.exe /s /m, а потом гасил свою ОС. Все живы.
Потом настало время виртуальных машин.
1. Вступление
Несмотря на то, что мы имеем некоторое отношение к энергетике, проблемы с электричеством иногда возникают. Тут в дело вступает ИБП, но и его батареи, увы, не долговечны. Что делать? Выключать!
Пока все серверы были физическими, дела шли неплохо, нас выручала PowerChute Business Edition. Бесплатная, на 5 серверов, чего вполне хватало. На одной машине был установлен агент, сервер и консоль. При приближении конца агент просто выполнял командный файл, в котором на соседние серверы посылалось shutdown.exe /s /m, а потом гасил свою ОС. Все живы.
Потом настало время виртуальных машин.
Ansible vsphere_guest
Как я уже писал в предыдущей статье, я очень люблю Ansible и в вопросах автоматизации я первым делом смотрю, можно ли его для этого использовать.
Согласно документации, есть хороший модуль vsphere_guest который может создавать и удалять виртуалки. То, что нужно. Вот так выглядит мой плейбук createvm.yaml
Я сознательно комментирую hostname esxi потому, что я создаю виртуалку непосредственно в RP, а не на хосте. DRS сам решит, куда виртуалку положить.
Если я запускаю плейбук, он ругается что необходимый параметр hostname не указан. Если я его раскоментирую, то он поругается на отсутствие прав на создание виртуалки на esx хосте (что очевидно, т.к. права у меня есть только на RP). Я создал соответствующий issue, так что надеюсь, ребята из Ansible это исправят, поскольку инструмент реально хороший.
Итоги
PowerCLI это мощнейший инструмент для автоматизации виртуальной инфраструктуры VMware. Он очень гибок и удобен, а синтаксис достаточно понятен и легко запоминается. В некоторых случаях он представляет даже больше удобства и функционала чем другие продукты VMware, разработанные специально для автоматизации, это линейка vRealize, но у каждого из этих решений свое назначение и сравнивать их – неправильно. Функционал PowerCLI выходит намного дальше, чем те примеры, которые я привел в данной статье и писать о нем и приводить другие примеры можно бесконечно долго.
3. Процесс
ИБП физически подключили к com-порту сервера 2008, благо он был. Хотя это не принципиально – можно было подключиться через преобразователь интерфейсов (MOXA) к любому виртуальному Windows серверу. Далее все действия производятся на машине, к которой подключена ИБП – Windows Server 2008, если явно не указано иное. На ней установили агента PowerChute Business Edition. Вот тут находится первый тонкий момент: службу агента нужно запускать не от системы, а от пользователя, иначе агент не сможет выполнить cmd-файл.
Далее установили PowerShell 5.1. Тоже требуется перезагрузка, даже если не просит.
Далее установка PowerCLI 11.5. Довольно свежая версия, от этого и предыдущие требования. Можно через интернет, об этом есть много статей, но у нас оно уже было скачано, так что просто скопировали все файлы в папку Modules.
Ок, видим, установили:
Да, консоль Powershell конечно запущена от Администратора.
- Либо разрешить только игнорировать сертификаты скриптов:
- Разрешить PowerCLI подключение к серверам с недействительными (просроченными) сертификатами:
- Сохранить учетные данные пользователя для входа на хост VMWare, чтоб явно не светить их в скрипте:
Проверка покажет, кого мы сохранили:
Можно и подключение проверить: Connect-VIServer address.
Сам скрипт, ну например: подключились, погасили, на всякий случай отключились, возможны варианты:
Эмпирическим путем…
Операции с хранилищами
Для работы с хранилищами vSphere есть следующие командлеты:
А также мы можем примонтировать с помощью PowerCLI одно или несколько датасторов к нашей машине и производить операции с ними, копировать файлы и так далее. В этом нам поможет нативный PSProvider VMware – VimDatastore.
Проверим содержимое хранилища:
Мы так же можем копировать файлы и папки между нашим примонтированным хранилищем vSphere и нашей машиной, что существенно облегчает это по сравнению с аналогичными действиями в GUI vSphere Client.
Теперь вернемся к более повседневным задачам администрирования vSphere и приведем пример создания нового хранилища NFS.
Создание хранилища VMFS. Тут все немного сложнее, потому что нам нужно выбрать устройство для дальнейшей разметки в VMFS. А информацию об устройстве еще нужно получить, для определения устройства используется его идентификатор вида «naa.XXX XXX». Используем команду ниже и указываем хост, имеющий доступ к устройству.
Выделенное CanonicalName и есть нужный идентификатор устройства. Подсказка – используйте «Format—Table –Autosize» для того что бы получаемая информация целиком помещалась на экране консоли. Теперь используем следующую команду для создания хранилища.
Установка VMware PowerCLI в Windows
Вы можете установить модуль VMvware PowerCLI в Windows в онлайн или офлайн режиме.
Для онлайн установки модуля PowerCLI из PowerShell Gallery выполните команду:
Install-Module -Name VMware.PowerCLI
Если нужно установить модуль только для текущего пользователя:
Install-Module VMware.PowerCLI -Scope CurrentUser
По умолчанию из PowerShell Gallery устанавливается последняя версия PowerCLI. Если вам нужно установить определенную версию PowerCLI, можно вывести полный список версий и установить нужную:
Find-Module -Name VMware.PowerCLI -AllVersions|select version
Install-Module -Name VMware.PowerCLI -RequiredVersion 12.1.0.17009493
В процессе установки вам будет предложено обновить Nuget провайдер. Также подтвердите установку из недоверенного репозитория PowerShell Gallery (можно сделать его доверенным с помощью командлета Set_PSRepository ).
Проверьте, что модули PowerCLI установлены и выведите их версии:
Get-Module -ListAvailable VMware* | Select Name,version
Для обновления версии PowerCLI достаточно выполнить команду:
Update-Module -Name VMware.PowerCLI
Если в Windows установлен модуль управления пакетами Choco, вы можете найти модуль PowerCLI в репозитории:
choco search vmware
и установить его:
choco install vmware-powercli-psmodule
Модуль powercli в winget пока не доступен.
Если вы хотите установить PowerCLI на изолированном от интернета компьютере, можете использовать офлайн установщик.
Для импорта модуля PowerCLI в текущую сессию, в PowerShell ISE или Visual Studio Code, выполните команду:
При загрузке модуля может появиться ошибка вида:
В этом случае нужно настроить политику выполнения скриптов PowerShell. Чтобы разрешить запуск модуля в текущей сессии:
Set-ExecutionPolicy Unrestricted -Scope Process
Можно использовать модуль PowerCLI, установленный на другом компьютере. Для этого его нужно импортировать удаленно через PSRemoting:
$session = New-PSSession -ComputerName msk-man01
Импортируйте модуль PowerCLI на ваш компьютер:
Import-Module -PSsession $session -Name VMware.VimAutomation.Core
Не забудьте закрыть сессию после окончания:
Установка PowerCLI на машину без интернета
Частенько в работе инженеров и администраторов возникает задача установить PowerCLI не имея выхода в мировую паутину, например разворачивая инфраструктуру где ни будь в вагончике в Сибири либо же по соображениям политик безопасности.
Мы увидим список мест где у нас лежат модули пошика, у меня это:
Если мы хотим, чтобы PowerCLI был доступен для всех пользователей данного компьютера, нам нужно распаковать скачанный архив в “C:\Program Files\WindowsPowerShell\Modules”, а если требуется что бы только текущий пользователь мог использовать PowerCLI, то наш выбор “C:\Users\%UserName%\Documents\WindowsPowerShell\Modules ”.
Если вы устанавливаете PowerCLI этим методом, то после того как вы распаковали содержимое архива по одному из путей выше, нужно разблокировать папки модулей командой:
В моем примере указан путь установки для всех пользователей, в вашем случае используйте тот куда вы распаковали.
Теперь проверяем ранее приведенной командой доступность командлетов PowerCLI.
Видим, что они присутствуют и можем приступать к работе.
2. Исходные данные и размышления
Итак, что мы имеем? Всего ничего – один физический сервер с Windows Server 2008 R2 и один гипервизор с несколькими виртуальными машинами, среди которых есть и Windows Server 2019, и Windows Server 2003, и CentOS. И еще ИБП – APC Smart-UPS.
Про NUT мы слышали, но руки пока до его изучения не дошли, использовали только то, что было под рукой, а именно PowerChute Business Edition.
Гипервизор умеет сам завершать работу своих виртуальных машин, осталось только ему сообщить, что пора. Есть такая полезная штука VMWare.PowerCLI, это расширение для Windows Powershell, как раз позволяющее подключаться к гипервизору и сообщить ему все что надо. Про настройки PowerCLI тоже есть много статей на просторах.
Читайте также: