Еще в 2015 году мы писали о том, что проект VMware Sample Exchange вышел в бета-версии. Это портал, предназначенный для разработчиков средств автоматизации виртуальной инфраструктуры, где они могут скачивать примеры кода на разных языках и для разных платформ под множество компонентов виртуальной среды.
За прошедшие 8 лет этот проект накопил огромное количество различных сценариев и примеров кода как от сотрудников VMware, так и от сообщества разработчиков, которые постоянно добавляют туда новые сэмплы (вы тоже можете это делать).
Если при первоначальном запуске портала там было всего 250 сэмплов, то теперь их стало более двух тысяч, как видно на скиншоте ниже:
Посмотрите, какое огромное количество языков и платформ представлено на портале, одних только дэшбордов для решения vRealize (Aria) Operations - 300 штук!
Примерно столько же представлено и сценариев для автоматизации инфраструктуры средствами PowerShell/PowerCLI, а вот это уже - большая находка.
В апреле этого года мы писали о первой версии самостоятельного (ранее это были функции HTML5 клиента) решения VMware Power Actions 1.0. Этот продукт представляет собой плагин для клиента vSphere, который обеспечивает простой способ исполнения скриптов PowerCLI пользователями, не имеющими опыта работы с PowerShell. Средство также реализует библиотеку скриптов, куда вы можете загрузить готовые скрипты PowerCLI, которые вы хотите сделать доступными для всех сотрудников вашей организации.
Пользователи могут легко выполнить эти скрипты, используя удобный интерфейс для указания параметров скрипта.
Это обеспечивает мощный механизм расширения клиента vSphere с помощью настраиваемых сценариев PowerCLI. Все скрипты выполняются с использованием прав пользователя, который вошел в клиент vSphere. Таким образом, если у пользователя нет разрешения на выполнение определенных операций, он не сможет выполнить эти операции с помощью Power Actions.
Вот как это работает:
На днях на сайте проекта VMware Labs стала доступна обновленная версия Power Actions 1.0.2. Давайте посмотрим, что там нового:
Исправление для бага 1491 (установка не выполняется, когда отсутствует интернет-соединение)
Добавлены настройки прокси-сервера, позволяющие развертывание в средах с проксированием (баг 1495)
Настройка Thumbprint сервера vCenter заменена на настройку Disable vCenter Server Certificate Verification (отключение проверки сертификатов)
Установка изменена так, чтобы она не завершалась неудачей, если пароль виртуального модуля (Virtual Appliance) не был успешно установлен.
Загрузить виртуальный модуль VMware Power Actions 1.0.2 можно по этой ссылке. Кстати, небольшое количество исправлений за столь долгое время говорит о том, что в целом-то инструмент работает хорошо.
На днях компания VMware выпустила первую версию плагина, предназначенного для исполнения типовых сценариев PowerCLI - Power Actions 1.0. Об этом средстве мы уже упоминали, когда в начале 2021 года компания VMware выпустила обновленную версию vSphere HTML5 Web Client.
Power Actions - это плагин клиента vSphere, который обеспечивает простой способ исполнения скриптов PowerCLI с пользователями, не имеющими опыта работы с PowerShell. Это средство также предоставляет библиотеку скриптов, куда вы можете загрузить готовые скрипты PowerCLI, которые вы хотите сделать доступными для всех сотрудников вашей организации. Пользователи могут легко выполнить эти скрипты, используя удобный пользовательский интерфейс для указания параметров скрипта. Это обеспечивает мощный механизм расширения клиента vSphere с помощью настраиваемых сценариев PowerCLI.
А что насчет безопасности и прав доступа? Все скрипты выполняются с использованием прав пользователя, который вошел в клиент vSphere. Таким образом, если у пользователя нет разрешения на выполнение определенных операций, он не сможет выполнить эти операции с помощью Power Actions.
1. Установка
Power Actions распространяется в виде виртуального модуля (Virtual Appliance). Вы можете загрузить файл OVA со страницы Power Actions на сайте VMware Labs. Там же вы можете загрузить полное руководство пользователя, которое содержит подробные инструкции по установке. После установки Power Actions вы можете использовать его через Developer Center в клиенте vSphere.
2. Библиотека сценариев
Основная функция Power Actions - запуск сценариев из вашей библиотеки сценариев. Поэтому первым делом нужно создать библиотеку сценариев и загрузить в нее ваши скрипты.
Библиотеки сценариев на самом деле являются библиотеками контента, так что любую библиотеку контента можно использовать как библиотеку сценариев. Если у вас нет библиотеки контента, вы можете создать новую с помощью PowerCLI или клиента vSphere. Следующим шагом будет импорт ваших сценариев в библиотеку сценариев. Вы можете загружать сценарии по одному через клиент vSphere или целые коллекции сценариев через PowerCLI.
3. Запуск скриптов
После того, как вы загрузили свои скрипты в библиотеку, вы можете начать запускать их. У вас есть два варианта запуска скрипта - непосредственно из библиотеки или через контекстное меню. В обоих случаях, когда вы выполняете скрипт с параметрами, вам будет предложено ввести их. Однако, когда вы запускаете скрипт из контекстного меню, некоторые параметры будут автоматически заполнены для удобства.
Давайте более подробно рассмотрим, как это работает. В нашей библиотеке скриптов Power Actions мы импортировали простой скрипт PowerCLI, который создает снапшоты коллекции виртуальных машин. Вот как выглядит этот скрипт:
Когда мы запустили сценарий из библиотеки, мы получим диалог, в котором нам нужно указать обязательные параметры:
Если мы хотим выполнить сценарий из контекстного меню, мы можем кликнуть правой кнопкой по виртуальной машине и выбрать "Power Actions" -> "Run script".
В итоге, мы получим диалог, где нужно выбрать скрипт для исполнения, и потом нам нужно будет ввести параметры. В этом случае в список параметров будут автоматически добавлены параметры ВМ, для которой мы вызвали контекстное меню:
4. Мониторинг исполнения сценариев и просмотр результатов
На следующем экране Power Actions мы увидим представление "Script run". Здесь мы можем отслеживать выполнение скриптов и просматривать результаты исполнения. Также на этой странице можно остановить выполнение сценария.
5. Консоль сценария
Еще одна полезная возможность Power Actions - это встроенная консоль PowerShell с последней предустановленной версией PowerCLI. Когда вы отроете консоль, она автоматически соединится с vCenter Server, используя текущий пользовательский аккаунт vSphere Client. Вы можете использовать эту консоль для выполнения отдельных команд или готовых командлетов. Имейте в виду, если вы переключитесь на другое представление vSphere Client или запустите еще один экземпляр Power Actions, а потом вернетесь в консоль, то ваша сессия будет создана снова, а все переменные из памяти прошлого сеанса будут потеряны.
Скачать виртуальный модуль Power Actions и документацию к нему можно по этой ссылке.
Осенью прошлого года VMware анонсировала первую версию фреймворка
PowervRLICloud, предназначенного для управления окружением VMware vRealize LogInsight Cloud (этот продукт сейчас называется Aria Operations for Logs). Это PowerShell модуль, который реализует абстракции VMware vRealize LogInsight Cloud API для простого доступа к возможностям функций управления этим решением посредством сценариев.
Многие пользователи применяют сценарии PowerCLI (недавно, кстати, вышла 13-я версия этого пакета) для автоматизации виртуальной инфраструктуры VMware vSphere на базе фреймворка PowerShell.
При этом для скриптов часто встает вопрос безопасного хранения данных учетных записей (логин-пароль), чтобы не указывать их прямым текстом в исходниках сценариев. Компонент PowerCLI credential store использует хранилище учетных записей, которое, в свою очередь, использует Windows data protection API для шифрования данных учетных записей и хранения их в файле. Поэтому PowerCLI credential store доступен только в Windows и не является кроссплатформенным. А что насчет пользователей Linux и MacOS?
Некоторое время назад Microsoft выпустила два полезных кроссплатформенных модуля SecretManagement и SecretStore (подробнее об этом тут). SecretManagement предоставляет командлеты, которые позволяют пользователям управлять паролями в различных хранилищах, а SecretStore - это, собственно, само хранилище и есть. Эти два модуля можно использовать вместо стандартного хранилища VICredential. Чтобы проиллюстрировать, как работать с ними, в VMware сделали пример модуля с разными версиями командлетов VICredential.
Первый шаг - это регистрация и конфигурация защищенного хранилища. В примере использования модуля, упомянутом выше, можно использовать Initialize-VISecret, который реализует эту процедуру - регистрирует SecretStore как хранилище по умолчанию и настраивает окружение так, чтобы пароль не запрашивался при доступе к хранилищу.
function Initialize-VISecret {
[CmdletBinding()]
param(
[string]$Vault = "VMwareSecretStore"
)
Этот режим по пользовательскому опыту близок к VICredentialStore, так как пароли хранятся в зашифрованном виде, но сам пароль при доступе к нему не запрашивается. В примере используется SecretStore по умолчанию, но можно изменить хранилище на любое по вашему выбору, а именно:
Чтобы сохранить креды в хранилище, нужно использовать командлет Set-Secret модуля SecretManagement. Сами креды в этом командлете идентифицируются по имени, но в примере ниже креды описываются двумя идентификаторами - имя пользователя и сервер, к которому нужно получить доступ. Такими образом, командлет New-VISecret склеивает строки "VISecret", сервер и имя пользователя в один идентификатор, который и используется для получения пароля.
Если вы хотите сохранить креды более чем для одного продукта, вы можете изменить функцию так, чтобы заменить VISecret на другую специфичную для продукта строку, чтобы создать идентификатор, например, "VMCSecret" для VMware Cloud. Можно передавать пароль простым текстом или в виде защищенной строки.
Также вы можете удалить креды из хранилища, используя командлет Remove-VISecret, который создает идентификатор и вызывает функцию Remove-Secret для удаления кредов. Если вы используете SecretStore в качестве хранилища, вы можете очистить его полностью с помощью функции Reset-SecretStore.
Создание нового идентификатора выглядит так:
function New-VISecret {
[CmdletBinding()]
[Alias("Set-VISecret")]
param (
[Parameter(Mandatory=$true)]
[string]$Server,
[Parameter(Mandatory=$true)]
[string]$User,
[string]$Password,
[securestring]$SecureStringPassword,
[string]$Vault
)
begin {
if ([string]::IsNullOrWhiteSpace($password) -and (-not $secureStringPassword)) {
Throw "Either Password or SecureStringPassword parameter needs to be specified"
}
if (-not [string]::IsNullOrWhiteSpace($password) -and $secureStringPassword) {
Throw "Password and SecureStringPassword parameters cannot be both specified at the same time"
}
}
process {
$params = @{
"Name" = "VISecret|"+$server+"|"+$User
}
if ($password) {
$params += @{"Secret" = $password}
} elseif ($secureStringPassword) {
$params += @{"SecureStringSecret" = $secureStringPassword}
} elseif ($Vault) {
$params += @{"Vault" = $Vault}
}
Set-Secret @params
}
}
Последний командлет в примере - это Connect-VIServerWithSecret. Он сочетает в себе оба командлета, приведенных выше, что дает интегрированный инструмент для работы по аналогии с командлетом Connect-VIServer для VICredentialStore. Вы можете вызвать Connect-VIServerWithSecret с логином и паролем, но использовать параметр -SaveCredentials для сохранения кредов в хранилище.
После этого вы можете опускать параметры учетной записи, а Connect-VIServerWithSecret будет автоматически получать пароль из хранилища и соединяться с сервером vCenter. При использовании VICredentialStore, если у вас сохранены креды только к одному серверу, вы можете соединяться с ним через Connect-VIServer без указания имени пользователя. А для использования функции Get-Secret параметр -Username является обязательным, так как не проверяется, что в хранилище сохранена только одна учетная запись. Чтобы упростить жизнь в этом случае есть глобальная переменная $global:defaultUser, значение которой и будет использоваться в Connect-VIServerWithSecret.
Некоторое время назад мы писали о том, что линейка продуктов VMware vRealize превратилась в VMware Aria, а решение vRealize Log Insight стало носить название Aria Operations for Logs. Напомним, что этот продукт представляет собой платформу для аналитики лог-файлов, мониторинга и решения проблем инфраструктуры в облаке.
Сегодня мы поговорим о том, как использовать API-вызовы в сценариях PowerCLI для выполнения операций в Aria Operations for Logs.
Итак, сначала вам нужно получить API-токен с портала Cloud Services Portal (CSP). Заходим в настройки аккаунта в раздел API Tokens и генерируем новый:
При создании токена нужно задать его имя, время жизни и к каким компонентам облачной инфраструктуры будут иметь доступ операции с использованием этого токена. Выбираем компонент vRealize Log Insight Cloud Admin и нажимаем Generate внизу экрана:
После этого появится всплывающее окно, где можно скопировать новый токен - его следует сохранить в безопасное место.
Теперь можно использовать сценарии PowervRLI. Сначала нужно установить командлеты из Powershell Gallery с помощью следующей команды (это можно также сделать и в офлайн режиме с помощью инструкций, доступных на GitHub):
После этого вам нужно ввести API-ключ токена, полученный из CSP, после выполнения команды Connect-vRLI-Cloud. Далее произойдет соединение с облачным инстансом Aria Logs:
Вы можете выполнить команду Get-AlertDefinitions для получения списка алертов Aria Logs, чтобы команда аудита имела возможность понимать, какие события могут происходить. Вывод можно экспортировать в файл, чтобы он был доступен членам команды.
Теперь выполним запрос через API, чтобы получить некоторые события из окружения Aira Logs. Запросы нужно писать в формате SQL, которые указываются в качестве переменной:
После этого будет сгенерирован вывод команды, который можно послать для ревью и анализа:
На этой неделе компания VMware выпустила обновление своего фрейморка для управления виртуальной инфраструктурой PowerCLI 13. Напомним, что о версии PowerCLI 12.7 мы писали в июле этого года вот тут.
Давайте посмотрим, что нового появилось в VMware PowerCLI 13:
1. Первая полностью кросс-платформенная версия
В тринадцатой версии PowerCLI был завершен переход к полной кросс-платформенности, который начался еще в 2018 году, когда Microsoft выпустила первую мультиплатформенную версию PowerShell. С тех времен множество модулей было портировано на другие платформы, и сейчас удалось достичь полного соответствия доступных командлетов на всех платформах.
Завершился этот процесс портированием последних двух модулей ImageBuilder и AutoDeploy, которые ранее были доступны только для Windows.
Так как Python требуется для ImageBuilder, команда PowerCLI решила его больше не включать в состав пакета, но теперь Python версии 3.7 является обязательным требованием для использования именно модуля ImageBuilder. Также вам потребуется установить и несколько дополнительных пакетов для Python (six, psutil, lxml, pyopenssl). В PowerCLI User’s Guide теперь есть инструкции о том, как установить все эти компоненты на поддерживаемых платформах.
Кроме того, в PowerCLI теперь есть настройка, которая указывает путь к инсталляции Python. Вы можете использовать следующую команду:
Set-PowerCLIConfiguration -PytonPath "<path to the Python installation>"
2. Обновление модуля VMware Cloud Director
Теперь в плане поддержки vCD в PowerCLI 13 было сделано несколько улучшений. Во-первых, появилась поддержка vCD 10.4, а также поддержка API-функций vCD 10.4 (API версии 37.0). Во-вторых, в некоторые командлеты были добавлены новые параметры и наборы параметров. Например, в командлете New-CIVM появился набор параметров, который позволяет создать пустую виртуальную машину, а также командлет New-OrgVdc с параметром -StorageProfile.
Также командлет Get-NetworkPool был расширен - теперь можно получать пулы для инсталляций NSX-T. Ну и некоторые API изменились - теперь вместо командлета Get/New/Set/Remove-OrgNetwork актуален командлет Get/New/Set/Remove-OrgVdcNetwork, который был добавлен уже достаточно давно.
3. Поддержка архитектуры VMware vSAN Express Storage Architecture (ESA)
Напомним, что в новой версии VMware vSAN 8 появилась новая архитектура Express Storage Architecture (ESA). Теперь было добавлено несколько новых командлетов (Get-VsanEsaEligibleDisk и Add/Get/Remove-VsanStoragePoolDisk), а также расширены некоторые уже существующие (New/Set-Cluster and Get-VsanClusterConfiguration), чтобы обеспечить поддержку vSAN ESA.
4. Обновления модуля NSX
Чтобы обеспечить пользователей информацией об использовании нового модуля NSX SDK в руководство owerCLI user’s guide была добавлена отдельная глава. Также в PowerCLI 13 был убран старый способ доступа к NSX API через командлеты Get-NsxtPolicyService, Get-NsxtGlobalManagerService и Get-VmcSddcNetworkService.
5. Улучшения поддержки HCX
В PowerCLI 13 появилось несколько новых возможностей в плане поддержки решения VMware HCX. Теперь модуль HCX позволяет включить seed checkpoint, а также смигрировать кастомные атрибуты виртуальных машин.
При апгрейде с прошлых версий на PowerCLI 13 через Update-Module вы можете столкнуться с ошибкой (подробнее тут). Это потому, что сертификаты для подписки модулей были изменены - они подписаны другим издателем. Чтобы обойти проблему, просто удалите старый модуль и переустановите его с помощью командлета Install-Module.
Скачать VMware PowerCLI 13 можно по этой ссылке (а Release Notes находятся здесь). Установка модуля происходит командой:
На днях компания VMware объявила о выпуске обновленной версии своего фреймворка для управления виртуальной инфраструктурой с помощью скриптов - PowerCLI 12.7. Напомним, что о прошлой версии PowerCLI 12.6 мы рассказывали вот тут.
Итак, давайте посмотрим на новые возможности PowerCLI 12.7:
1. Мультиплатформенный модуль VUM
Теперь модуль, предназначенный для обновлений компонентов виртуальной инфраструктуры, работает на платформах Linux и macOS, что очень давно просили пользователи. До этого момента оставалось только 2 модуля, которые не были портированы на эти ОС, теперь же PowerCLI стал полностью мультиплатформенным фреймворком (кстати, 40% всех его пользователей работают на Linux и macOS).
2. Улучшения модуля NSX
В PowerCLI 12.6 появился новый модуль NSX SDK, в этом же релизе для него появились функции поддержки последнего NSX API, включая удаленную аутентификацию в командлете Connect-NsxServer с использованием параметра -UseRemoteAuthentication. Также был улучшен механизм использования командлета Get-NsxOperation.
3. Новые параметры конфигурации кластера vSAN
Теперь для кластера vSAN можно установить пороговые значения для механизма health check, используя параметр -CapacityThreshold для командлетов Set-VsanClusterConfiguration и New-VsanHealthCheckThreshold. Например, так:
Также можно отключить/включить исторические данные vSAN health check, а также смонтировать/размонтировать датастор с другого кластера как удаленный датастор с помощью командлета Set-VsanClusterConfiguration.
Кроме перечисленного, в PowerCLI 12.7 появилось много небольших улучшений, таких как, например, увеличение производительности при работе с решениями SRM и HCX. Более подробный список улучшений приведен в Release Notes. Документация по работе с командлетами VMware PowerCLI 12.7 находится тут.
В апреле компания VMware выпустила обновление своего основного фреймворка для управления виртуальной инфраструктурой и ее компонентами из командной строки PowerCLI 12.6. О прошлой версии PowerCLI 12.5 мы писали в январе вот тут, а сегодня расскажем, что появилось нового в весеннем обновлении.
Основные улучшения и нововведения:
1. Байндинги PowerShell для интерфейсов NSX Policy Manager API.
Теперь появился новый модуль VMware.Sdk.Nsx.Policy, который реализует байндинг PowerShell для программных интерфейсов NSX Policy Manager API.
2. Новые командлеты для управления виртуальным модулем vCenter Server Appliance.
Теперь для управления резервными копиями vCenter Server Appliance можно использовать следующие командлеты:
New-ApplianceBackupJob - стартует задачу резервного копирования на уровне файлов vCenter Server на бэкап-сервер.
Wait-ApplianceBackupJob - мониторит прогресс задачи резервного копирования и возвращает в ApplianceBackupJob.
Get-ApplianceBackupJob - получает список завершенных или находящихся в исполнении задач резервного копирования.
Get-ApplianceBackupPart - получает список частей (parts), которые могут быть включены в задачу РК, а также их размер в резервной копии. Обязательные части всегда включаются в бэкап.
3. Поддержка SRM 8.5.
Модуль VMware.VimAutomation.Srm был обновлен и теперь поддерживает решение VMware Site Recovery Manager 8.5.
4. Исправления ошибок.
VMware приводит таблицу с багофиксами:
Product /Category
Cmdlet Name
Description
Status
HCX
New-HCXMigration
VM with multiple networks attached and if migration is triggered without mapping all the source networks to the target, the validation does not throw an error
Fixed
HCX
New-HCXMigration
Initiating a Non-Mobility migration using New-HCXMigration cmdlet does not show the network mapping in the migration dashboard UI
Fixed
vSAN
Get-VsanView
Get-VsanView throws ‘Object reference not set to an instance of an object.’ on PowerShell 7.2.2.
Fixed
HCX
Get-HCXVM
Get-HCXVM cmdlet throws “Unexpected character encountered while parsing value: <. Path ”, line 0, position 0..” when the number of VMs available in the inventory is very big
Fixed
HCX
Get-HCXMigration
Get-HCXMigration cmdlet throws an error if any of the migrations were triggered without providing the ‘TargetStorageProfile’ param
Fixed
Загрузить компоненты фреймворка VMware PowerCLI 12.6 можно по этой ссылке. Release notes доступны тут.
Некоторые из вас, вероятно, знают такой сайт virten.net, где в свое время публиковалось много интересных технических статей об инфраструктуре VMware. Автор этого ресурса делает много интересных вещей, например, средство PowerShell OVF Helper.
OVF Helper - это репозиторий шаблонов для развертывания ВМ из виртуальных модулей (Virtual Appliances) в формате OVF, которые основаны на рабочем процессе развертывания в мастере создания машин vSphere Client. Через OVF Helper вы таким же образом соединяетесь с vCenter Server, заполняете нужные переменные и выполняете сценарий развертывания. Это точно так же просто, как и при использовании vSphere Client, но плюс в том, что вы можете использовать этот сценарий повторно, не проходя вручную шаги мастера клиента vSphere.
Также настроенные параметры в скрипте будут вам отличным напоминанием о том, какую конфигурацию вы использовали для виртуальных модулей.
На данный момент доступны сценарии для следующих продуктов и их версий:
Также на странице PowerShell OVF Helper размещены ссылки на OVA-модули, которые рекомендуется использовать совместно с соответствующей версией сценария.
Кстати, обратите внимание на раздел Tools на сайте автора - там много чего интересного:
Компания VMware выпустила обновление главного фреймворка для управления виртуальной инфраструктурой с помощью командных сценариев - PowerCLI 12.4. Напомним, что в прошлый раз об обновлении этой платформы мы писали вот тут. В обновленной версии PowerCLI появилось несколько новых возможностей:
1. Новый API интерфейс - RestAPI
Раньше PowerCLI имел 2 основных пути коммуникации с vSphere API:
Get-View (SOAP API bindings)
Get-CISService (JSON-RPC)
Теперь новые PowerCLI API байндинги позволяют работать vSphere REST API и предоставляют практически нативный интерфейс PowerShell.
Модуль, реализующий эти функции, называется vSphere Automation API SDK. Чтобы начать использовать новые возможности через автоматизацию REST API, нужно скачать новую версию PowerCLI - пакет будет называться "VMware.Sdk.vSphere". Он содержит в себе субмодули для взаимодействия со всеми REST API, которые есть в VMware vSphere.
В REST API есть методы для исполнения API и работы со структурами данных, которые используются как входные параметры для API. Новые API байндинги предоставляют низкоуровневые PowerShell функции для работы со всеми этими методами и структурами.
Функция Invoke используется для исполнения методов REST, таких как GET/PUT/POST и DELETE:
Функция Initialize используется для создания структуры данных, которая будет передана к REST API. Например, так выглядит создание структуры "локальный аккаунт":
Раздел документации vSphere API Documentation был существенно обновлен - туда были добавлены примеры, показывающие вызов REST API через PowerCLI. Например, вот раздел Create Local Accounts.
2. Новый vSphere Management Module
Для управления платформой vSphere теперь появился новый модуль. Это модуль на базе PowerShell, для построения которого используется архитектура модулей vSphere Automation API SDK, о которой рассказано выше. На данный момент в модуле 6 командлетов, позволяющих управлять сертификатами (по ссылкам вы можете почитать о них):
Команда PowerCLI компании VMware на днях выпустила обновление средства vSphere Desired State Configuration (DSC) версии 2.2. Механизм DSC есть в экосистеме Windows, начиная еще с Windows Server 2012 R2. С помощью него можно мониторить и управлять конфигурациями систем посредством специальных конфигурационных файлов на базе PowerShell, которые имплементируются через движок Local Configuration Manager (LCM), который должен быть на каждом хосте.
У VMware этот механизм работает несколько иначе, в качестве LCM используется прокси-хост, поскольку LCM не запустить ни на vCenter Server Appliance, ни на ESXi:
Так работал механизм до текущего момента, когда пользователям приходилось разворачивать отдельную Windows-машину под LCM. Но теперь появился модуль VMware.PSDesiredStateConfiguration, который предоставляет пользователям набор командлетов, чтобы скомпилировать и исполнить конфигурацию DCS без использования DSC Local Configuration Manager. Это позволяет использовать как Windows, так и Linux-машину в качестве прокси.
При этом пользователям по-прежнему предоставляется возможность использовать как vSphereDSC с движком PowerShell LCM, так и модуль VMware.PSDesiredStateConfiguration.
Давайте посмотрим, что нового появилось в DCS версии 2.2:
1. Новые ресурсы PowerCLI модуля
Вот они:
DatastoreCluster - создание, изменение, апдейт или удаление Datastore cluster
3. Операция Install/Update для модуля VMware vSphereDSC
Установка модуля теперь делается так:
Install-Module -Name VMware.vSphereDSC
Обновление вот так:
Update-Module -Name VMware.vSphereDSC
4. Новый модуль VMware.PSDesiredStateConfiguration
Как было сказано выше, теперь вы можете использовать Windows или Linux-машину без LCM для использования механизма DCS. Установить модуль можно следующей командой:
Новый командлет New-VmwDscConfiguration создает объект VmwDscConfiguration, который содержит информацию о конфигурации. Эту конфигурацию можно задать в ps1-файле и передать ее данному командлету. Например:
С помощью vSphere Node можно указать объект VINode (сервер vCenter или хост ESXi) и применить соответствующую конфигурацию к нужному узлу vSphere. Это дает следующие возможности:
Персистентные сессии
Раньше для каждого подключения каждый ресурс требовал параметров учетной записи для установки сессии VISession. Теперь же если вы используете Vmware.PSDesiredStateConfiguration то можно создать персистентную VISession, которую можно использовать для всех ресурсов DCS.
Не нужны файлы MOF
Поскольку LCM теперь не используется, то и для командлета New-VmwDSCconfiguration они не требуются. Конфигурация может храниться в переменной, либо в ps1-файле.
Скачать VMware vSphere DSC 2.2 можно по этой ссылке.
На днях компания VMware выпустила обновления сразу трех интересных утилит для виртуальной инфраструктуры на сайте проекта VMware Labs. Давайте посмотрим, что там интересного.
Оно позволяет прочитать, сравнить и синхронизировать права доступа к объектам между экземплярами App Volumes на географически разделенных площадках. После аутентификации на обеих площадках вы сможете выбрать права доступа, которые надо сравнить или синхронизировать.
Из нового:
Можно получить версию App Volumes через API с возможностью получения номера билда
Версия App Volumes 2006 и более поздняя имела проблему с Entitlement Sync 4.0 при возвращении строкового значения
Скачать App Volumes Entitlement Sync 4.1 можно по этой ссылке. Напомним, что про предыдущую версию Entitlement Sync 4.0 мы рассказывали вот тут.
Напомним, что это средство позволяет отобразить сложное множество программных интерфейсов VMware vRealize Automation Cloud API в простой набор функций PowerShell.
Что появилось нового:
4 новых командлета для VMC (VMware Cloud)
5 новых командлетов для AWS
Поддержка Powershell 7 on Windows
Исправления ошибок
Скачать Power vRA Cloud 1.3 можно по этой ссылке. О возможностях версии 1.1 можно почитать у нас вот тут.
Некоторые из вас знают, что есть такое решение VMware vRealize Network Insight (vRNI), которое предназначено для мониторинга и защиты сетевой инфраструктуры виртуальной среды VMware vSphere.
Администраторам виртуальной инфраструктуры часто приходится делать копии различных ее управляющих компонентов, в том числе vRNI. Сейчас VMware рекомендует делать резервную копию конфигурации vRNI на уровне всей виртуальной машины (см. KB 55829). Рекомендуется выключить ВМ с vRNI, скопировать ее целиком, а потом включить снова - это единственный поддерживаемый способ на данный момент.
Martijn Smit опубликовал интересный пост о том, что на самом деле у vRNI есть способ резервного копирования и восстановления конфигурации через API, для которого есть специальный API endpoint по пути /settings/backup:
Если посмотреть внутрь, то там можно увидеть вполне работоспособный механизм бэкапа конфигурации vRNI:
Используя API endpoint /api/ni/settings/backup,вы можете создать резервную копию конфигурации vRNI и перенаправить ее по SSH или FTP на бэкап-сервер в виде tar-файла со следующим содержимым:
Большинство этих файлов человекочитаемы, если вы откроете их в текстовом редакторе. Там находятся копии настроек приложений, объектов pinboards, data sources, сохраненный поиск, системные настройки (Syslog, SMTP и т.п.), пользовательские конфигурации и многое другое.
Для работы с конфигурациями vRNI через API Martijn сделал модуль PowervRNI. Вот пример использования сценария резервного копирования:
Некоторым администраторам может понадобиться PowerCLI-сценарий, с помощью которого можно подсчитать число гостевых операционных систем в виртуальных машинах инфраструктуры VMware vSphere. Stuart в своем блоге рассказал про интересный скрипт, с помощью которого это можно сделать.
Начал он с того, что в переменную $server2012 он записал количество гостевых операционных систем определенного типа с помощью команды:
$server2012 = ((get-vm).extensiondata.guest | Where GuestFullName -eq "Microsoft Windows Server 2012 (64-bit)").count
Далее он стал думать, как сделать таблицу со всеми ОС, для этого решил создать хэш-таблицу, куда будут записываться типы гостевых ОС и их количество:
После этого он сделал скрипт, который собирает в таблицу типы гостевых ОС и увеличивает счетчик, если они встречаются среди виртуальных машин снова при прогоне цикла:
В этой таблице все в порядке, кроме последней строчки - в нее набиваются гостевые ОС, для которых тип не был обнаружен. Поэтому автор добавил следующие строчки с именами ВМ, чтобы добавить значение Unknown таким машинам:
# Added this to the beginning of the script
$NullOS = Get-Content C:\Scripts\Logs\Guestfullname.txt
# Added this to the foreach loop section
IF ($OSName -eq $NullOS){$OSName = "Unknown"}
В начале апреля компания VMware обновила свой основной фреймворк для управления виртуальной инфраструктурой с помощью командных сценариев PowerShell до версии PowerCLI 12.0. Напомним, что прошлая версия PowerCLI 11.5 вышла осенью прошлого года.
Давайте посмотрим, что нового появилось в двенадцатой версии фреймворка:
Добавлены командлеты для управления хостовой сетью ESXi
Еще в vSphere 6.0 появилась поддержка сетевых стеков хостов ESXi. Она позволяет назначить различные шлюзы для адаптеров VMkernel в целях маршрутизации трафика. Через PowerCLI можно использовать ESXCLI или API для управления этой функциональностью с помощью командлетов Get-VMHostNetworkStack и Set-VMHostNetworkStack. Новый параметр называется "NetworkStack", он был добавлен в командлет New-VMHostNetworkAdapter:
Добавлены командлеты для управления решением HCX
Появились новые командлеты для управления пространствами имен
Командлеты для управления службами Trusted Host Services
Командлеты для управления диском гостевой ОС виртуальных машин (VM Guest Disk management)
Теперь раздел гостевой ОС можно замапить на VMDK-диск (пока только для Windows-систем). Для этого потребуется vSphere 7 и VMware Tools не ниже 11-й версии. Эту возможность можно использовать с помощью командлета Get-VMGuestDisk:
Новые командлеты для управления VMware Cloud on AWS
Новые командлеты для vSAN:
Get-VsanFileServiceDomain
New-VsanFileServiceDomain
Set-VsanFileServiceDomain
Remove-VsanFileServiceDomain
New-VsanFileServiceIpConfig
Get-VsanFileShare
New-VsanFileShare
Set-VsanFileShare
Remove-VsanFileShare
New-VsanFileShareNetworkPermission
Add-VsanFileServiceOvf
Get-VsanFileServiceOvfInfo
Новый модуль для управления службами VMware Cloud Services
Добавлена поддержка vSphere 7.0
Добавлена поддержка vRealize Operations 8.0
Обновлена поддержка модулей License и vROps, а также командлета Open-VMConsoleWindow для использования на различных платформах
Поддержка Move-VM для сетей opaque networks
Добавлена поддержка последних обновлений PowerShell 7.0:
Скачать VMware PowerCLI 12.0 можно по этой ссылке. Полезные ресурсы:
В конце января мы писали о средстве Power vRA Cloud, которое позволяет отобразить сложное множество программных интерфейсов VMware vRealize Automation Cloud API в простой набор функций PowerShell. На днях вышло обновление этого PowerShell-модуля - Power vRA Cloud 1.1.
Помимо множества исправлений ошибок, в утилите появилось несколько новых командлетов:
Add-vRA-Project-Administrator
Add-vRA-Project-Member
Get-vRA-DeploymentFilters
Get-vRA-DeploymentFilterTypes
Get-vRA-FabricNetworksFilter
Get-vRA-FabricImagesFilter
Remove-vRA-Project-Administrator
Remove-vRA-Project-Member
Update-vRA-Project-ZoneConfig
Напомним, что этот модуль не поддерживается со стороны VMware (как и все утилиты на VMware Labs, находящиеся в статусе Tech Preview), поэтому используйте его осторожно.
Скачать Power vRA Cloud можно по этой ссылке. Документация по использованию данного средства скачивается вместе с самим модулем.
Cody Hosterman, известный своими заметками про PowerCLI, написал интересную статью о том, как запоминать дефолтные параметры на примере свойств соединения с дисковым массивом. Это может вам оказаться полезным, например, в случае если вы работаете с дисковым массивом в интерактивном режиме, при этом не хотите каждый раз указывать параметры соединения.
К примеру, при использовании модуля PureStorage.FlashArray.VMware есть возможность передавать параметры соединения, сохраненные в глобальной переменной $Global:DefaultFlashArray. Неудобство этого метода в том, что каждый раз вы должны указывать параметр -Array:
Поэтому в PowerCLI заложен отличный механизм дефолтных параметров для нужных вам командлетов. Например, можно создать переменную с параметрами соединения с массивом:
Далее можно записать эту переменную в дефолтные параметры:
$PSDefaultParameterValues = @{
"*-pfa*:Array"=$flashArray;
}
Это позволит для параметра, называющегося Array применять параметры соединения из переменной $flashArray. При этом эти параметры будут применяться только для командлетов, содержащих "-pfa" в своем названии (они есть только в модуле PureStoragePowerShellSDK).
Для всего модуля и всех командлетов нет простого способа задать дефолтные параметры, но можно получить в сценарии список всех доступных командлетов и для всех них прописать правило использования параметра -Array:
После этого вы сможете просто использовать командлеты без параметров, например, Get-PfaVolumes, чтобы получить все тома с заданного в дефолтном соединении массива:
Аналогично способ будет работать и для всех остальных параметров командлетов и любых других модулей.
На портале VMware Labs появилась очередная новинка - PowerShell-модуль Power vRA Cloud, с помощью которого можно отобразить сложное множество программных интерфейсов VMware vRealize Automation Cloud API в простой набор функций PowerShell. Поэтому с помощью данного средства можно разрабатывать сценарии по управлению облачной инфраструктурой VMware vRealize Automation Cloud с помощью PowerShell вместо прямой работы с API.
Сразу надо сказать, что этот модуль не поддерживается со стороны VMware (как и все утилиты на VMware Labs, находящиеся в статусе Tech Preview), поэтому используйте его осторожно.
После скачивания zip-файла с VMware Labs, распакуйте его и импортируйте модуль командой:
Import-Module .\PowervRACloud.psd1
Далее можно вывести список всех доступных функций:
Get-vRACloudCommands
Для соединения с инфраструктурой vRealize Automation используйте следующую команду (формируем токен как безопасную строку):
$APIToken = Read-Host -AsSecureString
Потом передаем этот API-токен при соединении:
Connect-vRA-Cloud -APIToken $APIToken
Ну а дальше можно использовать API, например, можно вывести аккаунты vRA командой:
Вчера мы писали об очередной новинке на VMware Labs, мобильном клиенте vSphere Mobile Client для iOS и Android, а сегодня расскажем еще об одной утилите - Virtual Machine Compute Optimizer. Это средство представляет собой PowerShell-сценарий для модуля PowerCLI VMware.VimAutomation.Core, который собирает информацию о хостах ESXi и виртуальных машинах в вашем виртуальном окружении и выдает отчет о том, правильно ли они сконфигурированы с точки зрения процессоров и памяти.
Для этого в отчете есть колонка VMCPUsOptimized, которая принимает значения Yes или No.
Далее также идут колонки, где показаны оптимальные количества сокетов и ядер для виртуальных машин, которые было бы неплохо сделать для текущей конфигурации (OptimalSockets и OptimalCores). Текущая конфигурация также представлена в колонках VMNumSockets и VMCoresPerSocket.
Назначения колонок представлены на картинке ниже:
Надо понимать, что VMCO анализирует вашу инфраструктуру только на базе рекомендаций для оптимальной конфигурации виртуальных машин без учета реальной нагрузки, которая исполняется внутри. Для такой задачи нужно средство для сайзинга посерьезнее - например, VMware vRealize Operations Manager.
Скрипт Virtual Machine Compute Optimizer можно запускать как минимум под аккаунтом с правами на чтение инфраструктуры vCenter. Скачать его по этой ссылке.
Мы часто пишем о томах VVols (Virtual Volumes), которые позволяют вынести часть нагрузки по обработке операций с хранилищами на сторону аппаратных устройств (они, конечно же, должны поддерживать эту технологию), что дает пользователям преимущества по сравнению с VMFS. В инфраструктуре VVols массив сам определяет, каким образом решать задачи доступа и организации работы с данными для виртуальных машин, выделяя для их объектов (виртуальные диски и прочее) отдельные логические тома (VVols).
Один из известных производителей, поддерживающих технологию VVols - это компания Pure Storage. Недавно Cody Hosterman написал статью о том, как подключить тома VVols в VMware vSphere через PowerCLI для хранилищ Pure Storage. Коди развивает свой модуль PowerShell, который называется PureStorage.FlashArray.VMware.
Давайте посмотрим, как он работает. Сначала можно почитать о доступных опциях командлета Mount-PfaVvolDatastore, с помощью которого можно сделать монтирование датастора VVol:
Командлет может делать следующее:
Проверяет, презентован ли protocol endpoint (PE) указанного массива кластеру. Если нет, то с его помощью можно сделать это.
Ресканирует кластер, чтобы убедиться, что PE виден хостам.
Монтирует VVol в кластере.
Возвращает датастор хранилищу.
Пример 1 - имеется прямой доступ к массиву
Соединяемся с vCenter и создаем соединение с FlashArray:
Значит тут мы полагаем, что администратор хранилищ уже настроил PE, и вам нужно только смонтировать том VVol:
Так как датастор VVol ранее не монтировался, нельзя просто создать array connection (нет доступа к массиву). В этом случае подойдет командлет Get-VasaStorageArray:
Передав в командлет монтирования массив FA-m50, имя кластера и имя датастора, можно смонтировать том VVol:
Те из вас, кто разрабатывает, дорабатывает и использует сценарии VMware PowerCLI, знает, что время от времени требуется использовать модуль какой-то конкретной версии, который идет в составе PowerCLI определенной версии. Это может быть из-за бага в новом пакете или несовместимости старых скриптов с новыми модулями.
Если вам нужно скачать нужный пакет из PowerShell Gallery, сделать это просто - там есть кнопка Manual Download:
Но есть и возможность напрямую установить модуль из галереи, используя команду:
Install-Module -Name VMware.PowerCLI
Но это команда установит только последнюю версию модуля, а на блоге VMware появилась интересная функция Save-PowerCLI, которая позволяет указать в параметре -RequiredVersion нужную версию и скачать ее с последующей установкой:
Больше пяти лет назад мы писали про проект vCenter Server Simulator 2.0 (VCSIM), который позволял протестировать основные интерфейсы VMware vCenter без необходимости его реального развертывания (а значит и без лицензии). Проблема в том, что он был выпущен для VMware vSphere и vCenter версий 5.5 и с тех пор не обновлялся.
Зато есть аналог старому VCSIM - новый проект govcsim, написанный на языке Go (Golang). Он точно так же умеет предоставлять API-ответы на вызовы к vCenter Server и ESXi.
Несмотря на то, что этот симулятор написан на Go, он позволяет вам работать с vCenter посредством любого языка и интерфейса, умеющего общаться через API (в том числе, PowerShell). То есть, вы можете соединиться через PowerCLI к VCSIM Docker Container и работать с ним как с сервером vCenter.
Сам контейнер nimmis/vcsim можно скачать отсюда. Pull-команда для него:
If ($PSVersionTable.PSVersion.Major -ge 6) {
Test-Connection $Server -TCPPort 443
}
Connect-VIServer -Server $Server -Port 443 -User u -Password p
# Did it work?
Get-VM
# Or Get-VMHost, or Get-Datastore, etc.
Этот код делает следующее:
Запускает docker-контейнер VCSIM локально (если у вас его нет, то он будет загружен).
На Windows-системе получает IP-адрес адаптера DockerNAT.
После запуска контейнера тестирует, что порт 443 отвечает.
Использует модуль VMware.PowerCLI интерфейса PowerShell для соединения с vCenter Simulator.
Симулятор на данный момент поддерживает не все множество API-методов (смотрите документацию). Вот так, например, можно вывести список всех поддерживаемых методов и типов:
$About = Invoke-RestMethod -Uri "https://$($Server):443/about" -Method Get
$About.Methods
$About.Types
Например, вы можете использовать PowerOffVM_Task, PowerOnMultiVM_Task и PowerOnVM_Task. Из PowerCLI попробуйте также протестировать командлеты Stop-VM и Start-VM. Ну а дальше изучайте документацию к библиотеке govmomi.
Давайте для начала разберёмся с терминологией. Что такое роли NSX-менеджера? Роли NSX-менеджера позволяют управлять правами доступа к объектам NSX с помощью присвоения той или иной роли отдельному пользователю или группе. В UI эти настройки находятся в Networking & Security -> System -> Users and Domains.
Уважаемые читатели! Некоторые из вас знают, что у нас на сайте есть цикл статей от Романа Гельмана, который разрабатывает различные функции своего PowerCLI-модуля Vi-Module. Они позволяют управлять многими аспектами виртуальной инфраструктуры VMware vSphere с помощью механизмов, недоступных в рамках стандартных средств управления.
Недавно Роман подал свой англоязычный блог ps1code.com на голосование по выбору лучшего блога о виртуализации Top vBlog 2018. И мы от лица всей редакции очень просим проголосовать за Романа - ведь его блог этого действительно достоин!
Спасибо вам заранее.
И вот статьи Романа на нашем ресурсе, чтобы вам удобнее было найти нужную функцию:
7 лет назад мы писали про утилиту ESXi-Customizer, которая позволяет добавлять кастомные драйвера в ISO-образ VMware ESXi. У того же автора (Andreas Peetz) есть еще одна замечательная утилита, которая актуальна и на сегодняшний день - ESXi-Customizer-PS. Актуальна - это значит, что ее последняя версия (от 18 апреля этого года) поддерживает последние версии платформ и фреймворка - vSphere 6.7 и PowerCLI 10.
ESXi-Customizer-PS - это PowerShell-скрипт, который на входе принимает большое число различных параметров, а на выходе дает кастомизированный ISO-образ или офлайн-бандл ESXi:
Сценарий имеет три режима работы:
Создать установочный образ ISO или Offline Bundle напрямую из хранилища VMware Online depot (стандартный режим).
Создать установочный образ ISO или Offline Bundle из скачанного ESXi Offline Bundle (параметр -izip).
Обновление локального ESXi Offline Bundle с помощью ESXi patch bundle из хранилища VMware Online depot (параметры -izip -update).
С помощью этих трех режимов вы можете добавлять бандлы из хранилища V-Front Online Depot, либо любого другого Online Depot, указав его URL, а также можно указывать локальные Offline Bundles и VIB-файлы (собственно, кастомные драйверы или кастомный софт под ESXi).
Об использовании утилиты ESXi-Customizer-PS Alex Lopez снял хороший видеотуториал:
Скрипт можно использовать множеством способов. Давайте рассмотрим основные:
1. Вызов скрипта без параметров.
Например:
.\ESXi-Customizer-PS-v2.6.0.ps1
В этом случае утилита создаст ISO-образ ESXi самой последней версии (6.7 на данный момент) и с самым последним уровнем обновлений. Вы также можете указать конкретный номер версии ESXi, для которой будет получен ISO с последними обновлениями. Например:
-v50 : ESXi 5.0 ISO
-v51 : ESXi 5.1 ISO
-v55 : ESXi 5.5 ISO
-v60 : ESXi 6.0 ISO
-v65 : ESXi 6.5 ISO
-v67 : ESXi 6.7 ISO
Также есть еще три параметра:
-outDir : записывать ISO-образ в указанную директорию.
-sip : не использует последний уровень патчей, а показывает меню, где можно выбрать конкретный патч. Новые патчи будут показаны сверху. Также будут показаны и профили, которые содержат только обновления безопасности и/или VMware Tools.
-ozip : на выходе будет сформирован не ISO, а ESXi Offline Bundle, который можно импортировать в Update Manager, указать вручную для обновления черезesxcli или использовать как входной бандл для следующих кастомизаций.
2. Использование офлайн бандла ESXi Offline Bundle как входного параметра (вместо VMware Online depot).
Например, такая команда позволит вам получить ISO-образ из офлайн-бандла:
Офлайн бандл можно скачать через VMware Patch Download portal. Некоторые вендоры также предлагают свои кастомизированные офлайн-бандлы, например HP. Офлайн бандлы VMware можно найти вот тут. Также вы можете использовать параметры из пункта 1.
3. Добавление дополнительных пакетов из присоединенных хранилищ Online depots.
Например, вот эта команда позволит добавить сетевые драйверы, отсутствующие в образе ESXi 5.5:
Данные драйверы есть в VMware Online depot, так как они есть в составе ESXi 5.0 и 5.1, но были исключены из дистрибутива ESXi 5.5. Важно, что для ESXi 6.0 такая штука для этих драйверов уже не прокатит, так как они были добавлены в черный список (blacklised).
4. Присоединение онлайн-хранилища V-Front Online Depot и других хранилищ.
Здесь надо не забывать указывать номер версии патчируемого гипервизора (в данном случае -v60 - это ESXi 6.0).
7. Расширенные параметры.
У утилиты есть еще несколько расширенных параметров, которые дают еще больше возможностей по кастомизации образов ESXi:
-log : указание пути к кастомному лог-файлу.
-test : тестирование возможности построения или обновления образа без накатывания реальных изменений. Экономит массу времени, так как не перестраивает ISO или zip, а также не качает обновления и образы из VMware Online depot.
-nsc : это опция -noSignatureCheck, которая отключает проверку сигнатуры при выполнении функции экспорта. Ее нужно использовать, если вы получаете ошибку типа "Could not find trusted signer." (пакет с некорректными или отсутствующими сигнатурами).
-ipname, -ipdesc, -ipvendor: задание собственных атрибутов в профиле образа. По умолчанию в имени и описании останутся прежние значения с приставкой "customized", а имя вендора не изменится.
-remove vib1[,...]: удаление одного или нескольких VIB-пакетов из кастомного образа.
Скачать ESXi-Customizer-PS-v2.6.0.ps1 можно по этой ссылке.
Недавно я начал своё знакомство с Nutanix и первым делом скачал и опробовал NutanixCmdlets PowerShell Snap-in. Сразу выяснилось, что набор командлетов далеко не полный, и многого не хватает. Тут же созрело решение создать вспомогательный Power-NTNX модуль как в своё время я сделал Vi-Module для VMware. Модуль будет обновляться и пополняться по мере возможности и надобности, и с каждой новой функцией будет выходить статья. Уже сегодня есть задумки на 3-4 функции. И первой функцией будет Wait-NTNXTask.
На днях компания VMware начала тестировать новую версию своего фреймворка для управления виртуальной инфраструктурой и выпустила VMware PowerCLI Beta.
Как вы помните, в конце 2016 года VMware на сайте проекта VMware Labs опубликовала утилиту PowerCLI Core, которая позволяет пользователям применять те же самые командлеты PowerCLI на системах Linux, Mac и Docker, которые ранее были доступны только для Windows.
В новой бета-версии PowerCLI эта утилита будет не нужна, так как теперь PowerCLI будет работать на всех платформах в рамках единого пакета, а из состава продукта для платформ Linux и MacOS уйдет слово "Core". На данный момент эта бета была протестирована на следующих платформах:
Windows
CentOS 7 (тестирование еще в процессе)
Ubuntu 16.04
MacOS 10.12
В этой бета-версии на все платформы были портированы следующие модули:
VMware.VimAutomation.Sdk
VMware.VimAutomation.Common
VMware.VimAutomation.Core
VMware.VimAutomation.Vds
VMware.VimAutomation.Cis.Core
VMware.VimAutomation.Nsxt
VMware.VimAutomation.Vmc
VMware.VimAutomation.Storage
VMware.VimAutomation.StorageUtil
Для MacOS и Linux вы увидите только перечисленные модули, остальные пока не доступны. Устанавливать их нужно так:
Более подробную информацию о VMware PowerCLI Beta можно получить вот тут. Ну и вам надо знать, что бета работает только на PowerShell Core v6.0.1 (на версии 6.0.0 работать не будет).
Известный своими скриптами блоггер Luc Dekens (LucD) опубликовал интересный сценарий PowerCLI для виртуальной инфраструктуры VMware vSphere, который позволяет вычистить права доступа на объекты, для которых уже существуют права на уровне родительских объектов.
Например, у вас есть такая картина:
Соответственно, нам нужно почистить пермиссии в папке Test1131 для пользователя Local\test, чтобы разрешения остались только на уровне родительского объекта Test1 (там, как мы видим, установлена опция применения разрешений вниз к дочерним объектам).
Собственно, сам скрипт:
<#
.SYNOPSIS
Find and remove redundant permissions on vSphere objects
.DESCRIPTION
The function will recursively scan the permissions on the
inventory objects passed via the Entity parameter.
Redundant permissions will be removed.
.NOTES
Author: Luc Dekens
.PARAMETER Entity
One or more vSphere inventory objects from where the scan
shall start
.EXAMPLE
PS> Optimize-Permission -Entity Folder1 -WhatIf
.EXAMPLE
PS> Optimize-Permission -Entity Folder?
.EXAMPLE
PS> Get-Folder -Name Folder* | Optimize-Permission
#>
[cmdletbinding(SupportsShouldProcess=$true)]
param(
[parameter(ValueFromPipeline)]
[PSObject[]]$Entity
)
Begin{
function Optimize-iVIPermission{
[cmdletbinding(SupportsShouldProcess=$true)]
param(
[parameter(ValueFromPipeline)]
[VMware.Vim.ManagedObjectReference]$Entity,
[VMware.Vim.Permission[]]$Permission = $null
)
Process{
$entityObj = Get-View -Id $Entity
$removePermission = @()
$newParentPermission = @()
if($Permission){
foreach($currentPermission in $entityObj.Permission){
foreach($parentPermission in $Permission){
if($parentPermission.Principal -eq $currentPermission.Principal -and
$parentPermission.RoleId -eq $currentPermission.RoleId){
$removePermission += $currentPermission
break
}
else{
$newParentPermission += $currentPermission
}
}
}
}
else{
$newParentPermission += $entityObj.Permission
}
if($removePermission){
if($pscmdlet.ShouldProcess("$($entityObj.Name)", "Cleaning up permissions")){
$removePermission | %{
$authMgr.RemoveEntityPermission($Entity,$_.Principal,$_.Group)
}
}
}
$Permission += $newParentPermission
if($entityObj.ChildEntity){
$entityObj.ChildEntity | Optimize-iVIPermission -Permission $Permission
}
}
}
}
Process{
foreach($entry in $Entity){
if($entry -is [System.String]){
$entry = Get-Inventory -Name $entry
}
Optimize-iVIPermission -Entity $entry.ExtensionData.MoRef
}
}
}
Скрипт работает так, что пробегается по дереву объектов, обнаруживает избыточные разрешения и удаляет их. У скрипта есть удобный параметр WhatIf, который выводит операции по очистке разрешений, которые как бы применяются к дочерним объектам, но на самом деле не применяет их:
Optimize-VIPermission -Entity Test1 -WhatIf
Результатом будет список объектов, где разрешения будут очищены, в данном случае, если посмотреть на пример выше, это будет папка Test1131:
Можно запустить скрипт и на 2 папки сразу:
Optimize-VIPermission -Entity Test1,Test2 -WhatIf
Результат будет таким (в папке Test22 также есть дублирующиеся разрешения):
Также можно использовать и конструкции с масками, например:
Теперь неплохо было бы, если бы кто-то написал GUI к этой штуке, а также добавил туда функции поиска и удаления произвольных разрешений в выбранных объектах.
Как часто вам приходится увеличивать логические диски внутри гостевых ОС ВМ? Довольно часто, не так ли? Вам надо сначала найти вашу ВМ в vSphere Client, потом кликнуть Edit Settings и перво-наперво увеличить виртуальный диск ВМ. После вы должны будете открыть RDP к вашей ВМ, затем открыть Disk Management, выбрать Rescan Disks из контекстного меню и только после этого ещё один правый клик на нужном вам логическом диске и вот сейчас выбрать Extend Volume...