Freigeben über


Bereitstellen von Cloud Services (erweiterter Support) mithilfe von Azure PowerShell

In diesem Artikel erfahren Sie, wie Sie das Azure PowerShell-Modul „Az.CloudService“ verwenden, um eine Bereitstellung von Azure Cloud Services (erweiterter Support) mit mehreren Rollen („WebRole“ und „WorkerRole“) zu erstellen.

Voraussetzungen

Führen Sie die folgenden Schritte als Voraussetzung für die Erstellung Ihrer Bereitstellung mithilfe von Azure PowerShell aus.

  1. Informieren Sie sich über die Bereitstellungsvoraussetzungen für Cloud Services (erweiterter Support), und erstellen Sie die erforderlichen Ressourcen.

  2. Installieren Sie das PowerShell-Modul „Az.CloudService“:

    Install-Module -Name Az.CloudService 
    
  3. Eine neue Ressourcengruppe erstellen. Bei Verwendung einer vorhandenen Ressourcengruppe ist dieser Schritt optional.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Erstellen Sie ein Speicherkonto und einen Container in Azure zum Speichern der Paketdatei (.cspkg oder .zip) und der Konfigurationsdatei (.cscfg) für die Bereitstellung von Cloud Services (erweiterter Support). Für das Speicherkonto muss ein eindeutiger Name verwendet werden. Bei Verwendung eines vorhandenen Speicherkontos ist dieser Schritt optional.

    $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 
    

Bereitstellen von Cloud Services (erweiterter Support)

Verwenden Sie eine der folgenden PowerShell-Cmdlet-Optionen, um Cloud Services (erweiterter Support) bereitzustellen:

  • Schnellerstellung einer Bereitstellung mithilfe eines Speicherkontos

    • Dieser Parameter legt die Paketdatei (.cspkg oder .zip), die Konfigurationsdatei (.cscfg) und die Definitionsdatei (.csdef) für die Bereitstellung als Eingaben mit dem Speicherkonto fest.
    • Das Cmdlet erstellt das Rollenprofil, Netzwerkprofil und Betriebssystemprofil von Cloud Services (erweiterter Support) mit minimaler Eingabe.
    • Um ein Zertifikat einzugeben, müssen Sie einen Schlüsseltresornamen angeben. Die Zertifikatfingerabdrücke im Schlüsseltresor werden anhand der Zertifikate überprüft, die Sie in der Konfigurationsdatei (.cscfg) für die Bereitstellung angeben.
  • Schnellerstellung einer Bereitstellung mithilfe eines Shared Access Signature-URI

    • Dieser Parameter legt den SAS-URI (Shared Access Signature) der Paketdatei (.cspkg oder .zip) mit den lokalen Pfaden zur Konfigurationsdatei (.cscfg) und Definitionsdatei (.csdef) fest. Es ist keine Speicherkontoeingabe erforderlich.
    • Das Cmdlet erstellt das Rollenprofil, Netzwerkprofil und Betriebssystemprofil des Clouddiensts mit minimaler Eingabe.
    • Um ein Zertifikat einzugeben, müssen Sie einen Schlüsseltresornamen angeben. Die Zertifikatfingerabdrücke im Schlüsseltresor werden anhand der Zertifikate überprüft, die Sie in der Konfigurationsdatei (.cscfg) für die Bereitstellung angeben.
  • Erstellen einer Bereitstellung mithilfe eines Rollenprofils, Betriebssystemprofils, Netzwerkprofils und Erweiterungsprofils mit Shared Access Signature-URIs

    • Dieser Parameter legt die SAS-URIs der Paketdatei (.cspkg oder .zip) und der Konfigurationsdatei (.cscfg) fest.
    • Sie müssen Profilobjekte angeben: Rollenprofil, Netzwerkprofil, Betriebssystemprofil und Erweiterungsprofil. Die Profile müssen den Werten entsprechen, die Sie in der Konfigurationsdatei (.cscfg) und in der Definitionsdatei (.csdef) festgelegt haben.

Schnellerstellung einer Bereitstellung mithilfe eines Speicherkontos

Erstellen Sie eine Bereitstellung von Cloud Services (erweiterter Support) mithilfe der Paketdatei (.cspkg or .zip), der Konfigurationsdatei (.cscfg) und der Definitionsdateien (.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>]

Schnellerstellung einer Bereitstellung mithilfe eines SAS-URI

  1. Laden Sie die Paketdatei (.cspkg oder .zip) für die Bereitstellung in das Speicherkonto hoch:

    $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. Erstellen Sie die Bereitstellung von Cloud Services (erweiterter Support) mithilfe des SAS-URI für die Paketdatei (.cspkg oder .zip), die Konfigurationsdatei (.cscfg) und die Definitionsdatei (.csdef):

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

Erstellen einer Bereitstellung mithilfe von Profilobjekten und SAS-URIs

  1. Laden Sie die Konfigurationsdatei (.cscfg) für Cloud Services (erweiterter Support) in das Speicherkonto hoch:

    $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. Laden Sie die Paketdatei (.cspkg oder .zip) für Cloud Services (erweiterter Support) in das Speicherkonto hoch:

    $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. Erstellen Sie ein virtuelles Netzwerk und ein Subnetz. Bei Verwendung eines vorhandenen Netzwerks und Subnetzes ist dieser Schritt optional. In diesem Beispiel werden für beide Rollen („WebRole“ und „WorkerRole“) von Cloud Services (erweiterter Support) ein einzelnes virtuelles Netzwerk und ein einzelnes Subnetz verwendet.

    $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. Erstellen Sie eine öffentliche IP-Adresse, und legen Sie einen DNS-Bezeichnungswert für die öffentliche IP-Adresse fest. Von Cloud Services (erweiterter Support) wird nur eine öffentliche IP-Adresse der SKU Basic unterstützt. Öffentliche IP-Adressen mit der SKU „Standard“ können nicht mit Cloud Services (erweiterter Support) verwendet werden.

    Wenn Sie eine statische IP-Adresse verwenden, müssen Sie auf sie in der Konfigurationsdatei (CSCFG) für die Bereitstellung als reservierte IP-Adresse verweisen.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Erstellen Sie ein Netzwerkprofilobjekt, und ordnen Sie die öffentliche IP-Adresse dem Front-End des Lastenausgleichs zu. Die Azure-Plattform erstellt automatisch eine Lastenausgleichsressource der SKU „Klassisch“ in demselben Abonnement, in dem sich auch die Ressource für Cloud Services (erweiterter Support) befindet. Der Lastenausgleich ist eine schreibgeschützte Ressource in Azure Resource Manager. Sie können Ressourcen nur über die Konfigurationsdatei (CSCFG) und die Bereitstellungsdatei (CSDEF) für Cloud Services (erweiterter Support) aktualisieren.

    $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. Erstellen Sie einen Schlüsseltresor. Der Schlüsseltresor speichert Zertifikate, die Rollen von Cloud Services (erweiterter Support) zugeordnet sind. Der Schlüsseltresor muss sich in der gleichen Region und im gleichen Abonnement befinden wie die Bereitstellung von Cloud Services (erweiterter Support) und einen eindeutigen Namen besitzen. Weitere Informationen finden Sie unter Verwenden von Zertifikaten mit Cloud Services (erweiterter Support).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Aktualisieren Sie Schlüsseltresor-Zugriffsrichtlinie, und erteilen Sie Ihrem Benutzerkonto Zertifikatberechtigungen:

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

    Legen Sie alternativ die Zugriffsrichtlinie mithilfe des Werts ObjectId fest. Führen Sie Get-AzADUser aus, um den Wert ObjectId abzurufen:

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. Im folgenden Beispiel wird einem Schlüsseltresor ein selbstsigniertes Zertifikat hinzugefügt. Sie müssen den Zertifikatfingerabdruck über die Konfigurationsdatei (.cscfg) für Rollen von Cloud Services (erweiterter Support) hinzufügen.

    $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. Erstellen Sie ein In-Memory-Objekt vom Typ „Betriebssystemprofil“. Im Betriebssystemprofil sind die Zertifikate angegeben, die Rollen von Cloud Services (erweiterter Support) zugeordnet sind. Dieses Zertifikat haben Sie im vorherigen Schritt erstellt.

    $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. Erstellen Sie ein In-Memory-Objekt vom Typ „Rollenprofil“. Ein Rollenprofil definiert SKU-spezifische Eigenschaften einer Rolle wie Name, Kapazität und Ebene. In diesem Beispiel werden zwei Rollen definiert: „frontendRole“ und „backendRole“. Rollenprofilinformationen müssen der Rollenkonfiguration entsprechen, die in der Konfigurationsdatei (.cscfg) und in der Definitionsdatei (.csdef) der Bereitstellung definiert ist.

    $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. (Optional) Erstellen Sie ein In-Memory-Objekt vom Typ „Erweiterungsprofil“, das Ihrer Bereitstellung von Cloud Services (erweiterter Support) hinzugefügt werden soll. In diesem Beispiel wird eine RDP-Erweiterung (Remotedesktopprotokoll) hinzugefügt:

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

    Die Konfigurationsdatei (.cscfg) darf nur PublicConfig-Tags und muss einen Namespace enthalten, wie im folgenden Beispiel gezeigt:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Optional) In einer PowerShell-Hashtabelle können Sie Tags definieren, die Ihrer Bereitstellung hinzugefügt werden sollen:

    $tag=@{"Owner" = "Contoso"} 
    
  13. Erstellen Sie die Bereitstellung von Cloud Services (erweiterter Support) mithilfe der Profilobjekte und SAS-URIs, die Sie definiert haben:

    $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