Een cloudservice (uitgebreide ondersteuning) implementeren met behulp van Azure PowerShell

In dit artikel wordt beschreven hoe u de PowerShell-module gebruikt voor het Az.CloudService implementeren van Cloud Services (uitgebreide ondersteuning) in Azure met meerdere rollen (WebRole en WorkerRole).

Vereisten

  1. Controleer de implementatievereisten voor Cloud Services (uitgebreide ondersteuning) en maak de bijbehorende resources.

  2. Installeer de Az.CloudService PowerShell-module.

    Install-Module -Name Az.CloudService 
    
  3. Een nieuwe resourcegroep maken. Deze stap is optioneel als u een bestaande resourcegroep gebruikt.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Maak een opslagaccount en container, die wordt gebruikt voor het opslaan van de cloudservicepakketbestanden (.cspkg) en serviceconfiguratiebestanden (.cscfg). Er is een unieke naam vereist voor de naam van het opslagaccount. Deze stap is optioneel als u een bestaand opslagaccount gebruikt.

    $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 
    

Een Cloud Services implementeren (uitgebreide ondersteuning)

Gebruik een van de volgende PowerShell-cmdlets om Cloud Services te implementeren (uitgebreide ondersteuning):

  1. Snelle cloudservice maken met behulp van een opslagaccount

    • Met deze parameter stelt u de bestanden .cscfg, .cspkg en .csdef in als invoer en het opslagaccount.
    • Het rolprofiel van de cloudservice, het netwerkprofiel en het besturingssysteemprofiel worden gemaakt door de cmdlet met minimale invoer van de gebruiker.
    • Voor certificaatinvoer moet de naam van de sleutelkluis worden opgegeven. De vingerafdruk van het certificaat in de sleutelkluis wordt gevalideerd op basis van de vingerafdrukken die zijn opgegeven in het CSCFG-bestand.
  2. Snelle cloudservice maken met behulp van een SAS-URI

    • Met deze parameterset wordt de SAS-URI van de .cspkg samen met de lokale paden van .csdef- en .cscfg-bestanden ingevoerd. Er is geen invoer van het opslagaccount vereist.
    • Het rolprofiel van de cloudservice, het netwerkprofiel en het besturingssysteemprofiel worden gemaakt door de cmdlet met minimale invoer van de gebruiker.
    • Voor certificaatinvoer moet de naam van de sleutelkluis worden opgegeven. De vingerafdruk van het certificaat in de sleutelkluis wordt gevalideerd op basis van de vingerafdrukken die zijn opgegeven in het CSCFG-bestand.
  3. Cloudservice maken met rol, besturingssysteem, netwerk- en extensieprofiel en SAS-URI's

    • Met deze parameterset worden de SAS-URI's van de .cscfg- en .cspkg-bestanden invoert.
    • De rol, het netwerk, het besturingssysteem en het extensieprofiel moeten worden opgegeven door de gebruiker en moeten overeenkomen met de waarden in de .cscfg en .csdef.

Snelle cloudservice maken met behulp van een opslagaccount

Maak cloudservice-implementatie met behulp van .cscfg-, .csdef- en .cspkg-bestanden.

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

Snelle cloudservice maken met behulp van een SAS-URI

  1. Upload uw Cloud Service-pakket (cspkg) naar het opslagaccount.

    $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. Maak cloudservice-implementatie met behulp van .cscfg, .csdef en .cspkg SAS-URI.

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

Cloudservice maken met behulp van profielobjecten en SAS-URI's

  1. Upload uw cloudserviceconfiguratie (cscfg) naar het opslagaccount.

    $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 uw Cloud Service-pakket (cspkg) naar het opslagaccount.

    $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. Maak een virtueel netwerk en subnet. Deze stap is optioneel als u een bestaand netwerk en subnet gebruikt. In dit voorbeeld wordt één virtueel netwerk en subnet gebruikt voor zowel cloudservicerollen (WebRole als 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. Maak een openbaar IP-adres en stel de eigenschap DNS-label van het openbare IP-adres in. Cloud Services (uitgebreide ondersteuning) biedt alleen ondersteuning voor openbare IP-adressen van basic-SKU's . Openbare IP-adressen van standaard-SKU's werken niet met Cloud Services. Als u een statisch IP-adres gebruikt, moet u ernaar verwijzen als een gereserveerd IP-adres in het bestand Serviceconfiguratie (.cscfg).

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Maak een netwerkprofielobject en koppel het openbare IP-adres aan de front-end van de load balancer. Het Azure-platform maakt automatisch een 'klassieke' SKU-load balancer-resource in hetzelfde abonnement als de cloudserviceresource. De load balancer-resource is een alleen-lezen resource in Azure Resource Manager. Updates voor de resource worden alleen ondersteund via de cloudservice-implementatiebestanden (.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. Een sleutelkluis maken. Deze Key Vault wordt gebruikt voor het opslaan van certificaten die zijn gekoppeld aan de rollen cloudservice (uitgebreide ondersteuning). De Sleutelkluis moet zich in dezelfde regio en hetzelfde abonnement bevinden als de cloudservice en een unieke naam hebben. Zie Certificaten gebruiken met Azure Cloud Services (uitgebreide ondersteuning) voor meer informatie.

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Werk het key vault-toegangsbeleid bij en ververleent certificaatmachtigingen aan uw gebruikersaccount.

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

    U kunt ook toegangsbeleid instellen via ObjectId (die kan worden verkregen door uit te voeren Get-AzADUser).

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. In dit voorbeeld voegen we een zelfondertekend certificaat toe aan een Key Vault. De vingerafdruk van het certificaat moet worden toegevoegd in het cloudserviceconfiguratiebestand (.cscfg) voor implementatie op cloudservicerollen.

    $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. Maak een besturingssysteemprofielobject in het geheugen. Het besturingssysteemprofiel geeft de certificaten op die zijn gekoppeld aan cloudservicerollen. Dit is hetzelfde certificaat dat in de vorige stap is gemaakt.

    $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. Maak een rolprofielobject in het geheugen. Rolprofiel definieert een specifieke eigenschappen van een rol-sKU, zoals naam, capaciteit en laag. In dit voorbeeld hebben we twee rollen gedefinieerd: frontendRole en backendRole. Informatie over het rolprofiel moet overeenkomen met de rolconfiguratie die is gedefinieerd in het configuratiebestand (cscfg) en het csdef-bestand (servicedefinitie).

    $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. (Optioneel) Maak een extensieprofiel in het geheugenobject dat u wilt toevoegen aan uw cloudservice. In dit voorbeeld voegen we de RDP-extensie toe.

    $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 mag alleen PublicConfig-tags hebben en moet als volgt een naamruimte bevatten:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Optioneel) Definieer tags als PowerShell-hashtabel die u wilt toevoegen aan uw cloudservice.

    $tag=@{"Owner" = "Contoso"} 
    
  13. CloudService-implementatie maken met behulp van profielobjecten en SAS-URL's.

    $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 
    

Volgende stappen

  • Bekijk veelgestelde vragen over Cloud Services (uitgebreide ondersteuning).
  • Implementeer een cloudservice (uitgebreide ondersteuning) met behulp van Azure Portal, PowerShell, Template of Visual Studio.
  • Ga naar de opslagplaats met voorbeelden van Cloud Services (uitgebreide ondersteuning).