Azure PowerShell kullanarak Cloud Services'i (genişletilmiş destek) dağıtma

Bu makalede az.CloudService Azure PowerShell modülünü kullanarak birden çok rolü (WebRole ve WorkerRole) olan bir Azure Cloud Services (genişletilmiş destek) dağıtımı oluşturma işlemi gösterilmektedir.

Önkoşullar

Azure PowerShell kullanarak dağıtımınızı oluşturmanın önkoşulları olarak aşağıdaki adımları tamamlayın.

  1. Cloud Services (genişletilmiş destek) için dağıtım önkoşullarını gözden geçirin ve gerekli kaynakları oluşturun.

  2. Az.CloudService PowerShell modülünü yükleyin:

    Install-Module -Name Az.CloudService 
    
  3. Yeni bir kaynak grubu oluşturma. Mevcut bir kaynak grubunu kullanıyorsanız bu adım isteğe bağlıdır.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Cloud Services (genişletilmiş destek) dağıtımı için paket (.cspkg veya .zip) dosya ve yapılandırma (.cscfg) dosyasını depolamak için Azure'da bir depolama hesabı ve kapsayıcı oluşturun. Depolama hesabı adı için benzersiz bir ad kullanmanız gerekir. Mevcut bir depolama hesabı kullanıyorsanız bu adım isteğe bağlıdır.

    $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 
    

Cloud Services'ı dağıtma (genişletilmiş destek)

Cloud Services'ı (genişletilmiş destek) dağıtmak için aşağıdaki PowerShell cmdlet seçeneklerinden birini kullanın:

  • Depolama hesabı kullanarak hızlı dağıtım oluşturma

    • Bu parametre kümesi paket (.cspkg veya .zip) dosyasını, yapılandırma (.cscfg) dosyasını ve dağıtımın tanım (.csdef) dosyasını depolama hesabıyla giriş olarak girişler.
    • Cmdlet, minimum girişle Cloud Services (genişletilmiş destek) rol profilini, ağ profilini ve işletim sistemi profilini oluşturur.
    • Sertifika giriş yapmak için bir anahtar kasası adı belirtmeniz gerekir. Anahtar kasasındaki sertifika parmak izleri, dağıtım için yapılandırma (.cscfg) dosyasında belirttiğiniz sertifikalarla doğrulanır.
  • Paylaşılan erişim imzası URI'si kullanarak hızlı dağıtım oluşturma

    • Bu parametre kümesi, yapılandırma (.cscfg) dosyası ve tanım (.csdef) dosyasının yerel yolları ile paket (.cspkg veya .zip) dosyasının paylaşılan erişim imzası (SAS) URI'sini girdi. Depolama hesabı girişi gerekmez.
    • cmdlet'i bulut hizmeti rol profilini, ağ profilini ve işletim sistemi profilini en düşük girişi oluşturur.
    • Sertifika giriş yapmak için bir anahtar kasası adı belirtmeniz gerekir. Anahtar kasasındaki sertifika parmak izleri, dağıtım için yapılandırma (.cscfg) dosyasında belirttiğiniz sertifikalarla doğrulanır.
  • Paylaşılan erişim imzası URI'leri ile rol profili, işletim sistemi profili, ağ profili ve uzantı profili kullanarak dağıtım oluşturma

    • Bu parametre kümesi, paket (.cspkg veya .zip) dosyası ve yapılandırma (.cscfg) dosyasının SAS URI'lerini girdi.
    • Profil nesnelerini belirtmelisiniz: rol profili, ağ profili, işletim sistemi profili ve uzantı profili. Profillerin yapılandırma (.cscfg) dosyası ve tanım (.csdef) dosyasında ayarladığınız değerlerle eşleşmesi gerekir.

Depolama hesabı kullanarak hızlı dağıtım oluşturma

Paket (.cspkg veya .zip) dosyası, yapılandırma (.cscfg) dosyası ve tanım (.csdef) dosyalarını kullanarak bir Cloud Services (genişletilmiş destek) dağıtımı oluşturun:

$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>]

SAS URI'si kullanarak hızlı dağıtım oluşturma

  1. Dağıtım için paket (.cspkg veya .zip) dosyasını depolama hesabına yükleyin:

    $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. Paket (.cspkg veya .zip) dosyası, yapılandırma (.cscfg) dosyası ve tanım (.csdef) dosyası SAS URI'sini kullanarak Cloud Services (genişletilmiş destek) dağıtımı oluşturun:

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

Profil nesnelerini ve SAS URI'lerini kullanarak dağıtım oluşturma

  1. Cloud Services (genişletilmiş destek) yapılandırma (.cscfg) dosyanızı depolama hesabına yükleyin:

    $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. Cloud Services (genişletilmiş destek) paketi (.cspkg veya .zip) dosyanızı depolama hesabına yükleyin:

    $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. Sanal ağı ve alt ağı oluşturun. Mevcut bir ağ ve alt ağ kullanıyorsanız bu adım isteğe bağlıdır. Bu örnekte hem Cloud Services (genişletilmiş destek) rolleri (WebRole hem de WorkerRole) için tek bir sanal ağ ve alt ağ kullanılır.

    $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. Bir genel IP adresi oluşturun ve genel IP adresi için bir DNS etiketi değeri ayarlayın. Cloud Services (genişletilmiş destek) yalnızca Temel SKU genel IP adresini destekler. Standart SKU genel IP adresleri Cloud Services (genişletilmiş destek) ile çalışmaz.

    Statik IP adresi kullanıyorsanız, dağıtım için yapılandırma (.cscfg) dosyasında ayrılmış IP adresi olarak başvurmanız gerekir.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Bir ağ profili nesnesi oluşturun ve genel IP adresini yük dengeleyicinin ön ucuyla ilişkilendirin. Azure platformu, Cloud Services (genişletilmiş destek) kaynağıyla aynı abonelikte otomatik olarak bir Klasik SKU yük dengeleyici kaynağı oluşturur. Yük dengeleyici, Azure Resource Manager'da salt okunur bir kaynaktır. Kaynakları yalnızca Cloud Services (genişletilmiş destek) yapılandırması (.cscfg) dosyası ve dağıtım (.csdef) dosyası aracılığıyla güncelleştirebilirsiniz.

    $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. Anahtar kasası oluşturma. Anahtar kasası, Cloud Services (genişletilmiş destek) rolleri ile ilişkili sertifikaları depolar. Anahtar kasası, Cloud Services (genişletilmiş destek) dağıtımıyla aynı bölgede ve abonelikte olmalı ve benzersiz bir ada sahip olmalıdır. Daha fazla bilgi için bkz. Cloud Services ile sertifikaları kullanma (genişletilmiş destek).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Anahtar kasası erişim ilkesini güncelleştirin ve kullanıcı hesabınıza sertifika izinleri verin:

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -EnabledForDeployment
    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -UserPrincipalName 'user@domain.com' -PermissionsToCertificates create,get,list,delete 
    

    Alternatif olarak, değerini kullanarak ObjectId erişim ilkesini ayarlayın. Değeri almak ObjectId için komutunu çalıştırın Get-AzADUser:

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. Aşağıdaki örnek, bir anahtar kasasına otomatik olarak imzalanan bir sertifika ekler. Cloud Services (genişletilmiş destek) rolleri için yapılandırma (.cscfg) dosyası aracılığıyla sertifika parmak izini eklemeniz gerekir.

    $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. Bellek içi bir işletim sistemi profili nesnesi oluşturun. İşletim sistemi profili, önceki adımda oluşturduğunuz sertifika olan Cloud Services (genişletilmiş destek) rolleri ile ilişkili sertifikaları belirtir.

    $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. Bellek içi bir rol profili nesnesi oluşturun. Rol profili, bir rolün ad, kapasite ve katman gibi SKU'ya özgü özelliklerini tanımlar. Bu örnekte iki rol tanımlanmıştır: frontendRole ve backendRole. Rol profili bilgileri, dağıtım yapılandırması (.cscfg) dosyası ve tanım (.csdef) dosyasında tanımlanan rol yapılandırmasıyla eşleşmelidir.

    $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. (İsteğe bağlı) Cloud Services (genişletilmiş destek) dağıtımınıza eklemek için bellek içi bir uzantı profili nesnesi oluşturun. Bu örnek bir Uzak Masaüstü Protokolü (RDP) uzantısı ekler:

    $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)} 
    

    Yapılandırma (.cscfg) dosyası yalnızca PublicConfig etiketlere sahip olmalı ve aşağıdaki örnekte gösterildiği gibi bir ad alanı içermelidir:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (İsteğe bağlı) PowerShell karma tablosunda, dağıtımınıza eklenecek etiketleri tanımlayabilirsiniz:

    $tag=@{"Owner" = "Contoso"} 
    
  13. Tanımladığınız profil nesnelerini ve SAS URI'lerini kullanarak Cloud Services (genişletilmiş destek) dağıtımı oluşturun:

    $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