Distribuera en molntjänst (utökat stöd) med Azure PowerShell

Den här artikeln visar hur du använder PowerShell-modulen för att distribuera Cloud Services (utökat stöd) i Azure som har flera roller Az.CloudService (WebRole och WorkerRole).

Förutsättningar

  1. Granska distributionsförutsättningarna för Cloud Services (utökat stöd) och skapa de associerade resurserna.

  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 som ska användas för att lagra filerna Cloud Service Package (.cspkg) och Service Configuration (.cscfg). Ett unikt namn för lagringskontots namn krävs. 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 en Cloud Services (utökat stöd)

Använd någon av följande PowerShell-cmdlets för att distribuera Cloud Services (utökat stöd):

  1. Snabb skapa molntjänst med ett Storage konto

    • Den här parameteruppsättningen matar in .cscfg-, .cspkg- och .csdef-filerna som indata tillsammans med lagringskontot.
    • Molntjänstrollprofilen, nätverksprofilen och OS-profilen skapas av cmdleten med minimala indata från användaren.
    • För certifikatindata ska nyckelvalvsnamnet anges. Certifikatets tumavtryck i nyckelvalvet verifieras mot de som anges i .cscfg-filen.
  2. Snabb skapa molntjänst med hjälp av en SAS-URI

    • Den här parameteruppsättningen matar in SAS-URI för .cspkg tillsammans med de lokala sökvägarna för .csdef- och .cscfg-filer. Det krävs inga indata för lagringskontot.
    • Molntjänstrollprofilen, nätverksprofilen och OS-profilen skapas av cmdleten med minimala indata från användaren.
    • För certifikatindata ska nyckelvalvsnamnet anges. Certifikatets tumavtryck i nyckelvalvet verifieras mot de som anges i .cscfg-filen.
  3. Skapa molntjänst med roll-, os-, nätverks- och tilläggsprofil och SAS-URI:er

    • Den här parameteruppsättningen matar in SAS-URI:er för .cscfg- och .cspkg-filerna.
    • Rollen, nätverket, operativsystemet och tilläggsprofilen måste anges av användaren och måste matcha värdena i .cscfg och .csdef.

Snabb skapa molntjänst med ett Storage konto

Skapa Cloud Service-distribution med hjälp av .cscfg-, .csdef- och .cspkg-filer.

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

Snabb skapa molntjänst med hjälp av en SAS-URI

  1. Upload cloud service package (cspkg) 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 Service-distribution med hjälp av .cscfg, .csdef och .cspkg SAS URI.

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

Skapa molntjänst med hjälp av profilobjekt & SAS-URI:er

  1. Upload din molntjänstkonfiguration (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. Upload cloud service package (cspkg) 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 molntjänstroller (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 egenskapen DNS-etikett för den offentliga IP-adressen. Cloud Services (utökat stöd) stöder endast offentliga IP-adresser för Basic SKU. Offentliga IP-adresser för standard-SKU fungerar inte med Cloud Services. Om du använder en statisk IP-adress måste du referera till den som en Reserverad IP i servicekonfigurationsfilen (.cscfg).

    $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 den offentliga IP-adressen med lastbalanserasens frontend. Azure-plattformen skapar automatiskt en "klassisk" SKU-lastbalanseringsresurs i samma prenumeration som molntjänstresursen. Lastbalanseringsresursen är en skrivskyddade resurs i Azure Resource Manager. Uppdateringar av resursen stöds endast via molntjänstdistributionsfilerna (.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. Skapa ett nyckelvalv. Den Key Vault används för att lagra certifikat som är associerade med rollerna för molntjänst (utökat stöd). Den Key Vault måste finnas i samma region och prenumeration som molntjänsten och ha ett unikt namn. Mer information finns i Använda certifikat med Azure Cloud Services (utökat stöd).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Uppdatera Key Vault åtkomstprincip 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 åtkomstprincip via ObjectId (som kan hämtas genom att köra Get-AzADUser ).

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. I det här exemplet ska vi lägga till ett själv signerat certifikat i en Key Vault. Certifikatets tumavtryck måste läggas till i Cloud Service Configuration-filen (.cscfg) för distribution i molntjänstroller.

    $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 ett objekt i minnet för en OS-profil. Os-profil anger de certifikat som är associerade med molntjänstroller. Det här är samma certifikat som skapades 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 objekt i minnet för en rollprofil. Rollprofilen definierar en roll-SKU-specifika egenskaper som namn, kapacitet och nivå. I det här exemplet har vi definierat två roller: frontendRole och backendRole. Rollprofilinformationen ska matcha rollkonfigurationen som definierats i konfigurationsfilen (cscfg) och tjänstdefinitionsfilen (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. (Valfritt) Skapa ett tilläggsprofilobjekt i minnet som du vill lägga till i molntjänsten. I det här exemplet lägger vi till RDP-tillägget.

    $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 bör endast ha PublicConfig-taggar och bör innehålla ett namnområde enligt följande:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Valfritt) Definiera Taggar som PowerShell-hashtabell som du vill lägga till i molntjänsten.

    $tag=@{"Owner" = "Contoso"} 
    
  13. Skapa molntjänstdistribution med hjälp av profilobjekt & SAS-URL:er.

    $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 
    

Nästa steg