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.
Informieren Sie sich über die Bereitstellungsvoraussetzungen für Cloud Services (erweiterter Support), und erstellen Sie die erforderlichen Ressourcen.
Installieren Sie das PowerShell-Modul „Az.CloudService“:
Install-Module -Name Az.CloudService
Eine neue Ressourcengruppe erstellen. Bei Verwendung einer vorhandenen Ressourcengruppe ist dieser Schritt optional.
New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US”
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
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>"
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
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
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
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
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
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}
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”
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 SieGet-AzADUser
aus, um den WertObjectId
abzurufen:Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete
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
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)}
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)}
(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>
(Optional) In einer PowerShell-Hashtabelle können Sie Tags definieren, die Ihrer Bereitstellung hinzugefügt werden sollen:
$tag=@{"Owner" = "Contoso"}
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
Zugehöriger Inhalt
- Sehen Sie sich die häufig gestellten Fragen zu Cloud Services (erweiterter Support) an.
- Stellen Sie eine Instanz von Cloud Services (erweiterter Support) über das Azure-Portal, über eine ARM-Vorlage oder mithilfe von Visual Studio bereit.
- Besuchen Sie das Beispielrepository zu Cloud Services (erweiterter Support).