Windows Azure Pack Tenant Public API
Windows Azure Pack предоставляет поддержку Powershell. Это позволяет тенантам использовать не портал, а PowerShell. Для чего это может понадобиться? Например, тестирование билдов или просто автоматизация процессов.
Нам потребуется:
Роль Tenant Public API предоставляется непосредственно тенанту и должна находиться в DMZ. Обычно данную роль устанавливают на сервер WAP Tenant Site. Tenant Public API использует SLL и нуждается в отдельном endpoint’е. Для расположения её на сервере с Tenant Site необходимо воспользоваться функцией Host Headers (новая функция IIS 8.5). В посте про ADFS и WAP я уже описывал эту процедуру.
Подготовка сервиса
По умолчанию Tenant Public API “висит” на порте 30006, это, конечно, не очень удобно.
Для начала перенастроим привязку сайта в IIS Manager, при желании так же можно создать в DNS запись и сделать отдельный endpoint для API.
После этого необходимо изменить запись в базе данных WAP
Set-MgmtSvcFqdn –Namespace TenantPublicAPI –FQDN “api.tailspintoys.com” –Connectionstring “Data Source=wap-sql-01;Initial Catalog=Microsoft.MgmtSvc.Store;User Id=sa;Password=пароль” –Port 443
Подготовка клиента
Запустите WPI и установите “Windows Azure PowerShell”. На моей системе (8.1 enterprise) WPI скачал 111мб, в интернете говорят что на серверные системы он качает всего ~10 мб. 😉 Оставим это на совести MSFT.
WAP API использует аутентификацию по сертификатам. Портал генерирует сертификат для каждой подписки и хранит данные в БД. При аутентификации он сверяет ключи сертификатовю. Проверить сгенерированы ли ключи можно на портале.
Если у Вас нет сгенерированных сертификатов необходимо пройти по ссылке https://manage.tailspintoys.com/publishsettings
Проверяем портал, на портале появился наш сертификат
После этого необходимо импортировать сертификат (запустив Windows Azure Powershell)
Import-WAPackPublishSettingsFile ”путь к скачанному файлу”
На данный момент все настроено.
Примеры использования
Get-WAPackVM - “получить” виртуальные машины;
Get-WAPackVNet - ”получить” виртуальные сети;
Get-WAPackVMTemplate - “получить” шаблоны standalone виртуальных машин;
Ну и в целом Get-Command *WAPack* очень помогает. 😉
Создаем Standalone виртуальную машину
$VM = “Имя виртуальной машины”
$Template = Get-WAPackVMTemplate -Name “Имя шаблона виртуальной машины”
$VNet = Get-WAPackVNet -Name “hypervnu_network”
$pwd = Get-Credential
New-WAPackVM -Name $VM -Template $Template -VNet $VNet -VMCredential $pwd -Windows
Управляем машиной
Get-WAPackVM -Name “Имя виртуальной машины” | Start-WAPackVM |
Get-WAPackVM -Name “Имя виртуальной машины” | Stop-WAPackVM |
Get-WAPackVM -Name “Имя виртуальной машины” | Remove-WAPackVM |
В WAPack Powershell пока еще нет командлетов для VM Roles, это можно обойти конвертировав запрос в JSON и передав на портал. Подробнее описано на технете сотрудником MSFT.
Troubleshooting
Для того чтобы “обнулить” конфигурацию
-
Сотрите сертификаты на портале
-
Удалите сертификаты с локальной машины из хранилища пользователя
-
Удалите WindowsAzureProfile.xml в папке %appdata%Windows Azure PowerShell
-
Заново сгенерируйте сертификаты и импортируйте их.
Если при попытке выполнить команду Вы получаете сообщение в духе “The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.” Проверьте сертификат endpoint’а Tenant API (он должен быть доверенным).
Если Вы не можете развернуть машину, проверьте работает ли API в принципе, выполните какую-либо Get команду, например Get-WAPackVM;
Проверьте не совпадает ли имя разворачиваемой машины с уже существующей на портале машиной (в вашей подписке);
Если Вы разворачиваете роль виртуальной машины проверьте правильно ли Вы указали переменные для роли;
Если Вы разворачиваете роль виртуальной машины проверьте правильно ли Вы мапите параметры из powershell в JSON.