Dela via


Distribuera Cloud Services (utökad support) med hjälp av Azure PowerShell

Den här artikeln visar hur du använder Azure PowerShell-modulen Az.CloudService för att skapa en Azure Cloud Services-distribution (utökad support) som har flera roller (WebRole och WorkerRole).

Förutsättningar

Slutför följande steg som förutsättningar för att skapa distributionen med hjälp av Azure PowerShell.

  1. Granska distributionskraven för Cloud Services (utökad support) och skapa de resurser som krävs.

  2. Installera Az.CloudService PowerShell-modulen:

    Install-Module -Name Az.CloudService 
    
  3. Skapa en ny resursgrupp. Det här steget är valfritt om du använder en befintlig resursgrupp.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Skapa ett lagringskonto och en container i Azure för att lagra paketfilen (.cspkg eller .zip) och konfigurationsfilen (.cscfg) för cloud services-distributionen (utökad support). Du måste använda ett unikt namn för lagringskontots namn. Det här steget är valfritt om du använder ett befintligt lagringskonto.

    $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 
    

Distribuera Cloud Services (utökad support)

Om du vill distribuera Cloud Services (utökad support) använder du något av följande PowerShell-cmdlet-alternativ:

  • Snabbskapa en distribution med hjälp av ett lagringskonto

    • Den här parameteruppsättningen matar in paketfilen (.cspkg eller .zip), konfigurationsfilen (.cscfg) och definitionsfilen (.csdef) för distributionen som indata med lagringskontot.
    • Cmdleten skapar rollprofilen för Cloud Services (utökad support), nätverksprofilen och OS-profilen med minimal indata.
    • Om du vill ange ett certifikat måste du ange ett nyckelvalvnamn. Certifikatets tumavtryck i nyckelvalvet verifieras mot de certifikat som du anger i konfigurationsfilen (.cscfg) för distributionen.
  • Snabbskapa en distribution med hjälp av en signatur-URI för delad åtkomst

    • Den här parameteruppsättningen anger SAS-URI:n (signatur för delad åtkomst) för paketfilen (.cspkg eller .zip) med de lokala sökvägarna till konfigurationsfilen (.cscfg) och definitionsfilen (.csdef). Inga indata från lagringskontot krävs.
    • Cmdleten skapar molntjänstrollprofilen, nätverksprofilen och os-profilen minimala indata.
    • Om du vill ange ett certifikat måste du ange ett nyckelvalvnamn. Certifikatets tumavtryck i nyckelvalvet verifieras mot de certifikat som du anger i konfigurationsfilen (.cscfg) för distributionen.
  • Skapa en distribution med hjälp av en rollprofil, os-profil , nätverksprofil och tilläggsprofil med signatur-URI:er för delad åtkomst

    • Den här parameteruppsättningen anger SAS-URI:er för paketfilen (.cspkg eller .zip) och konfigurationsfilen (.cscfg).
    • Du måste ange profilobjekt: rollprofil, nätverksprofil, OS-profil och tilläggsprofil. Profilerna måste matcha de värden som du anger i konfigurationsfilen (.cscfg) och definitionsfilen (.csdef).

Snabbskapa en distribution med hjälp av ett lagringskonto

Skapa en Cloud Services-distribution (utökad support) med hjälp av paketfilen (.cspkg eller .zip), konfigurationsfilen (.cscfg) och definitionsfilerna (.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>]

Snabbskapa en distribution med hjälp av en SAS-URI

  1. Ladda upp paketfilen (.cspkg eller .zip) för distributionen till lagringskontot:

    $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. Skapa cloud services-distributionen (utökad support) med hjälp av paketfilen (.cspkg eller .zip), konfigurationsfilen (.cscfg) och definitionsfilen (.csdef) SAS-URI:

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

Skapa en distribution med hjälp av profilobjekt och SAS-URI:er

  1. Ladda upp konfigurationsfilen för Cloud Services (utökad support) (.cscfg) till lagringskontot:

    $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. Ladda upp din Cloud Services-paketfil (utökad support) (.cspkg eller .zip) till lagringskontot:

    $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. Skapa ett virtuellt nätverk och ett undernät. Det här steget är valfritt om du använder ett befintligt nätverk och undernät. I det här exemplet används ett enda virtuellt nätverk och undernät för både Cloud Services-roller (utökad support) (WebRole och 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. Skapa en offentlig IP-adress och ange ett DNS-etikettvärde för den offentliga IP-adressen. Cloud Services (utökat stöd) stöder endast en offentlig IP-adress för grundläggande SKU. Offentliga IP-adresser för standard-SKU fungerar inte med Cloud Services (utökad support).

    Om du använder en statisk IP-adress måste du referera till den som en reserverad IP-adress i konfigurationsfilen (.cscfg) för distributionen.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Skapa ett nätverksprofilobjekt och associera sedan den offentliga IP-adressen till lastbalanserarens klientdel. Azure-plattformen skapar automatiskt en klassisk SKU-lastbalanserare i samma prenumeration som cloud services-resursen (utökad support). Lastbalanseraren är en skrivskyddad resurs i Azure Resource Manager. Du kan endast uppdatera resurser via cloud services-konfigurationsfilen (.cscfg) och distributionsfilen (.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. Skapa ett nyckelvalv. Nyckelvalvet lagrar certifikat som är associerade med Cloud Services-roller (utökad support). Nyckelvalvet måste finnas i samma region och prenumeration som cloud services-distributionen (utökad support) och ha ett unikt namn. Mer information finns i Använda certifikat med Cloud Services (utökad support).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Uppdatera åtkomstprincipen för nyckelvalvet och bevilja certifikatbehörigheter till ditt användarkonto:

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

    Du kan också ange åtkomstprincipen med hjälp ObjectId av värdet. Hämta värdet genom att ObjectId köra Get-AzADUser:

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. I följande exempel läggs ett självsignerat certifikat till i ett nyckelvalv. Du måste lägga till certifikatets tumavtryck via konfigurationsfilen (.cscfg) för Cloud Services-roller (utökad support).

    $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. Skapa en OS-profil minnesinternt objekt. En OS-profil anger de certifikat som är associerade med Cloud Services-roller (utökad support), vilket är certifikatet som du skapade i föregående steg.

    $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. Skapa ett minnesinternt rollprofilobjekt. En rollprofil definierar en rolls SKU-specifika egenskaper, till exempel namn, kapacitet och nivå. I det här exemplet definieras två roller: frontendRole och backendRole. Rollprofilinformationen måste matcha rollkonfigurationen som definierats i filen och definitionsfilen (.csdef) för distributionskonfigurationen (.cscfg).

    $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. (Valfritt) Skapa ett minnesinternt tilläggsprofilobjekt som ska läggas till i distributionen av Cloud Services (utökad support). Det här exemplet lägger till ett RDP-tillägg (Remote Desktop Protocol):

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

    Konfigurationsfilen (.cscfg) bör bara PublicConfig ha taggar och ska innehålla ett namnområde som visas i följande exempel:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Valfritt) I en PowerShell-hashtabell kan du definiera taggar som ska läggas till i distributionen:

    $tag=@{"Owner" = "Contoso"} 
    
  13. Skapa distributionen av Cloud Services (utökad support) med hjälp av de profilobjekt och SAS-URI:er som du definierade:

    $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