Bulut Hizmetini (genişletilmiş destek) Azure PowerShell

Bu makalede, Birden çok rolü Az.CloudService (WebRole ve WorkerRole) Cloud Services Azure'da dağıtım (genişletilmiş destek) için PowerShell modülünün nasıl kullanıldığı açıklanmıştır.

Ön koşullar

  1. Dağıtım önkoşullarını gözden Cloud Services (genişletilmiş destek) ve ilişkili 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 grubu kullanıyorsanız bu adım isteğe bağlıdır.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Bulut Hizmeti paketi (.cspkg) ve Hizmet Yapılandırması (.cscfg) dosyalarını depolamak için kullanılacak bir depolama hesabı ve kapsayıcı oluşturun. Depolama hesabı adı için benzersiz bir ad gereklidir. 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 
    

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

Aşağıdaki PowerShell cmdlet'lerini kullanarak Cloud Services (genişletilmiş destek):

  1. Depolama Hesabı Kullanarak Bulut Hizmeti Oluşturma

    • Bu parametre kümesi. .cscfg, .cspkg ve .csdef dosyalarını depolama hesabıyla birlikte giriş olarak giriş olarak kullanır.
    • Bulut hizmeti rol profili, ağ profili ve işletim sistemi profili, kullanıcıdan en az girişle cmdlet tarafından oluşturulur.
    • Sertifika girişi için anahtarlık adı belirtilmelidir. Keyvault'ta sertifika parmak izleri .cscfg dosyasında belirtilenlere göre doğrulanır.
  2. SAS URI'si kullanarak Hızlı Bulut Hizmeti Oluşturma

    • Bu parametre kümesi. cspkg'nin SAS URI'sini ve .csdef ve .cscfg dosyalarının yerel yollarını girdi. Depolama hesabı girişi gerekmez.
    • Bulut hizmeti rol profili, ağ profili ve işletim sistemi profili, kullanıcıdan en az girişle cmdlet tarafından oluşturulur.
    • Sertifika girişi için anahtarlık adı belirtilmelidir. Keyvault'ta sertifika parmak izleri .cscfg dosyasında belirtilenlere göre doğrulanır.
  3. Rol, işletim sistemi, ağ ve uzantı profili ve SAS URL'leri ile Bulut Hizmeti oluşturma

    • Bu parametre kümesi . cscfg ve .cspkg dosyalarının SAS URL'lerini girdi.
    • Rol, ağ, işletim sistemi ve uzantı profili kullanıcı tarafından belirtilmelidir ve .cscfg ve .csdef değerleriyle eşleşmesi gerekir.

Depolama Hesabı kullanarak Bulut Hizmeti Oluşturma

.cscfg, .csdef ve .cspkg dosyalarını kullanarak Bulut Hizmeti dağıtımı oluşturun.

$cspkgFilePath = "<Path to cspkg file>"
$cscfgFilePath = "<Path to cscfg file>"
$csdefFilePath = "<Path to csdef file>"
      
# Create Cloud Service       
New-AzCloudService
-Name "ContosoCS" `
-ResourceGroupName "ContosOrg" `
-Location "EastUS" `
-ConfigurationFile $cscfgFilePath `
-DefinitionFile $csdefFilePath `
-PackageFile $cspkgFilePath `
-StorageAccount $storageAccount `
[-KeyVaultName <string>]

SAS URI'si kullanarak Hızlı Bulut Hizmeti Oluşturma

  1. Upload Hizmet paketinizi (cspkg) depolama hesabına açın.

    $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. .cscfg, .csdef ve .cspkg SAS URI'sini kullanarak Bulut Hizmeti dağıtımı oluşturun.

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

SAS URL'leri için profil & Bulut Hizmeti oluşturma

  1. Upload hizmeti yapılandırmanızı (cscfg) depolama hesabına alın.

    $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. Upload Hizmet paketinizi (cspkg) depolama hesabına açın.

    $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 bulut hizmeti 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 adresinin DNS etiketi özelliğini ayarlayın. Cloud Services (genişletilmiş destek) yalnızca Temel SKU Genel IP adreslerini destekler. Standart SKU Genel IP'ler, Cloud Services. Statik IP kullanıyorsanız, Hizmet Yapılandırması (.cscfg) Ayrılmış IP bir ip adresi olarak başvurabilirsiniz.

    $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şkilendirme. Azure platformu, bulut hizmeti kaynağıyla aynı abonelikte otomatik olarak bir 'Klasik' SKU yük dengeleyici kaynağı oluşturur. Yük dengeleyici kaynağı, veri kaynağında salt okunur Azure Resource Manager. Kaynakta yapılan tüm güncelleştirmeler yalnızca bulut hizmeti dağıtım dosyaları (.cscfg & .csdef) aracılığıyla de destekler.

    $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şturun. Bu Key Vault, Bulut Hizmeti (genişletilmiş destek) rolleri ile ilişkili sertifikaları depolamak için kullanılır. Bu Key Vault bulut hizmetiyle aynı bölgede ve abonelikte yer almalı ve benzersiz bir adı olmalıdır. Daha fazla bilgi için bkz. Azure Cloud Services (genişletilmiş destek) ile sertifikaları kullanma.

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Uygulama erişim Key Vault 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, ObjectId aracılığıyla erişim ilkesi ayarlayın (çalıştırarak elde Get-AzADUser edilir).

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. Bu örnekte, bir sertifikaya otomatik olarak imzalanan bir sertifika Key Vault. Sertifika parmak izinin, bulut hizmeti rollerinde dağıtım için Cloud Service Configuration (.cscfg) dosyasına ekleniyor olması 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çinde bir işletim sistemi profili nesnesi oluşturun. OS Profili, bulut hizmeti rolleri ile ilişkili sertifikaları belirtir. Bu, önceki adımda oluşturulan sertifikanın aynısı olur.

    $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çinde bir Rol Profili nesnesi oluşturun. Rol profili ad, kapasite ve katman gibi role sku'ya özgü özellikleri tanımlar. Bu örnekte iki rol tanımladı: frontendRole ve backendRole. Rol profili bilgileri, yapılandırma (cscfg) dosyasında ve hizmet tanımı (csdef) dosyasında tanımlanan rol yapılandırmasıyla eşleşmeli.

    $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ı) Bulut hizmetinize eklemek istediğiniz bellek içinde bir Uzantı Profili nesnesi oluşturun. Bu örnekte RDP uzantısını ekley ineriz.

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

    ConfigFile yalnızca PublicConfig etiketlerine sahip olmalı ve aşağıdaki gibi bir ad alanı içermeli:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (İsteğe bağlı) Etiketleri, bulut hizmetinize eklemek istediğiniz PowerShell karma tablosu olarak tanımlayın.

    $tag=@{"Owner" = "Contoso"} 
    
  13. SAS URL'leri için profil nesnelerini & Bulut Hizmeti 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 
    

Sonraki adımlar