Verwalten eines virtuellen Computers in Azure DevTest Labs

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Hinweis

In Microsoft Team Foundation Server (TFS) 2018 und früheren Versionen werden Build- und Release-Pipelines als Definitionen bezeichnet, Ausführungen werden als Builds bezeichnet, Dienstverbindungen werden als Dienstendpunkte bezeichnet, Stages werden als Umgebungen bezeichnet und Aufträge werden als Phasen bezeichnet.

Mit dem Azure DevTest Labs-Dienst können Sie Entwicklungs- und Testphasen schnell mithilfe wiederverwendbarer Vorlagen bereitstellen. Sie können vordefinierte Bilder verwenden, Abfälle mit Kontingenten und Richtlinien minimieren und Kosten durch automatisiertes Herunterfahren minimieren.

Mithilfe einer in Azure Pipelines installierten Erweiterung können Sie Ihre Build- und Releasepipeline ganz einfach in Azure DevTest Labs integrieren. Die Erweiterung installiert drei Aufgaben, um einen virtuellen Computer zu erstellen, ein benutzerdefiniertes Image von einer VM zu erstellen und einen virtuellen Computer zu löschen. Dadurch können Sie beispielsweise schnell ein "goldenes Image" für bestimmte Testaufgaben bereitstellen und dann löschen, wenn der Test abgeschlossen ist.

In diesem Beispiel wird gezeigt, wie Sie einen virtuellen Computer erstellen und bereitstellen, ein benutzerdefiniertes Image erstellen und dann den virtuellen Computer löschen. Dies geschieht jedoch als eine vollständige Pipeline, obwohl sie die Aufgaben einzeln in Ihrer eigenen benutzerdefinierten Buildtest-Test-Deploy-Pipeline verwenden würde.

Vorbereiten

Installieren Sie zunächst die Azure DevTest Labs Tasks-Erweiterung auf Visual Studio Marketplace, Azure DevOps Registerkarte:

  • Wählen Sie für Azure Pipelines die Option "Installieren" aus.
  • Wählen Sie für TFS die Erweiterung auf Ihrem Server herunterladen und installieren.

Erstellen einer Azure RM-Vorlage

Führen Sie diese Aufgaben aus, um die Vorlage Azure Resource Manager (ARM) zu erstellen, die Sie zum Erstellen eines virtuellen Azure-Computers bei Bedarf verwenden können.

  1. Führen Sie die Schritte in diesen Dokumenten auf der Azure-Website aus, um eine ARM-Vorlage in Ihrem Abonnement zu erstellen.

  2. Führen Sie die Schritte in diesen Dokumenten auf der Azure-Website aus, um die ARM-Vorlage als Datei auf Ihrem Computer zu speichern. Geben Sie der Datei den Namen CreateVMTemplate.json.

  3. Bearbeiten Sie die Datei CreateVMTemplate.json, um sie für Windows Remoteverwaltung (WinRM) zu konfigurieren.

    WinRM-Zugriff ist erforderlich, um Bereitstellungsaufgaben wie Azure File Copy und PowerShell auf Zielcomputern zu verwenden.

  4. Überprüfen Sie die Vorlage im Quellcodeverwaltungssystem.

  5. Öffnen Sie einen Text-Editor, und kopieren Sie das folgende Skript darin.

    Param( [string] $labVmId)
    
    $labVmComputeId = (Get-AzureRmResource -Id $labVmId).Properties.ComputeId
    
    # Get lab VM resource group name
    $labVmRgName = (Get-AzureRmResource -Id $labVmComputeId).ResourceGroupName
    
    # Get the lab VM Name
    $labVmName = (Get-AzureRmResource -Id $labVmId).Name
    
    # Get lab VM public IP address
    $labVMIpAddress = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName
                       -Name $labVmName).IpAddress
    
    # Get lab VM FQDN
    $labVMFqdn = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName
                  -Name $labVmName).DnsSettings.Fqdn
    
    # Set a variable labVmRgName to store the lab VM resource group name
    Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"
    
    # Set a variable labVMIpAddress to store the lab VM Ip address
    Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"
    
    # Set a variable labVMFqdn to store the lab VM FQDN name
    Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"
    
    
  6. Überprüfen Sie das Skript in Ihrem Quellcodeverwaltungssystem. Geben Sie dem Skript einen Namen wie z.B. GetLabVMParams.ps1.

    Dieses Skript, wenn er im Rahmen der Releasepipeline ausgeführt wird, sammelt Werte, die Sie für die Bereitstellung Ihrer App auf dem virtuellen Computer benötigen, wenn Sie Aufgabenschritte wie Azure File Copy oder PowerShell auf Zielcomputern verwenden. Dies sind die Aufgaben, die Sie in der Regel zum Bereitstellen von Apps auf einer Azure-VM verwenden, und sie erfordern Werte wie den Namen der VM-Ressourcengruppe, die IP-Adresse und den vollqualifizierten Domänennamen (FQDN).

Bereitstellen

Führen Sie die folgenden Schritte aus, um die Releasepipeline in Azure Pipelines zu erstellen.

  1. Öffnen Sie die Registerkarte "Versionen" von Azure Pipelines, und wählen Sie das Symbol "+" aus, um eine neue Releasepipeline zu erstellen.

  2. Wählen Sie im Dialogfeld " Releasepipeline erstellen " die Vorlage "Leer " aus, und wählen Sie "Weiter" aus.

  3. Wählen Sie auf der nächsten Seite " Später auswählen" aus, und wählen Sie dann "Erstellen" aus. Dadurch wird eine neue Releasepipeline mit einer Standardstufe und keine verknüpften Artefakte erstellt.

  4. Wählen Sie in der neuen Releasepipeline die Auslassungspunkte (...) neben dem Phasennamen aus, um das Kontextmenü zu öffnen, und wählen Sie "Variablen konfigurieren" aus.

  5. Geben Sie im Dialogfeld "Konfigurieren – Phase " die folgenden Werte für die Variablen ein, die Sie in den Releasepipelineaufgaben verwenden:

    • vmName: Geben Sie den Namen ein, den Sie der VM zugewiesen haben, wenn Sie die ARM-Vorlage in der Azure-Portal erstellt haben.
    • userName: Geben Sie den Benutzernamen ein, den Sie der VM zugewiesen haben, wenn Sie die ARM-Vorlage in der Azure-Portal erstellt haben.
    • kennwort: Geben Sie das Kennwort ein, das Sie der VM zugewiesen haben, wenn Sie die ARM-Vorlage in der Azure-Portal erstellt haben. Verwenden Sie das Schlosssymbol, um das Kennwort auszublenden und zu schützen.

  6. Die erste Phase in dieser Bereitstellung besteht darin, die VM zu erstellen, die Sie als "goldenes Image" für nachfolgende Bereitstellungen verwenden. Sie erstellen dies in Ihrer Azure DevTestsLab-Instanz mithilfe der aufgabe, die speziell für diesen Zweck entwickelt wurde. Wählen Sie in der Releasepipeline +Aufgaben hinzufügen aus, und fügen Sie eine Azure DevTest Labs VM-Aufgabe erstellen auf der Registerkarte "Bereitstellen" hinzu.

  7. Konfigurieren Sie die Azure DevTest Labs Vm-Aufgabe wie folgt erstellen:

    Azure DevTest Labs TasksAzure DevTest Labs Tasks – Erstellen Sie den virtuellen Computer, der für nachfolgende Bereitstellungen verwendet werden soll.

    • Azure RM-Abonnement: Wählen Sie eine Verbindung aus der Liste unter "Verfügbare Azure Service Connections " aus, oder erstellen Sie eine eingeschränktere Berechtigungsverbindung mit Ihrem Azure-Abonnement. Weitere Informationen finden Sie unter Azure Resource Manager Dienstverbindung.

    • Lab Name: Wählen Sie den Namen der zuvor erstellten Instanz aus.

    • Vorlagenname: Geben Sie den vollständigen Pfad und namen der Vorlagendatei ein, die Sie in Ihrem Quellcode-Repository gespeichert haben. Sie können die integrierten Eigenschaften von Azure Pipelines verwenden, um den Pfad zu vereinfachen, z. B. : $(System.DefaultWorkingDirectory)/Contoso/ARMTemplates/CreateVMTemplate.json

    • Vorlagenparameter: Geben Sie die Parameter für die variablen ein, die in der Vorlage definiert sind. Verwenden Sie die Namen der Variablen, die Sie in der Phase definiert haben, z. B. : -newVMName '$(vmName)' -userName '$(userName)' -password (ConvertTo-SecureString -String '$(password)' -AsPlainText -Force)

    • Ausgabevariablen – Lab VM ID: Sie benötigen die ID der neu erstellten VM in nachfolgenden Aufgaben. Der Standardname der Phasenvariable, die automatisch mit dieser ID gefüllt wird, wird im Abschnitt "Ausgabevariablen " festgelegt. Sie können dies ggf. bearbeiten, aber denken Sie daran, den richtigen Namen in nachfolgenden Aufgaben zu verwenden. Die LAB-VM-ID befindet sich in der Form: /subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualMachines/{vmName}.

  8. Die nächste Phase besteht darin, das zuvor erstellte Skript auszuführen, um die Details der Vm "DevTest Labs" zu erfassen. Wählen Sie in der Releasepipeline +Aufgaben hinzufügen aus, und fügen Sie eine Azure PowerShell Aufgabe auf der Registerkarte "Bereitstellen" hinzu. Konfigurieren Sie die Aufgabe wie folgt:

    Azure PowerShellDeploy: Azure PowerShell – Execute the script to collect the details of the DevTest Labs VM.

    • Azure-Verbindungstyp: Azure Resource Manager.

    • Azure RM-Abonnement: Wählen Sie eine Verbindung aus der Liste unter "Verfügbare Azure Service Connections " aus, oder erstellen Sie eine eingeschränktere Berechtigungsverbindung mit Ihrem Azure-Abonnement. Weitere Informationen finden Sie unter Azure Resource Manager Dienstverbindung.

    • Skripttyp: Script File.

    • Skriptpfad: Geben Sie den vollständigen Pfad und den Namen des Skripts ein, das Sie in Ihrem Quellcode-Repository gespeichert haben. Sie können die integrierten Eigenschaften von Azure Pipelines verwenden, um den Pfad zu vereinfachen, z. B. : $(System.DefaultWorkingDirectory/Contoso/Scripts/GetLabVMParams.ps1

    • Skriptargumente: Geben Sie als Skriptargument den Namen der Phasenvariable ein, die automatisch mit der ID der Lab-VM durch die vorherige Aufgabe gefüllt wurde, z. B. : -labVmId '$(labVMId)' |

    Das Skript sammelt die werte, die Sie benötigen, und speichert sie in Phasenvariablen in der Releasepipeline, sodass Sie sie in nachfolgenden Aufgaben problemlos darauf verweisen können.

  9. Jetzt können Sie Ihre App auf der neuen Vm "DevTest Labs" bereitstellen. Die Aufgaben, die Sie in der Regel verwenden, sind Azure File Copy und PowerShell auf Zielcomputern.

    • Die Informationen über die VM, die Sie für die Parameter dieser Aufgaben benötigen, werden in drei Konfigurationsvariablen namens labVmRgName, labVMIpAddress und labVMFqdn innerhalb der Releasepipeline gespeichert.
    • Wenn Sie einfach mit dem Erstellen einer DevTest Labs-VM und einem benutzerdefinierten Image experimentieren möchten, ohne eine App dafür bereitzustellen, überspringen Sie diesen Schritt.

  10. Der nächste Schritt besteht darin, ein Image der neu bereitgestellten VM in Ihrer Azure DevTest Labs-Instanz zu erstellen. Sie können dieses Image dann verwenden, um Kopien der VM bei Bedarf zu erstellen, wenn Sie eine Dev-Aufgabe ausführen oder einige Tests ausführen möchten. Wählen Sie in der Releasepipeline +Aufgaben hinzufügen aus, und fügen Sie eine Azure DevTest Labs Aufgabe "Benutzerdefiniertes Image erstellen" auf der Registerkarte "Bereitstellen" hinzu. Konfigurieren Sie sie wie folgt:

    Azure DevTest Labs TasksAzure DevTest Labs Tasks – Erstellen Sie ein Image der VM.

    • Azure RM-Abonnement: Wählen Sie eine Verbindung aus der Liste unter "Verfügbare Azure Service Connections " aus, oder erstellen Sie eine eingeschränktere Berechtigungsverbindung mit Ihrem Azure-Abonnement. Weitere Informationen finden Sie unter Azure Resource Manager Dienstverbindung.

    • Lab Name: Wählen Sie den Namen der zuvor erstellten Instanz aus.

    • Benutzerdefinierter Bildname: Geben Sie einen Namen für das benutzerdefinierte Bild ein, das Sie erstellen.

    • Beschreibung: Geben Sie optional eine Beschreibung ein, um das richtige Bild später einfach auszuwählen.

    • Source Lab VM - Source Lab VM ID: Wenn Sie den Standardnamen der Phasenvariable geändert haben, die automatisch mit der ID der Lab-VM durch eine frühere Aufgabe gefüllt wurde, bearbeiten Sie sie hier. Der Standardwert lautet $(labVMId).

    • Ausgabevariablen – Lab VM ID: Sie benötigen die ID des neu erstellten Images, wenn Sie es verwalten oder löschen möchten. Der Standardname der Phasenvariable, die automatisch mit dieser ID gefüllt wird, wird im Abschnitt "Ausgabevariablen " festgelegt. Sie können dies ggf. bearbeiten.

  11. Die letzte Phase in diesem Beispiel besteht darin, die vm zu löschen, die Sie in Ihrer Azure DevTest Labs Instanz bereitgestellt haben. In Wirklichkeit führen Sie dies aus, nachdem Sie die Dev-Aufgaben ausgeführt haben, oder führen Sie die tests aus, die Sie für die bereitgestellte VM benötigen. Wählen Sie in der Releasepipeline +Aufgaben hinzufügen aus, und fügen Sie eine Azure DevTest Labs VM-Aufgabe löschen auf der Registerkarte "Bereitstellen" hinzu. Konfigurieren Sie sie wie folgt:

    Azure DevTest Labs TasksAzure DevTest Labs Tasks – Löschen Sie den virtuellen Computer.

    • Azure RM-Abonnement: Wählen Sie eine Verbindung aus der Liste unter "Verfügbare Azure Service Connections " aus, oder erstellen Sie eine eingeschränktere Berechtigungsverbindung mit Ihrem Azure-Abonnement. Weitere Informationen finden Sie unter Azure Resource Manager Dienstverbindung.

    • Lab VM ID: Wenn Sie den Standardnamen der Phasenvariable geändert haben, die automatisch mit der ID der Lab-VM durch eine frühere Aufgabe gefüllt wurde, bearbeiten Sie sie hier. Die Standardeinstellung ist $(labVMId).

  12. Geben Sie einen Namen für die Releasepipeline ein, und speichern Sie sie.

  13. Erstellen Sie eine neue Version, wählen Sie den neuesten Build aus, und stellen Sie sie in der einzelnen Phase in der Pipeline bereit.

  14. Aktualisieren Sie in jeder Phase die Ansicht Ihrer DevTest Labs-Instanz in der Azure-Portal, um die zu erstellende VM und das Image anzuzeigen, und die VM wird erneut gelöscht. Sie können jetzt das benutzerdefinierte Image verwenden, um VMs bei Bedarf zu erstellen.

    Weitere Informationen oder wenn Sie Vorschläge zur Verbesserung der Erweiterung haben, besuchen Sie das DevTest Labs-Feedbackforum.

Häufig gestellte Fragen

Ich verwende TFS lokal und einige dieser Features werden nicht angezeigt. Warum nicht?

Einige dieser Features sind nur auf Azure Pipelines und noch nicht lokal verfügbar. Einige Features sind lokal verfügbar, wenn Sie ein Upgrade auf die neueste Version von TFS vorgenommen haben.

Hilfe und Support