Es gibt mehrere Möglichkeiten, eine Entwicklungsumgebung mit Visual Studio auf Azure zu erstellen. Sie kann manuell im Azure-Portal oder programmatisch mit PowerShell erstellt werden.
Manuell im Azure-Portal
Sie können im Azure-Portal innerhalb weniger Minuten eine Entwicklungsumgebung erstellen. Wählen Sie im Azure-Portal das Image mit Visual Studio aus, das am besten zu Ihren Anforderungen passt. Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version, die im Azure Portal ausgewählt werden kann, Visual Studio 2015 mit Update 2 und Azure SDK 2.9. Es ist einfach, ein Image im Portal auszuwählen. Schauen wir uns nun an, wie dies im Code geschehen kann.
Programmatisch mit PowerShell
Wenn Sie eine virtuelle Maschine programmatisch erstellen möchten, ist PowerShell zusammen mit einer ARM-Vorlage Ihr Freund.
Diese ARM-Vorlage zum Beispiel hilft Ihnen bei der Erstellung eines Images mit Visual Studio. Die ARM-Vorlage enthält eine Liste von SKUs, aus der Sie wählen können, aber leider ist die Version Visual Studio 2015 mit Update 2 und Azure SDK 2.9. nicht in der Liste der SKUs enthalten. Woher sollen Sie wissen, welche SKU Sie als Parameter übergeben müssen? Der Name der SKU ist im Azure-Portal nicht sichtbar.
Dieser Artikel beschreibt die Schritte zum Abrufen einer SKU. Wenn Sie PowerShell verwenden, sind die im Artikel erwähnten Cmdlets Get-AzureVMImagePublisher, Get-AzureVMImageOffer und Get-AzureVMImageSku nicht verfügbar. Sie sollten die RM-Versionen der Cmdlets verwenden.
Um eine vollständige Liste aller Images zu erhalten, die Visual Studio anbietet, führen Sie die folgende Zeile aus:
Get-AzureRmVMImageSku -Standort Westeuropa -Herausgeber "MicrosoftVisualStudio" -Angebot "VisualStudio" | Skus auswählen
Das Ergebnis ist die folgende Liste der SKUs, die Visual Studio anbieten.
Skus ---- 2013-Community-Update-4-ws2012-az25-ntvs10 2013-Community-Update-4-ws2012-az26 2013-Community-Update-4-ws2012-az26-cor31 2013-Premium-Update-4-win81 2013-Premium-Update-4-win81n-az26 2013-Premium-Update-4-ws2012-az26 2013-Professional-Update-4-ws2012-az26 2013-Ultimate-Update-4-win81 2013-Ultimate-Update-4-win81n-az26 2013-Ultimate-Update-4-ws2012-az26 2015-Gemeinschaft-RC 2015-Enterprise-RC 2015-Enterprise-Win10Tools 2015-Professional-RC CoreCLR VS-2013-Comm-VSU5-AzureSDK-2.8-Win8.1-N-x64 VS-2013-Comm-VSU5-AzureSDK-2.8-WS2012R2 VS-2013-Comm-VSU5-Cordova-CTP3.2-AzureSDK-2.8-WS2012R2 VS-2013-Community-VSU5-AzureSDK-2.7-Win8.1-N-x64 VS-2013-Community-VSU5-AzureSDK-2.7-WS2012R2 VS-2013-Community-VSU5-Cordova-CTP3.2-AzureSDK-2.7-WS2012R2 VS-2013-Prem-VSU5-AzureSDK-2.8-Win8.1-N-x64 VS-2013-Prem-VSU5-AzureSDK-2.8-WS2012R2 VS-2013-Premium-VSU5-AzureSDK-2.7-SQL-WS2012R2 VS-2013-Premium-VSU5-AzureSDK-2.7-Win8.1-N-x64 VS-2013-Premium-VSU5-AzureSDK-2.7-WS2012R2 VS-2013-Ultimate-VSU5-AzureSDK-2.7-SQL-WS2012R2 VS-2013-Ultimate-VSU5-AzureSDK-2.7-Win8.1-N-x64 VS-2013-Ultimate-VSU5-AzureSDK-2.7-WS2012R2 VS-2013-Ultimate-VSU5-AzureSDK-2.8-Win8.1-N-x64 VS-2013-Ultimate-VSU5-AzureSDK-2.8-WS2012R2 VS-2015-Com-VSU1-AzureSDK-2.8-WS2012R2 VS-2015-Comm-AzureSDK-2.8-Cordova-Win8.1-N-x64 VS-2015-Comm-AzureSDK-2.8-WS2012R2 VS-2015-Comm-AzureSDK-2.8-WS2012R2.1 VS-2015-Comm-AzureSDK-2.8-WS2012R2.2 VS-2015-Comm-VSU1-AzureSDK-2.8-W10T-1511-N-x64 VS-2015-Comm-VSU1-AzureSDK-2.8-W10T-N-x64 VS-2015-Comm-VSU1-AzureSDK-2.8-WS2012R2 VS-2015-Comm-VSU1-AzureSDK-2.8-WS2012R2.1 VS-2015-Comm-VSU2-AzureSDK-29-W10T-N-x64 VS-2015-Comm-VSU2-AzureSDK-29-WS2012R2 VS-2015-Community-AzureSDK-2.7-Cordova-Win8.1-N-x64 VS-2015-Community-AzureSDK-2.7-W10T-Win10-N VS-2015-Community-AzureSDK-2.7-WS2012R2 VS-2015-Ent-AzureSDK-2.8-Cordova-Win8.1-N-x64 VS-2015-Ent-AzureSDK-2.8-WS2012R2 VS-2015-Ent-AzureSDK-2.8-WS2012R2.2 VS-2015-Ent-VSU1-AzureSDK-2.8-W10T-1511-N-x64 VS-2015-Ent-VSU1-AzureSDK-2.8-W10T-N-x64 VS-2015-Ent-VSU1-AzureSDK-2.8-WS2012R2 VS-2015-Ent-VSU1-AzureSDK-2.8-WS2012R2.1 VS-2015-Ent-VSU1-AzureSDK-2.8-WS2012R2.2 VS-2015-Ent-VSU2-AzureSDK-29-W10T-N-x64 VS-2015-Ent-VSU2-AzureSDK-29-WS2012R2 VS-2015-Enterprise-AzureSDK-2.7-Cordova-Win8.1-N-x64 VS-2015-Enterprise-AzureSDK-2.7-W10T-Win10-N VS-2015-Enterprise-AzureSDK-2.7-WS2012R2 VS-2015-Pro-AzureSDK-2.8-Cordova-Win8.1-N-x64 VS-2015-Pro-VSU1-AzureSDK-2.8-W10T-1511-N-x64 VS-2015-Pro-VSU1-AzureSDK-2.8-W10T-N-x64 VS-2015-Pro-VSU1-AzureSDK-2.8-WS2012R2.2 VS-2015-Professional-AzureSDK-2.7-Cordova-Win8.1-N-x64 VS-2015-Professional-AzureSDK-2.7-W10T-Win10-N VS-Next-Preview-Ent-AzureSDK-2.9-W10-N VS-Next-Preview-Ent-AzureSDK-2.9-WS2012R2
In meinem Fall kann ich zwischen Visual Studio Enterprise oder Community und zwischen Windows 10 oder Windows 2012 R2 wählen. Ich habe die folgende SKU ausgewählt:
VS-2015-Ent-VSU2-AzureSDK-29-W10T-N-x64.
Wenn Sie diese SKU mit folgendem Skript an die oben erwähnte ARM-Vorlage übergeben:
# Anmeldung bei Azure
Login-AzureRmAccount
# Wählen Sie optional das richtige Abonnement
Select-AzureRmSubscription -SubscriptionId "<IhreSubscriptionId>"
# Parameter zum Erstellen eines Visual Studio Image
$ResourceGroupName = "meineResourceGruppe"
$Ort = "Westeuropa"
$VmName = "meinVmName"
$vmAdminBenutzername = "meinAdminBenutzer"
$vmAdminPasswort = "P@ssw0rd1"
$vmSize = "Standard_DS2"
$vmVisualStudioVersion = "VS-2015-Ent-VSU2-AzureSDK-29-W10T-N-x64"
$VmIPPublicDnsName = "meinPublicDnsName"
# Erstellen Sie die Ressourcengruppe.
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location -Verbose -Force -ErrorAction Stop
# Ausführen der ARM-Vorlage
New-AzureRmResourceGroupDeployment -Name ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm') `
-ResourceGroupName $ResourceGroupName `
-TemplateUri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/visual-studio-dev-vm/azuredeploy.json `
-TemplateParameterObject @{deployLocation=$Location;vmName=$vmName;vmAdminUserName=$vmAdminUserName;vmAdminPassword=$vmAdminPassword;vmSize=$vmSize;vmVisualStudioVersion=$vmVisualStudioVersion;vmIPPublicDnsName=$vmIPPublicDnsName} -Force -Verbose
Sie erhalten den folgenden Validierungsfehler:
New-AzureRmResourceGroupDeployment : InvalidTemplate: Validierung der Bereitstellungsvorlage fehlgeschlagen: 'Der angegebene Wert 'VS-2015-Ent-VSU2-AzureSDK-2 9-W10T-N-x64′ für den Vorlagenparameter 'vmVisualStudioVersion' in Zeile '60' und Spalte '31' ist nicht gültig. Der Parameterwert ist nicht Teil des f the allowed value(s): ‘VS-2015-Pro-VSU1-AzureSDK-2.8-W10T-1511-N-x64,VS-2015-Pro-AzureSDK-2.8-Cordova-Win8.1-N-x64,VS-2015-Ent-VSU1-AzureSD K-2.8-WS2012R2,VS-2015-Ent-VSU1-AzureSDK-2.8-W10T-1511-N-x64,VS-2015-Comm-VSU1-AzureSDK-2.8-WS2012R2,VS-2015-Comm-VSU1-AzureSDK-2.8-W10T-N-x6 4,VS-2015-Comm-AzureSDK-2.8-Cordova-Win8.1-N-x64,VS-2013-Ultimate-VSU5-AzureSDK-2.8-WS2012R2,VS-2013-Prem-VSU5-AzureSDK-2.8-WS2012R2,VS-2013- Comm-VSU5-Cordova-CTP3.2-AzureSDK-2.8-WS2012R2,VS-2013-Comm-VSU5-AzureSDK-2.8-WS2012R2′.’. In Zeile:16 Zeichen:1 + New-AzureRmResourceGroupDeployment -Name ((Get-Date).ToUniversalTime( ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [New-AzureRmResourceGroupDeployment], CloudException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureResourceGroupDeploymentCommand
Das liegt daran, dass in der ARM-Vorlage nur eine begrenzte Anzahl von SKUs verfügbar ist. Um dies zu umgehen, müssen Sie die ARM-Vorlage ändern.
Ändern Sie das PowerShell-Skript, um die ARM-Vorlage lokal auszuführen:
# Anmeldung bei Azure
Login-AzureRmAccount
# Wählen Sie optional das richtige Abonnement
Select-AzureRmSubscription -SubscriptionId "<IhreSubscriptionId>"
# Parameter zum Erstellen eines Visual Studio Image
$ResourceGroupName = "meineResourceGruppe"
$Ort = "Westeuropa"
$VmName = "meinVmName"
$vmAdminBenutzername = "meinAdminBenutzer"
$vmAdminPasswort = "P@ssw0rd1"
$vmSize = "Standard_DS2"
$vmVisualStudioVersion = "VS-2015-Ent-VSU2-AzureSDK-29-W10T-N-x64"
$VmIPPublicDnsName = "meinPublicDnsName"
# Erstellen Sie die Ressourcengruppe.
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location -Verbose -Force -ErrorAction Stop
$TemplateFile = 'AzureDeploy.json'
$TemplateFile = [System.IO.Path]::Combine($PSScriptRoot, $TemplateFile)
# Ausführen der ARM-Vorlage
New-AzureRmResourceGroupDeployment -Name ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm') `
-ResourceGroupName $ResourceGroupName `
-TemplateFile $TemplateFile `
-TemplateParameterObject @{deployLocation=$Location;vmName=$vmName;vmAdminUserName=$vmAdminUserName;vmAdminPassword=$vmAdminPassword;vmSize=$vmSize;vmVisualStudioVersion=$vmVisualStudioVersion;vmIPPublicDnsName=$vmIPPublicDnsName} -Force -Verbose
Wenn Sie dieses PowerShell Script mit der leicht geänderten ARM-Vorlage ausführen, wird das Image auf Azure erstellt.
Verfasst von
Pascal Naber
Contact