Menyebarkan Azure Cloud Services (dukungan yang diperluas) menggunakan Azure PowerShell

Artikel ini menunjukkan cara menggunakan modul Az.CloudService PowerShell untuk menyebarkan Layanan Cloud (dukungan yang diperluas) di Azure yang memiliki banyak peran (WebRole dan WorkerRole).

Prasyarat

  1. Ulas prasyarat penyebaran untuk Cloud Services (dukungan yang diperluas) dan buat sumber daya terkait.

  2. Menginstal modul Az.CloudService PowerShell.

    Install-Module -Name Az.CloudService 
    
  3. Membuat grup sumber daya baru. Langkah ini bersifat opsional jika menggunakan grup sumber daya yang sudah ada.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Buat akun dan kontainer penyimpanan, yang akan digunakan untuk menyimpan file paket Layanan Cloud (.cspkg) dan Konfigurasi Layanan (.cscfg). Nama unik untuk nama akun penyimpanan diperlukan. Langkah ini opsional jika menggunakan akun penyimpanan yang ada.

    $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 
    

Menyebarkan Azure Cloud Services (dukungan yang diperluas)

Gunakan cmdlet PowerShell berikut untuk menyebarkan Layanan Cloud (dukungan perpanjangan):

  1. Membuat Layanan Cloud dengan Cepat menggunakan Akun Penyimpanan

    • Set parameter ini memasukkan file .cscfg, .cspkg, dan .csdef sebagai input bersama dengan akun penyimpanan.
    • Profil peran layanan cloud, profil jaringan, dan profil OS dibuat oleh cmdlet dengan input minimal dari pengguna.
    • Untuk input sertifikat, nama keyvault harus ditentukan. Thumbprint sertifikat di keyvault divalidasi terhadap yang ditentukan dalam file .cscfg.
  2. Buat Cepat Layanan Cloud menggunakan URI SAS

    • Parameter ini mengatur input URI SAS dari .cspkg bersama dengan jalur lokal file .csdef dan .cscfg. Tidak ada input akun penyimpanan yang diperlukan.
    • Profil peran layanan cloud, profil jaringan, dan profil OS dibuat oleh cmdlet dengan input minimal dari pengguna.
    • Untuk input sertifikat, nama keyvault harus ditentukan. Thumbprint sertifikat di keyvault divalidasi terhadap yang ditentukan dalam file .cscfg.
  3. Membuat Layanan Cloud dengan peran, OS, profil jaringan dan ekstensi, serta URI SAS

    • Parameter ini mengatur input SAS URIs dari file .cscfg dan .cspkg.
    • Peran, jaringan, OS, dan profil ekstensi harus ditentukan oleh pengguna dan harus cocok dengan nilai dalam .cscfg dan .csdef.

Membuat Layanan Cloud dengan Cepat menggunakan Akun Penyimpanan

Membuat penyebaran Layanan Cloud menggunakan file .cscfg, .csdef, dan .cspkg.

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

Membuat Layanan Cloud dengan Cepat menggunakan URI SAS

  1. Unggah paket Cloud Service Anda (cspkg) ke akun penyimpanan.

    $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. Buat penyebaran Layanan Cloud menggunakan URI SAS .cscfg, .csdef dan .cspkg.

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

Membuat penyebaran Layanan Cloud menggunakan objek profil & URI SAS

  1. Unggah paket konfigurasi layanan awan (cspkg) ke akun penyimpanan.

    $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. Unggah paket Cloud Service Anda (cspkg) ke akun penyimpanan.

    $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. Buat jaringan virtual dan subnet. Langkah ini bersifat opsional jika menggunakan akun penyimpanan yang sudah ada. Contoh ini menggunakan satu jaringan virtual dan subnet untuk peran layanan cloud (WebRole dan 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. Buat alamat IP publik dan atur properti label DNS alamat IP publik. Cloud Services (dukungan yang diperluas) hanya mendukung alamat IP Publik SKU Dasar. IP Publik SKU standar tidak berfungsi dengan Cloud Services. Jika Anda menggunakan IP Statis, Anda perlu merujuknya sebagai IP Cadangan dalam file Konfigurasi Layanan (.cscfg).

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Buat Objek Profil Jaringan dan kaitkan alamat IP publik ke frontend load balancer. Platform Azure secara otomatis membuat sumber daya load balancer SKU 'Klasik' dalam langganan yang sama dengan sumber daya layanan cloud. Sumber daya penyeimbang muatan adalah sumber daya baca-saja di Azure Resource Manager. Setiap pembaruan sumber daya hanya didukung melalui file penyebaran layanan cloud (.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. Membuat Key Vault. Key Vault ini akan digunakan untuk menyimpan sertifikat yang terkait dengan peran Cloud Services (dukungan yang diperluas). Key Vault terkait harus berada di wilayah dan langganan yang sama dengan layanan cloud. Untuk informasi lebih lanjut, lihat menggunakan sertifikat dengan Azure Cloud Services (dukungan perpanjangan).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Perbarui kebijakan akses Key Vault dan berikan izin sertifikat ke akun pengguna Anda.

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

    Atau, atur kebijakan akses melalui ObjectId (yang dapat diperoleh dengan menjalankan Get-AzADUser).

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. Dalam contoh ini, kami akan menambahkan sertifikat yang ditandatangani sendiri ke Key Vault. Thumbprint sertifikat perlu ditambahkan dalam file Konfigurasi Cloud Services (.cscfg) untuk penyebaran pada peran Cloud Services (dukungan yang diperpanjang).

    $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. Buat objek Profil OS dalam memori. Profil OS menentukan sertifikat, yang terkait dengan peran layanan cloud. Ini akan menjadi sertifikat yang sama yang dibuat pada langkah sebelumnya.

    $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. Buat objek Profil OS dalam memori. Profil peran mendefinisikan properti khusus peran sku seperti nama, kapasitas, dan tingkat. Dalam contoh ini, kami telah mendefinisikan dua peran: frontendRole dan backendRole. Informasi profil peran harus sesuai dengan konfigurasi peran yang ditentukan dalam file konfigurasi (.cscfg) dan file definisi layanan (.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. (Opsional) Buat objek dalam memori Profil Ekstensi yang ingin Anda tambahkan ke layanan cloud Anda. Untuk contoh ini kami akan menambahkan ekstensi 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)} 
    

    ConfigFile hanya boleh memiliki tag PublicConfig dan harus berisi namespace sebagai berikut:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Opsional) Tentukan Tag sebagai tabel hash PowerShell yang ingin Anda tambahkan ke layanan cloud Anda.

    $tag=@{"Owner" = "Contoso"} 
    
  13. Buat penyebaran Cloud Service menggunakan objek profil & URL 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 
    

Langkah berikutnya