Поделиться через


Разверните облачные службы (расширенная поддержка) с помощью Azure PowerShell

Это важно

По состоянию на 31 марта 2025 г. облачные службы (расширенная поддержка) устарели и будут полностью прекращены 31 марта 2027 г. Узнайте больше об этом отказе и о том, как осуществить миграцию.

В этой статье показано, как использовать модуль Az.CloudService Azure PowerShell для создания развертывания Облачных служб Azure (расширенная поддержка), включающего несколько ролей (WebRole и WorkerRole).

Предварительные условия

Выполните следующие действия в качестве необходимых компонентов для создания развертывания с помощью Azure PowerShell.

  1. Просмотрите предварительные требования развертывания для Облачные службы (расширенная поддержка) и создайте необходимые ресурсы.

  2. Установите модуль Az.CloudService PowerShell:

    Install-Module -Name Az.CloudService 
    
  3. Создание группы ресурсов Этот шаг необязателен, если вы используете существующую группу ресурсов.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Создайте учетную запись хранения и контейнер в 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) для развертывания в качестве входных данных с учетной записью хранения.
    • The cmdlet creates the Cloud Services (extended support) role profile, network profile, and OS profile with minimal input.
    • Чтобы ввести сертификат, необходимо указать имя хранилища ключей. Отпечатки сертификатов в хранилище ключей проверяются на соответствие сертификатам, указанным в файле конфигурации (.cscfg) для развертывания.
  • Quick-create a deployment by using a shared access signature URI

    • Этот параметр задает URI общего ключа доступа (SAS) для пакетного файла (.cspkg или .zip) с локальными путями к файлу конфигурации (.cscfg) и файлу определения (.csdef). Входные данные учетной записи хранения не требуются.
    • Команда cmdlet создает профиль роли облачной службы, сетевой профиль и минимальные входные данные профиля операционной системы.
    • Чтобы ввести сертификат, необходимо указать имя хранилища ключей. Отпечатки сертификатов в хранилище ключей проверяются на соответствие сертификатам, указанным в файле конфигурации (.cscfg) для развертывания.
  • Создайте развертывание с помощью профиля роли, профиля ОС, сетевого профиля и профиля расширения с URI подписи общего доступа

    • Этот набор параметров задает SAS URI для входных файлов пакета (.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>]

Quick-create a deployment by using an SAS URI

  1. Отправьте файл пакета (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>"
    
  2. Create the Cloud Services (extended support) deployment by using the package (.cspkg or .zip) file, configuration (.cscfg) file, and definition (.csdef) file SAS URI:

    New-AzCloudService
        -Name "ContosoCS" `
        -ResourceGroupName "ContosOrg" `
        -Location "EastUS" `
        -ConfigurationFile $cspkgFilePath `
        -DefinitionFile $csdefFilePath `
        -PackageURL $cspkgUrl `
        [-KeyVaultName <string>]
    

Create a deployment by using profile objects and SAS URIs

  1. Отправьте файл конфигурации "Облачные Службы (расширенная поддержка)" (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 
    
  2. Отправьте файл пакета Облачные службы (расширенная поддержка) (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 
    
  3. Создайте виртуальную сеть и подсеть. Этот шаг необязателен, если используется существующая сеть и подсеть. В этом примере используется одна виртуальная сеть и подсеть для обеих ролей Облачные службы (расширенная поддержка) (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 
    
  4. Создайте общедоступный IP-адрес и задайте значение метки DNS для общедоступного IP-адреса. Облачные службы (расширенная поддержка) поддерживает только Общедоступный IP-адрес SKU уровня "Базовый". Standard SKU public IP addresses don't work with Cloud Services (extended support).

    При использовании статического IP-адреса необходимо ссылаться на него как зарезервированный IP-адрес в файле конфигурации (CSCFG) для развертывания.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Создайте объект профиля сети и свяжите общедоступный 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} 
    
  6. Создайте хранилище ключей. В хранилище ключей хранятся сертификаты, связанные с ролями Облачные службы (расширенная поддержка). The key vault must be in the same region and subscription as the Cloud Services (extended support) deployment and have a unique name. Дополнительные сведения см. в статье "Использование сертификатов с Облачные службы (расширенная поддержка)".

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Обновите политику доступа к хранилищу ключей и предоставьте разрешения на сертификаты для вашей учетной записи пользователя.

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -EnabledForDeployment
    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -UserPrincipalName '[email protected]' -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 
    
  8. В следующем примере в хранилище ключей добавляется самозаверяющий сертификат. Необходимо добавить отпечаток сертификата с помощью файла конфигурации (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 
    
  9. Создайте объект профиля ОС в памяти. Профиль ОС указывает сертификаты, связанные с ролями Облачных служб (расширенная поддержка), которые являются сертификатами, созданными на предыдущем шаге.

    $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)} 
    
  10. Создайте объект профиля роли в памяти. A role profile defines a role's SKU-specific properties such as name, capacity, and tier. В этом примере определены две роли: 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)} 
    
  11. (Необязательно) Создайте объект профиля расширения в оперативной памяти для добавления в развертывание облачных служб с расширенной поддержкой. В этом примере добавляется расширение протокола удаленного рабочего стола (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>
    
  12. (Необязательно) В хэш-таблице PowerShell можно определить теги для добавления в развертывание:

    $tag=@{"Owner" = "Contoso"} 
    
  13. Создайте развертывание облачных служб (расширенная поддержка) с использованием определенных вами объектов профиля и 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