نشر خدمة السحابة (دعم موسَّع) باستخدام Azure PowerShell

توضح هذه المقالة كيفية استخدام Az.CloudServiceوحدة PowerShell النمطية لنشر الخدمات السحابية (دعم موسَّع) في Azure التي لها أدوار متعددة (WebRole وWorkerRole).

المتطلبات الأساسية

  1. راجع متطلبات النشر للخدمات السحابية (الدعم الموسع) وإنشاء الموارد المقترنة.

  2. قم بتثبيت الوحدة النمطية Az.CloudService PowerShell.

    Install-Module -Name Az.CloudService 
    
  3. إنشاء مجموعة موارد جديدة. هذه الخطوة اختيارية في حالة استخدام مجموعة موارد موجودة.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. أنشئ حساب تخزين وحاوية، حيث سيتم استخدامهما لتخزين ملفات حزمة الخدمات السحابية (cspkg.) وتكوين الخدمة (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 cmdlets التالية لنشر الخدمات السحابية (دعم موسَّع):

  1. إنشاء خدمة سحابية سريعًا باستخدام حساب تخزين

    • تقوم مجموعة المعلمات هذه بإدخال ملفات cscfg. وcspkg. و csdef. كمدخلات مع حساب التخزين.
    • يتم إنشاء ملف تعريف دور الخدمة السحابية وملف تعريف الشبكة وملف تعريف نظام التشغيل بواسطة الأمر cmdlet مع الحد الأدنى من المدخلات من المستخدم.
    • لإدخال الشهادة، يجب تحديد اسم keyvault. يتم التحقق من بصمات إبهام الشهادة في keyvault مقابل تلك المحددة في ملف .cscfg.
  2. سرعة إنشاء خدمة سحابية Cloud Service باستخدام SAS URI

    • تقوم مجموعة المعلمات هذه بإدخال SAS URI الخاص بـ cspkg. جنبًا إلى جنب مع المسارات المحلية لملفات csdef. وcscfg. لا يوجد إدخال حساب تخزين مطلوب.
    • يتم إنشاء ملف تعريف دور الخدمة السحابية وملف تعريف الشبكة وملف تعريف نظام التشغيل بواسطة الأمر cmdlet مع الحد الأدنى من المدخلات من المستخدم.
    • لإدخال الشهادة، يجب تحديد اسم keyvault. يتم التحقق من بصمات إبهام الشهادة في keyvault مقابل تلك المحددة في ملف .cscfg.
  3. إنشاء خدمة السحابة باستخدام الدور ونظام التشغيل والشبكة وملف التعريف للإضافة و SAS URIs

    • تقوم مجموعة المعلمات هذه بإدخال SAS URIs لملفات cscfg. وcspkg.
    • يجب أن يتم تحديد الدور والشبكة ونظام التشغيل وملف تعريف الملحق من قِبل المستخدم ويجب أن يتطابق مع القيم الموجودة في cscfg. وcsdef.

إنشاء خدمة سحابية سريعًا باستخدام حساب تخزين

أنشئ نشر الخدمة السحابية باستخدام ملفات cscfg. وcsdef. و 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>]

سرعة إنشاء خدمة سحابية Cloud Service باستخدام SAS URI

  1. قم بتحميل حزمة Cloud Service (cspkg) إلى حساب التخزين.

    $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 و .cspkg SAS URI.

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

قم بإنشاء Cloud Service باستخدام كائنات ملف التعريف وعناوين SAS URI

  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. قم بتحميل حزمة Cloud Service (cspkg) إلى حساب التخزين.

    $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. لا تعمل عناوين IP العامة لـ SKU القياسية مع الخدمات السحابية. إذا كنت تستخدم عنوان IP ثابتًا، فأنت بحاجة إلى الإشارة إليه على أنه عنوان IP محجوز في ملف تكوين الخدمة (cscfg.).

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. قم بإنشاء كائن ملف تعريف الشبكة واربط عنوان IP العام بالواجهة الأمامية لموازنة التحميل. تنشئ منصة Azure تلقائيًّا مورد موازن تحميل 'Classic' 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. قم بإنشاء Key Vault. سيتم استخدام Key Vault هذا لتخزين الشهادات المرتبطة بأدوار Cloud Service (الدعم الموسَّع). يجب أن يكون Key Vault موجودًا في نفس المنطقة والاشتراك كخدمة سحابية وأن يكون له اسم فريد. لمزيد من المعلومات، راجع استخدام الشهادات مع Azure Cloud Services (دعم موسَّع).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. قم بتحديث نهج الوصول إلى Key Vault ومنح أذونات الشهادة لحساب المستخدم الخاص بك.

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

    بدلاً من ذلك، قم بتعيين نهج الوصول عبر ObjectId (والتي يمكن الحصول عليها عن طريق تشغيل Get-AzADUser).

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. في هذا المثال، سنضيف شهادة موقعة ذاتيًا إلى Key Vault. يجب إضافة بصمة الشهادة في ملف تكوين الخدمة السحابية (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. قم بإنشاء ملف تعريف دور في كائن في الذاكرة. يعرّف ملف تعريف الدور الخصائص المحددة لدور 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)} 
    
  11. (اختياري) أنشئ كائن ملف تعريف Extension Profile مضمن في الذاكرة تريد إضافته إلى خدمة السحابة الخاصة بك. في هذا المثال سنضيف الملحق 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 على علامات 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. إنشاء نشر الخدمة السحابية باستخدام كائنات ملف التعريف وعناوين 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 
    

الخطوات التالية