Erstellen von Azure DevTest Labs-Umgebungen aus ARM-Vorlagen

In diesem Artikel erfahren Sie, wie Sie Azure DevTest Labs-Umgebungen aus ARM-Vorlagen (Azure Resource Manager) erstellen. Sie können DevTest Labs-Umgebungen verwenden, um Labs einfach und konsistent mit mehreren virtuellen Computern (VMs) oder PaaS-Ressourcen (Platform-as-a-Service) bereitzustellen. Sie können diesen Ansatz verwenden, um ein Lab für eine mehrstufige Webanwendung oder eine SharePoint-Farm zu erstellen.

Ressourcen in einer DevTest Labs-Umgebung teilen sich denselben Lebenszyklus, und Sie können sie gemeinsam verwalten. Sie können die Kosten für Lab-Umgebungen und PaaS-Ressourcen genau wie die Kosten für einzelne Lab-VMs nachverfolgen.

Sie können Azure DevTest Labs für die Verwendung von ARM-Vorlagen aus einem öffentlichen oder privaten GitHub-Repository konfigurieren. Das folgende Diagramm zeigt die Erstellung einer Umgebung mit DevTest Labs aus einer ARM-Vorlage in einem öffentlichen oder benutzerdefinierten Vorlagenrepository. Im Abschnitt Vorlagenrepositorys für Labs wird dieser Prozess ausführlich beschrieben.

Diagramm, das zeigt, wie Sie eine Umgebung mit DevTest Labs mithilfe einer ARM-Vorlage in einem Vorlagen-Repository erstellen.

Hinweis

Azure Deployment Environments (ADE) wird für die Erstellung von Umgebungen dringend empfohlen. ADE ermöglicht Entwicklern die schnelle Bereitstellung der App-Infrastruktur mithilfe von projektbasierten Vorlagen und sorgt für konsistente und sichere Umgebungen für Ihre Entwicklungsteams.

Weitere Informationen zu Azure Deployment Environments finden Sie in der Dokumentation zu Azure Deployment Environments.

Voraussetzungen

  • Es ist hilfreich, Erfahrungen beim Konfigurieren von Lab-Umgebungen in DevTest Labs zu haben. Wenn Sie noch nicht mit Labs arbeiten möchten, lesen Sie zunächst die Anweisungen im Abschnitt Einstellungen für öffentliche Umgebung konfigurieren. Sie müssen wissen, wie Sie Vorlagenrepositorys konfigurieren, öffentliche Umgebungen aktivieren oder deaktivieren und Vorlagen auswählen, um Labs zu erstellen.

Begrenzungen

Es gibt einige Einschränkungen, die Sie beachten sollten, wenn Sie Labs aus ARM-Vorlagen in DevTest Labs erstellen:

  • DevTest Labs unterstützt das Feature für das automatische Herunterfahren von virtuellen Computern (VM) für PaaS-Ressourcen, die aus ARM-Vorlagen erstellt wurden, nicht.

  • DevTest Labs wertet nicht alle Lab-Richtlinien aus, wenn Sie ARM-Vorlagen bereitstellen. Die folgenden Richtlinien werden nicht ausgewertet:

    • Anzahl der virtuellen Computer pro Lab-Benutzer
    • Anzahl der Premium-VMs pro Benutzer
    • Anzahl der Premium-Desks pro Benutzer

    Angenommen, Sie verfügen über eine Lab-Richtlinie, mit der jeder Benutzer maximal fünf VMs erstellen kann. In DevTest Labs kann jeder ein Benutzer eine ARM-Vorlage bereitstellen, die Dutzende von VMs erstellt.

Erstellen von Umgebungen anhand von Vorlagen

Sie können eine Umgebung aus dem öffentlichen Azure DevTest Labs-Vorlagenrepository erstellen oder Ihrem Lab ein privates Vorlagenrepository hinzufügen.

Erstellen Sie eine Umgebung aus einer Vorlage, indem Sie die folgenden Schritte ausführen:

  1. Wechseln Sie im Azure-Portal zu Ihrer DevTest Labs-Ressource.

  2. Erweitern Sie auf der Seite Übersicht des Labs den Abschnitt Meine Labs im Menü links, und wählen Sie die Option Meine Umgebungen aus.

  3. Wählen Sie auf der Seite Meine Umgebungen die Option Hinzufügen auf der Symbolleiste aus.

  4. Wählen Sie auf der Seite Basis auswählen die zu verwendende ARM-Umgebungsvorlage aus:

    Screenshot der ARM-Vorlagen für die öffentliche Umgebung, die für die DevTest Labs-Lab-Ressource verfügbar sind.

  5. Geben Sie im Bereich Hinzufügen einen Umgebungsnamen ein, und konfigurieren Sie die anderen Parametereinstellungen.

    Der Typ und die Anzahl der Parameter ist für jede ARM-Vorlage eindeutig. Ein rotes Sternchen (*) gibt eine erforderliche Einstellung an. Sie müssen Werte für alle erforderlichen Einstellungen eingeben.

    Einige Parameterwerte in der ARM-Vorlagendatei (azuredeploy.parameters.json) erzeugen leere Einstellungsfelder im Bereich Hinzufügen (kein Standardwert). Diese Parameterwerte umfassen GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEY und GEN-PASSWORD.

    Screenshot des Bereichs

    Für sichere Zeichenfolgenparameter wie Kennwörter können Sie geheime Schlüssel aus Azure Key Vault verwenden. Informationen zum Speichern von Geheimnissen in einem Schlüsseltresor und deren Verwendung wenn Sie Lab-Ressourcen erstellen finden Sie unter Speichern von Geheimnissen in Azure Key Vault.

  6. Wählen Sie Hinzufügen aus, um die Umgebung zu erstellen. Die Umgebungsbereitstellung wird sofort gestartet.

    Hinweis

    Der Prozess für die Bereitstellung einer Umgebung kann eine lange Zeit in Anspruch nehmen. Die Gesamtzeit hängt von der Anzahl der Dienstinstanzen, VMs und anderen Ressourcen ab, die DevTest Labs als Teil der Lab-Umgebung erstellt.

  7. Um den Bereitstellungsstatus zu überwachen, kehren Sie zur Seite Meine Umgebungen für das Lab zurück:

    Screenshot, der zeigt, wie der Bereitstellungsstatus für die Lab-Umgebung angezeigt wird.

    Während die Bereitstellung ausgeführt wird, ist der Umgebungsstatus Erstellen. Nach Abschluss der Bereitstellung ändert sich der Status in Bereit. Sie können auf der Symbolleiste Aktualisieren auswählen, um die Seitenansicht zu aktualisieren und den aktuellen Status zu überprüfen.

  8. Wenn die Umgebung bereit ist, können Sie die Umgebung in der Liste Meine Umgebungen erweitern, um die von der Vorlage bereitgestellten virtuellen Computer anzuzeigen:

    Screenshot der Liste der virtuellen Computer, die für die neu bereitgestellte Umgebung erstellt wurden.

  9. Die Bereitstellung erstellt eine neue Ressourcengruppe zum Bereitstellen aller Umgebungsressourcen, die von der ARM-Vorlage definiert werden. Wählen Sie den Namen der Umgebung in der Liste Meine Umgebungen aus, um die Ressourcengruppe und alle von der Vorlage erstellten Ressourcen anzuzeigen:

    Screenshot der Ressourcengruppe mit allen Umgebungsressourcen, einschließlich VMs, Datenträgern, virtuellem Netzwerk und mehr.

  10. Wählen Sie eine VM der Umgebung aus der Liste aus, um verfügbare Aktionen für die VM anzuzeigen, z. B. das Verwalten von Konfiguration, Zeitplänen und Richtlinien:

    Screenshot mit den verfügbaren Aktionen für den gewählten Umgebungs-VM.

Erkunden von Vorlagenrepositorys

Die ARM-Vorlagen zum Erstellen von Umgebungen in DevTest Labs stehen aus zwei Quellen zur Verfügung:

  • DevTest Labs umfasst ein öffentliches ARM-Vorlagenrepository, das vorgefertigte Umgebungsvorlagen für Azure Web Apps, einen Azure Service Fabric-Cluster und SharePoint-Entwicklungsfarmen enthält. Die Vorlagen verwenden eine Mindestanzahl von Eingabeparametern, um einen reibungslosen Einstieg in die Nutzung von PaaS-Ressourcen zu ermöglichen. Sie können die öffentlichen Umgebungsvorlagen unverändert verwenden oder sie an Ihre Bedürfnisse anpassen. Sie können auch Überarbeitungen oder Ergänzungen zu einer öffentlichen Vorlage vorschlagen, indem Sie einen Pull Request für das öffentliche GitHub-Vorlagenrepository übermitteln.

  • Sie können Umgebungsvorlagen in Ihren eigenen öffentlichen oder privaten GitHub-Repositorys speichern und diese Repositorys Ihrem Lab hinzufügen, um Ihre Vorlagen allen Lab-Benutzern zur Verfügung zu stellen.

Konfigurieren von Einstellungen für öffentliche Umgebungen

Sie können Ihr Lab so konfigurieren, dass die Verwendung von Vorlagen aus dem GitHub Repository öffentlicher Vorlagen aktiviert wird. Wenn Sie das Repository öffentlicher Vorlagen für ein Lab aktivieren, können Benutzer schnell eine Lab-Umgebung erstellen, indem sie diese Vorlagen direkt im Azure-Portal auswählen, ähnlich wie sie einen virtuellen Computer in einem Lab erstellen. Darüber hinaus können Sie auswählen, aus welchen Vorlagen Benutzer Lab-Umgebungen erstellen können.

Festlegen des Zugriffs auf öffentliche Umgebungen für neue Labs

Konfigurieren Sie den Zugriff auf öffentliche Umgebungs-Repositorys für ein neues Lab, indem Sie die folgenden Schritte ausführen:

  1. Wählen Sie während des Prozesses zum Erstellen einer DevTest Labs-Ressource die Registerkarte Standardeinstellungen aus.

  2. Legen Sie die Option Öffentliche Umgebungen auf Ein fest:

    Screenshot, der zeigt, wie Öffentliche Umgebungsrepositorys für ein Lab während des Lab-Erstellungsprozesses aktiviert werden.

Festlegen des Zugriffs auf öffentliche Umgebungen für vorhandene Labs

Für vorhandene Labs oder Labs, die Sie mit einer ARM-Vorlage erstellen, sind öffentliche Umgebungen möglicherweise nicht aktiviert. Sie können den Zugriff auf öffentliche Umgebungsrepositorys für jedes vorhandene Lab mit der Option Öffentliche Umgebungen für dieses Lab aktivieren steuern.

Führen Sie die folgenden Schritte aus, um den Zugriff auf das öffentliche Umgebungs-Repository für alle vorhandenen Labs zu aktivieren oder zu deaktivieren:

  1. Wechseln Sie im Azure-Portal zu Ihrer DevTest Labs-Lab-Ressource, in der Sie den Zugriff auf öffentliche Umgebungen festlegen möchten.

  2. Erweitern Sie auf der Seite Übersicht des Labs den Abschnitt Einstellungen im linken Menü, und wählen Sie Konfiguration und Richtlinien aus.

  3. Erweitern Sie auf der Seite Konfiguration und Richtlinien den Abschnitt Virtuelle Computerbasis im linken Menü, und wählen Sie Öffentliche Umgebungen aus.

  4. Legen Sie auf der Seite Öffentliche Umgebungen die Option Öffentliche Umgebungen für dieses Lab aktivieren auf Ja fest:

    Screenshot, der zeigt, wie sie alle Repositorys für öffentliche Umgebungen für eine vorhandene Lab-Ressource aktivieren.

  5. Wählen Sie Speichern.

Auswählen verfügbarer Vorlagen für öffentliche Umgebungen

Wenn Sie die Option Öffentliche Umgebungen für dieses Lab aktivieren festlegen, um den Zugriff auf öffentliche Umgebungen für Ihr Lab zu steuern, werden standardmäßig alle Umgebungsvorlagen ausgewählt. Die Optionseinstellung ermöglicht oder verbietet den Zugriff auf alle Umgebungen basierend auf Ihrer Auswahl. Mit den Auswahlkontrollkästchen in der Liste können Sie angeben, auf welche Umgebungen Ihre Benutzer zugreifen können.

Führen Sie die folgenden Schritte aus, um den Zugriff nur auf bestimmte Umgebungen für das Lab zu ermöglichen:

  1. Legen Sie auf der Seite Öffentliche Umgebungen die Option Öffentliche Umgebungen für dieses Lab aktivieren auf Ja fest.

  2. Deaktivieren Sie bestimmte Umgebungen in der Liste, damit sie für Lab-Benutzer nicht verfügbar sind:

    Screenshot, der zeigt, wie Sie öffentliche Umgebungsrepositorys für ein Lab deaktivieren, um den Zugriff für Benutzer zu deaktivieren.

  3. Wählen Sie Speichern.

Konfigurieren der Rechte von Umgebungsbenutzern

Labbenutzern wird standardmäßig die Reader-Rolle in Repositorys in öffentlichen Umgebungsrepositorys zugewiesen. Sie können keine Umgebungsressourcen ändern, und sie können keine Ressourcen beenden oder starten.

Führen Sie die folgenden Schritte aus, um Lab-Benutzern die Rolle Mitwirkender zuzuweisen und ihnen das Bearbeiten von Umgebungsressourcen zu ermöglichen:

  1. Wechseln Sie im Azure-Portal zu Ihrer DevTest Labs-Lab-Ressource, in der Sie Benutzerrollenzuweisungen anpassen möchten.

  2. Erweitern Sie auf der Seite Übersicht des Labs den Abschnitt Einstellungen im linken Menü, und wählen Sie Konfiguration und Richtlinien aus.

  3. Erweitern Sie auf der Seite Konfiguration und Richtlinien den Abschnitt Einstellungen im linken Menü, und wählen Sie Lab-Einstellungen aus.

  4. Legen Sie auf der Seite Lab-Einstellungen die Umgebungsgruppe>Ressourcengruppe Benutzerrechte Option auf Mitwirkender fest:

    Screenshot, der zeigt, wie Sie Rollenberechtigungen für Mitwirkende für Lab-Benutzer in DevTest Labs festlegen.

  5. Wählen Sie Speichern.

Automatische Erstellung von Umgebungen

Wenn Sie mehrere Umgebungen für Entwicklungs- oder Testszenarien erstellen müssen, können Sie die Umgebungsbereitstellung mithilfe von Azure PowerShell oder der Azure CLI automatisieren.

Lab-Besitzer und -Administratoren können Azure PowerShell verwenden, um VMs und Umgebungen anhand von ARM-Vorlagen zu erstellen. Sie können die Bereitstellung auch über die Azure CLI automatisieren, indem Sie den Befehl az deployment group create verwenden, um Umgebungen zu erstellen. Weitere Informationen finden Sie unter Bereitstellen von Ressourcen mit ARM-Vorlagen und der Azure CLI.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Automatisieren Sie die Bereitstellung von ARM-Umgebungsvorlagen mit Azure PowerShell mit diesen Schritten:

  1. Speichern Sie die ARM-Umgebungsvorlage in einem GitHub-Repository.

  2. Fügen Sie ihrem Lab das GitHub ARM-Vorlagen-Repository hinzu.

  3. Speichern Sie das folgende PowerShell-Skript auf Ihrem Computer mit dem Dateinamen deployenv.ps1. Dieses Skript ruft die ARM-Vorlage auf, um die Umgebung im Lab zu erstellen.

    #Requires -Module Az.Resources
    
    [CmdletBinding()]
    
    param (
    # ID of the Azure subscription for the lab
    [string] [Parameter(Mandatory=$true)] $SubscriptionId,
    
    # Name of the lab in which to create the environment
    [string] [Parameter(Mandatory=$true)] $LabName,
    
    # Name of the template repository connected to the lab
    [string] [Parameter(Mandatory=$true)] $RepositoryName,
    
    # Name of the template (folder name in the GitHub repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to pass to the template. Each parameter is prefixed with "-param_".
    # For example, if the template has a parameter named "TestVMName" with a value of "MyVMName",
    # the string in $Params is "-param_TestVMName MyVMName".
    # This convention allows the script to dynamically handle different templates.
    [Parameter(ValueFromRemainingArguments=$true)]
        $Params
    )
    
    # Sign in to Azure, or comment out this statement to completely automate environment creation.
    Connect-AzAccount
    
    # Select the subscription for your lab.  
    Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
    
    # Get the user ID to use later in the script.
    $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id)
    
    # Get the lab location.
    $lab = Get-AzResource -ResourceType "Microsoft.DevTestLab/labs" -Name $LabName
    if ($lab -eq $null) { throw "Unable to find lab $LabName in subscription $SubscriptionId." }
    
    # Get information about the repository connected to your lab.
    $repository = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
        -ResourceName $LabName `
        -ApiVersion 2016-05-15 `
        | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($repository -eq $null) { throw "Unable to find repository $RepositoryName in lab $LabName." }
    
    # Get information about the ARM template base for the environment.
    $template = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType "Microsoft.DevTestLab/labs/artifactSources/armTemplates" `
        -ResourceName "$LabName/$($repository.Name)" `
        -ApiVersion 2016-05-15 `
        | Where-Object { $TemplateName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($template -eq $null) { throw "Unable to find template $TemplateName in lab $LabName." }
    
    # Build the template parameters by using parameter names and values.
    $parameters = Get-Member -InputObject $template.Properties.contents.parameters -MemberType NoteProperty | Select-Object -ExpandProperty Name
    $templateParameters = @()
    
    # Extract the custom parameters from $Params and format them as name/value pairs.
    $Params | ForEach-Object {
        if ($_ -match '^-param_(.*)' -and $Matches[1] -in $parameters) {
            $name = $Matches[1]                
        } elseif ( $name ) {
            $templateParameters += @{ "name" = "$name"; "value" = "$_" }
            $name = $null #reset name variable
        }
    }
    
    # Create an object to hold the necessary template properties.
    $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; }
    
    # Deploy the environment in your lab by using the New-AzResource command.
    New-AzResource -Location $Lab.Location `
        -ResourceGroupName $lab.ResourceGroupName `
        -Properties $templateProperties `
        -ResourceType 'Microsoft.DevTestLab/labs/users/environments' `
        -ResourceName "$LabName/$UserId/$EnvironmentName" `
        -ApiVersion '2016-05-15' -Force
    
    Write-Output "Environment $EnvironmentName completed."
    
  4. Aktualisieren Sie die folgenden Platzhalter im Skript mit ihren eigenen Lab-Werten:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (Vorlagenordner im GitHub-Repository)
    • EnvironmentName

    Der folgende Codeausschnitt zeigt, wie das Skript mit Beispielparameterwerten ausgeführt wird:

    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
    
  5. Führen Sie das Skript aus.