Развертывание Облачные службы (расширенная поддержка) с помощью Azure PowerShell
В этой статье показано, как использовать модуль Azure PowerShell Az.CloudService для создания развертывания Azure Облачные службы (расширенная поддержка), имеющего несколько ролей (WebRole и WorkerRole).
Необходимые компоненты
Выполните следующие действия в качестве необходимых компонентов для создания развертывания с помощью Azure PowerShell.
Просмотрите предварительные требования развертывания для Облачные службы (расширенная поддержка) и создайте необходимые ресурсы.
Установите модуль Az.CloudService PowerShell:
Install-Module -Name Az.CloudService
Создание группы ресурсов Этот шаг необязателен, если вы используете существующую группу ресурсов.
New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US”
Создайте учетную запись хранения и контейнер в Azure для хранения файла пакета (CSPKG или .zip) файла и конфигурации (CSCFG) для развертывания Облачные службы (расширенная поддержка). Необходимо использовать уникальное имя для имени учетной записи хранения. Этот шаг необязателен, если вы используете существующую учетную запись хранения.
$storageAccount = New-AzStorageAccount -ResourceGroupName “ContosOrg” -Name “contosostorageaccount” -Location “East US” -SkuName “Standard_RAGRS” -Kind “StorageV2” $container = New-AzStorageContainer -Name “contosocontainer” -Context $storageAccount.Context -Permission Blob
Развертывание Облачных служб (расширенная поддержка)
Чтобы развернуть Облачные службы (расширенная поддержка), используйте любой из следующих параметров командлета PowerShell:
Быстрое создание развертывания с помощью учетной записи хранения
- Этот параметр задает входные данные файла пакета (CSPKG или .zip), файла конфигурации (CSCFG) и файла определения (CSDEF) для развертывания в качестве входных данных с учетной записью хранения.
- Командлет создает профиль роли Облачные службы (расширенная поддержка), сетевой профиль и профиль ОС с минимальными входными данными.
- Чтобы ввести сертификат, необходимо указать имя хранилища ключей. Отпечаток сертификата в хранилище ключей проверяется в соответствии с сертификатами, указанными в файле конфигурации (CSCFG) для развертывания.
Быстрое создание развертывания с помощью URI подписанного URL-адреса
- Этот параметр задает входной код ресурса (SAS) URI пакета (CSPKG или .zip) с локальными путями к файлу конфигурации (CSCFG) и определению (CSDEF). Входные данные учетной записи хранения не требуются.
- Командлет создает профиль роли облачной службы, сетевой профиль и минимальные входные данные профиля ОС.
- Чтобы ввести сертификат, необходимо указать имя хранилища ключей. Отпечаток сертификата в хранилище ключей проверяется в соответствии с сертификатами, указанными в файле конфигурации (CSCFG) для развертывания.
Создание развертывания с помощью профиля роли, профиля ОС, сетевого профиля и профиля расширения с url-адресами подписи общего доступа
- Этот параметр задает входные коды URI SAS пакета (CSPKG или .zip) файла и конфигурации (CSCFG).
- Необходимо указать объекты профиля: профиль роли, сетевой профиль, профиль ОС и профиль расширения. Профили должны соответствовать значениям, заданным в файле конфигурации (CSCFG) и определении (CSDEF).
Быстрое создание развертывания с помощью учетной записи хранения
Создайте развертывание Облачные службы (расширенная поддержка) с помощью файла пакета (CSPKG или .zip), файла конфигурации (CSCFG) и файлов определения (CSDEF):
$cspkgFilePath = "<Path to .cspkg file>"
$cscfgFilePath = "<Path to .cscfg file>"
$csdefFilePath = "<Path to .csdef file>"
# Create a Cloud Services (extended support) deployment
New-AzCloudService
-Name "ContosoCS" `
-ResourceGroupName "ContosOrg" `
-Location "EastUS" `
-ConfigurationFile $cscfgFilePath `
-DefinitionFile $csdefFilePath `
-PackageFile $cspkgFilePath `
-StorageAccount $storageAccount `
[-KeyVaultName <string>]
Быстрое создание развертывания с помощью URI SAS
Отправьте файл пакета (CSPKG или .zip) для развертывания в учетную запись хранения:
$tokenStartTime = Get-Date $tokenEndTime = $tokenStartTime.AddYears(1) $cspkgBlob = Set-AzStorageBlobContent -File “./ContosoApp/ContosoApp.cspkg” -Container “contosocontainer” -Blob “ContosoApp.cspkg” -Context $storageAccount.Context $cspkgToken = New-AzStorageBlobSASToken -Container “contosocontainer” -Blob $cspkgBlob.Name -Permission rwd -StartTime $tokenStartTime -ExpiryTime $tokenEndTime -Context $storageAccount.Context $cspkgUrl = $cspkgBlob.ICloudBlob.Uri.AbsoluteUri + $cspkgToken $cscfgFilePath = "<Path to cscfg file>" $csdefFilePath = "<Path to csdef file>"
Создайте развертывание Облачные службы (расширенная поддержка) с помощью файла SAS (CSPKG или .zip) файла конфигурации (CSCFG) и определения (CSDef):
New-AzCloudService -Name "ContosoCS" ` -ResourceGroupName "ContosOrg" ` -Location "EastUS" ` -ConfigurationFile $cspkgFilePath ` -DefinitionFile $csdefFilePath ` -PackageURL $cspkgUrl ` [-KeyVaultName <string>]
Создание развертывания с помощью объектов профиля и URI SAS
Отправьте файл конфигурации Облачные службы (расширенная поддержка) (CSCFG) в учетную запись хранения:
$cscfgBlob = Set-AzStorageBlobContent -File “./ContosoApp/ContosoApp.cscfg” -Container contosocontainer -Blob “ContosoApp.cscfg” -Context $storageAccount.Context $cscfgToken = New-AzStorageBlobSASToken -Container “contosocontainer” -Blob $cscfgBlob.Name -Permission rwd -StartTime $tokenStartTime -ExpiryTime $tokenEndTime -Context $storageAccount.Context $cscfgUrl = $cscfgBlob.ICloudBlob.Uri.AbsoluteUri + $cscfgToken
Отправьте файл пакета Облачные службы (расширенная поддержка) (CSPKG или .zip) в учетную запись хранения:
$tokenStartTime = Get-Date $tokenEndTime = $tokenStartTime.AddYears(1) $cspkgBlob = Set-AzStorageBlobContent -File “./ContosoApp/ContosoApp.cspkg” -Container “contosocontainer” -Blob “ContosoApp.cspkg” -Context $storageAccount.Context $cspkgToken = New-AzStorageBlobSASToken -Container “contosocontainer” -Blob $cspkgBlob.Name -Permission rwd -StartTime $tokenStartTime -ExpiryTime $tokenEndTime -Context $storageAccount.Context $cspkgUrl = $cspkgBlob.ICloudBlob.Uri.AbsoluteUri + $cspkgToken
Создайте виртуальную сеть и подсеть. Этот шаг необязателен, если используется существующая сеть и подсеть. В этом примере используется одна виртуальная сеть и подсеть для обеих ролей Облачные службы (расширенная поддержка) (WebRole и WorkerRole).
$subnet = New-AzVirtualNetworkSubnetConfig -Name "ContosoWebTier1" -AddressPrefix "10.0.0.0/24" -WarningAction SilentlyContinue $virtualNetwork = New-AzVirtualNetwork -Name “ContosoVNet” -Location “East US” -ResourceGroupName “ContosOrg” -AddressPrefix "10.0.0.0/24" -Subnet $subnet
Создайте общедоступный IP-адрес и задайте значение метки DNS для общедоступного IP-адреса. Облачные службы (расширенная поддержка) поддерживает только Общедоступный IP-адрес SKU уровня "Базовый". Общедоступные IP-адреса SKU уровня "Стандартный" не работают с Облачные службы (расширенная поддержка).
При использовании статического IP-адреса необходимо ссылаться на него как зарезервированный IP-адрес в файле конфигурации (CSCFG) для развертывания.
$publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic
Создайте объект профиля сети и свяжите общедоступный IP-адрес с внешним интерфейсом подсистемы балансировки нагрузки. Платформа Azure автоматически создает классический ресурс подсистемы балансировки нагрузки SKU в той же подписке, что и ресурс Облачные службы (расширенная поддержка). Подсистема балансировки нагрузки — это ресурс только для чтения в Azure Resource Manager. Ресурсы можно обновить только с помощью файла конфигурации Облачные службы (расширенная поддержка) (CSCFG) и файла развертывания (CSDEF).
$publicIP = Get-AzPublicIpAddress -ResourceGroupName ContosOrg -Name ContosIp $feIpConfig = New-AzCloudServiceLoadBalancerFrontendIPConfigurationObject -Name 'ContosoFe' -PublicIPAddressId $publicIP.Id $loadBalancerConfig = New-AzCloudServiceLoadBalancerConfigurationObject -Name 'ContosoLB' -FrontendIPConfiguration $feIpConfig $networkProfile = @{loadBalancerConfiguration = $loadBalancerConfig}
Создайте хранилище ключей. В хранилище ключей хранятся сертификаты, связанные с ролями Облачные службы (расширенная поддержка). Хранилище ключей должно находиться в том же регионе и подписке, что и развертывание Облачные службы (расширенная поддержка) и иметь уникальное имя. Дополнительные сведения см. в статье "Использование сертификатов с Облачные службы (расширенная поддержка)".
New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US”
Обновите политику доступа к хранилищу ключей и предоставьте разрешения сертификата учетной записи пользователя:
Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -EnabledForDeployment Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -UserPrincipalName 'user@domain.com' -PermissionsToCertificates create,get,list,delete
Кроме того, задайте политику доступа с помощью
ObjectId
значения. Чтобы получить значение, выполните следующуюObjectId
командуGet-AzADUser
:Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete
В следующем примере в хранилище ключей добавляется самозаверяющий сертификат. Необходимо добавить отпечаток сертификата с помощью файла конфигурации (CSCFG) для ролей Облачные службы (расширенная поддержка).
$Policy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName "CN=contoso.com" -IssuerName "Self" -ValidityInMonths 6 -ReuseKeyOnRenewal Add-AzKeyVaultCertificate -VaultName "ContosKeyVault" -Name "ContosCert" -CertificatePolicy $Policy
Создайте объект профиля ОС в памяти. Профиль ОС указывает сертификаты, связанные с ролями Облачные службы (расширенная поддержка), который является сертификатом, созданным на предыдущем шаге.
$keyVault = Get-AzKeyVault -ResourceGroupName ContosOrg -VaultName ContosKeyVault $certificate = Get-AzKeyVaultCertificate -VaultName ContosKeyVault -Name ContosCert $secretGroup = New-AzCloudServiceVaultSecretGroupObject -Id $keyVault.ResourceId -CertificateUrl $certificate.SecretId $osProfile = @{secret = @($secretGroup)}
Создайте профиль роли в памяти. Профиль роли определяет свойства SKU роли, такие как имя, емкость и уровень. В этом примере определены две роли: frontendRole и backendRole. Сведения о профиле роли должны соответствовать конфигурации роли, определенной в файле конфигурации развертывания (CSCFG) и файле определения (CSDEF).
$frontendRole = New-AzCloudServiceRoleProfilePropertiesObject -Name 'ContosoFrontend' -SkuName 'Standard_D1_v2' -SkuTier 'Standard' -SkuCapacity 2 $backendRole = New-AzCloudServiceRoleProfilePropertiesObject -Name 'ContosoBackend' -SkuName 'Standard_D1_v2' -SkuTier 'Standard' -SkuCapacity 2 $roleProfile = @{role = @($frontendRole, $backendRole)}
(Необязательно) Создайте объект профиля расширения в памяти для добавления в развертывание Облачные службы (расширенная поддержка). В этом примере добавляется расширение протокола удаленного рабочего стола (RDP):
$credential = Get-Credential $expiration = (Get-Date).AddYears(1) $rdpExtension = New-AzCloudServiceRemoteDesktopExtensionObject -Name 'RDPExtension' -Credential $credential -Expiration $expiration -TypeHandlerVersion '1.2.1' $storageAccountKey = Get-AzStorageAccountKey -ResourceGroupName "ContosOrg" -Name "contosostorageaccount" $configFile = "<WAD public configuration file path>" $wadExtension = New-AzCloudServiceDiagnosticsExtension -Name "WADExtension" -ResourceGroupName "ContosOrg" -CloudServiceName "ContosCS" -StorageAccountName "contosostorageaccount" -StorageAccountKey $storageAccountKey[0].Value -DiagnosticsConfigurationPath $configFile -TypeHandlerVersion "1.5" -AutoUpgradeMinorVersion $true $extensionProfile = @{extension = @($rdpExtension, $wadExtension)}
Файл конфигурации (CSCFG) должен содержать только
PublicConfig
теги и должен содержать пространство имен, как показано в следующем примере:<?xml version="1.0" encoding="utf-8"?> <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> ............... </PublicConfig>
(Необязательно) В хэш-таблице PowerShell можно определить теги для добавления в развертывание:
$tag=@{"Owner" = "Contoso"}
Создайте развертывание Облачные службы (расширенная поддержка) с помощью определенных объектов профиля и URI SAS:
$cloudService = New-AzCloudService ` -Name “ContosoCS” ` -ResourceGroupName “ContosOrg” ` -Location “East US” ` -PackageUrl $cspkgUrl ` -ConfigurationUrl $cscfgUrl ` -UpgradeMode 'Auto' ` -RoleProfile $roleProfile ` -NetworkProfile $networkProfile ` -ExtensionProfile $extensionProfile ` -OSProfile $osProfile ` -Tag $tag
Связанный контент
- Просмотрите часто задаваемые вопросы об Облачных службах (расширенная поддержка)
- Разверните Облачные службы (расширенную поддержку) с помощью портал Azure, шаблона ARM или Visual Studio.
- Перейдите в репозиторий примеров для Облачных служб (расширенная поддержка).