Integrieren von DevTest Labs in Azure Pipelines

Mithilfe der Erweiterung Azure DevTest Labs Tasks können Sie Azure DevTest Labs in CI/CD-Pipelines (Continuous Integration und Continuous Delivery) in Azure Pipelines integrieren. Mit der Erweiterung werden unter anderem folgende Aufgaben in Azure Pipelines installiert:

  • Erstellen eines virtuellen Computers (VM)
  • Erstellen eines benutzerdefinierten Images von einem virtuellen Computer
  • Löschen einer VM

Diese Aufgaben erleichtern beispielsweise die schnelle Bereitstellung einer Golden Image-VM, das Ausführen eines bestimmten Tests und das anschließende Löschen der VM.

In diesem Artikel wird gezeigt, wie Sie mithilfe von Azure DevTest Labs Tasks in nur einer Releasepipeline eine VM erstellen und bereitstellen, ein benutzerdefiniertes Image erstellen und anschließend die VM löschen. Normalerweise würden Sie diese Aufgaben separat in eigenen Build-, Test- und Bereitstellungspipelines ausführen.

Erste Schritte mit Azure DevTest Labs

Neu bei Azure? Kostenloses Azure-Konto erstellen.

Sind Sie bereits in Azure? Erste Schritte mit Ihrem ersten Lab in DevTest Labs: Erste Schritte mit Azure DevTest Labs in Minuten.

Voraussetzungen

  • Erstellen Sie ein DevTest Labs-Lab über das Azure-Portal, oder verwenden Sie ein vorhandenes Lab.

  • Registrieren Sie sich, oder melden Sie sich bei Ihrer Azure DevOps Services-Organisation an, und erstellen Sie ein Projekt, oder verwenden Sie ein vorhandenes Projekt.

  • Installieren Sie die Erweiterung „Azure DevTest Labs Tasks“ über den Visual Studio Marketplace:

    1. Wechseln Sie zu Azure DevTest Labs Tasks.
    2. Wählen Sie Kostenlos erhalten aus.
    3. Wählen Sie in der Dropdownliste Ihre Azure DevOps Services Organisation und dann Installieren aus.

Erstellen einer Vorlage zum Erstellen einer Lab-VM

Erstellen Sie zunächst eine ARM-Vorlage (Azure Resource Manager), mit der bei Bedarf eine Lab-VM erstellt wird.

  1. Wählen Sie in Ihrem Lab im Azure-Portal in der oberen Menüleiste Hinzufügen aus.
  2. Wählen Sie auf dem Bildschirm Basis auswählen ein Windows-Basisimage für die VM aus.
  3. Wählen Sie auf dem Bildschirm Labressource erstellen unter Artefakte die Option Artefakte hinzufügen oder entfernen aus.
  4. Suchen Sie auf dem Bildschirm Artefakte hinzufügen nach winrm, und wählen Sie dann den Pfeil neben WinRM konfigurieren aus.
  5. Geben Sie im Bereich Artefakt hinzufügen einen vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) für die VM ein, z. B. contosolab00000000000000.westus3.cloudapp.azure.com. Klicken Sie auf OK und anschließend erneut auf OK.
  6. Wählen Sie die Registerkarte Erweiterte Einstellungen und unter IP-Adresse die Option Öffentlich aus.

    Hinweis

    Wenn Sie das WinRM-Artefakt mit einer freigegebenen IP-Adresse verwenden, müssen Sie eine NAT-Regel (Network Address Translation) hinzufügen, um dem WinRM-Port einen externen Port zuzuordnen. Die NAT-Regel ist nicht erforderlich, wenn Sie die VM mit einer öffentlichen IP-Adresse erstellen. Erstellen Sie für diese exemplarische Vorgehensweise die VM mit einer öffentlichen IP-Adresse.

  7. Wählen Sie ARM-Vorlage anzeigen aus.
  8. Kopieren Sie den Vorlagencode, und speichern Sie ihn als Datei mit dem Namen CreateVMTemplate.json in Ihrem lokalen Quellcodeverwaltungsbranch.
  9. Checken Sie die Vorlage in das Quellcodeverwaltungssystem Ihres Projekts ein.

Weitere Informationen und Details finden Sie unter Verwenden einer Resource Manager-Vorlage.

Erstellen eines Skripts zum Abrufen von VM-Eigenschaften

Erstellen Sie als Nächstes ein Skript, um die Werte zu erfassen, die in Aufgabenschritten wie Azure-Dateikopiervorgang und PowerShell auf Zielcomputern zum Bereitstellen von Apps auf VMs verwendet werden. Normalerweise verwenden Sie diese Aufgaben, um eigene Apps auf Ihren Azure-VMs bereitzustellen. Die Aufgaben erfordern Werte wie den Namen der VM-Ressourcengruppe, die IP-Adresse und den vollqualifizierten Domänennamen.

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 des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Speichern Sie das folgende Skript beispielsweise mit dem Namen wie GetLabVMParams.ps1, und checken Sie es im Quellcodeverwaltungssystem Ihres Projekts ein.

Param( [string] $labVmId)

$labVmComputeId = (Get-AzResource -Id $labVmId).Properties.ComputeId

# Get lab VM resource group name
$labVmRgName = (Get-AzResource -Id $labVmComputeId).ResourceGroupName

# Get the lab VM Name
$labVmName = (Get-AzResource -Id $labVmId).Name

# Get lab VM public IP address
$labVMIpAddress = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress

# Get lab VM FQDN
$labVMFqdn = (Get-AzPublicIpAddress -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"

Erstellen einer Releasepipeline in Azure-Pipelines

Erstellen Sie als Nächstes die Releasepipeline in Azure Pipelines. In den Pipelineaufgaben werden die Werte verwendet, die Sie der VM beim Erstellen der ARM-Vorlage zugewiesen haben.

  1. Wählen Sie auf Ihrer Azure DevOps Services-Projektseite im linken Navigationsbereich Pipelines>Releases aus.
  2. Wählen Sie Neue Pipeline aus.
  3. Wählen Sie im Bereich Vorlage auswählen die Option Leerer Auftrag aus.
  4. Schließen Sie den Bereich Stage (Phase).
  5. Wählen Sie auf der Seite Neue Releasepipeline die Registerkarte Variablen aus.
  6. Wählen Sie Hinzufügen aus, und geben Sie die folgenden Name- und Wert-Paare ein. Wählen Sie nach jedem Hinzufügen Hinzufügen aus.
    • vmName: Der Name der VM, die Sie in der ARM-Vorlage zugewiesen haben.
    • userName: Der Benutzername für den Zugriff auf die VM.
    • password: Das Kennwort für den Benutzernamen. Wählen Sie das Schlosssymbol aus, um das Kennwort auszublenden und zu schützen.

Hinzufügen eines Artefakts

  1. Wählen Sie auf der Seite „Neue Releasepipeline“ auf der Registerkarte Pipeline die Option Artefakt hinzufügen aus.
  2. Wählen Sie im Bereich „Artefakt hinzufügen“ die Option Azure Repo aus.
  3. Wählen Sie in der Liste Projekt Ihr DevOps-Projekt aus.
  4. Wählen Sie in der Liste Quelle (Repository) Ihr Quellrepository aus.
  5. Wählen Sie in der Liste Standardbranch den auszucheckenden Branch aus.
  6. Wählen Sie Hinzufügen.

Erstellen einer DevTest Labs-VM

Im nächsten Schritt wird die Golden Image-VM erstellt, die für zukünftige Bereitstellungen verwendet werden soll. In diesem Schritt wird die Aufgabe Azure DevTest Labs – VM erstellen verwendet.

  1. Wählen Sie auf der Seite „Neue Releasepipeline“ auf der Registerkarte Pipeline den Linktext in Stufe 1 aus.

  2. Wählen Sie im linken Bereich das Pluszeichen + neben Agent-Auftrag aus.

  3. Suchen Sie im rechten Bereich unter Aufgaben hinzufügen nach der Aufgabe Azure DevTest Labs – VM erstellen, wählen Sie sie aus, und wählen Sie Hinzufügen aus.

  4. Wählen Sie im linken Bereich die Aufgabe Azure DevTest Labs – VM erstellen aus.

  5. Füllen Sie im rechten Bereich das Formular wie folgt aus:

    • Azure RM-Abonnement: Wählen Sie in der Dropdownliste Ihre Dienstverbindung oder Ihr Abonnement und ggf. Autorisieren aus.

      Hinweis

      Informationen zum Erstellen einer Verbindung mit eingeschränkteren Berechtigungen zu Ihrem Azure-Abonnement finden Sie unter Azure Resource Manager-Dienstendpunkt.

    • Lab: Wählen Sie den Namen Ihres DevTest Labs-Labs aus.

    • Name des virtuellen Computers: Die Variable, die Sie für den Namen des virtuellen Computers angegeben haben: $vmName.

    • Vorlage: Navigieren Sie zu der Vorlagendatei, die Sie in Ihrem Projektrepository eingecheckt haben, und wählen Sie sie aus.

    • Parameterdatei: Wenn Sie eine Parameterdatei in Ihr Repository eingecheckt haben, navigieren Sie zu dieser Datei, und wählen Sie sie aus.

    • Parameterüberschreibungen: Geben Sie -newVMName '$(vmName)' -userName '$(userName)' -password '$(password)' ein.

    • Erweitern Sie Ausgabevariablen, und geben Sie unter Verweisname die Variable für die erstellte Lab-VM-ID ein. Geben Sie der Einfachheit halber vm als Verweisname ein. labVmId ist ein Attribut dieser Variablen und wird später als $vm.labVmId bezeichnet. Wenn Sie einen anderen Namen verwenden, denken Sie daran, diesen in den nachfolgenden Aufgaben zu verwenden.

      Die Lab-VM-ID hat das folgenden Format: /subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName}.

Erfassen der Details der DevTest Labs-VM

Als Nächstes wird das erstellte Skript in der Pipeline ausgeführt, um die Details der DevTest Labs-VM zu erfassen.

  1. Wählen Sie auf der Registerkarte Aufgaben der Releasepipeline das Pluszeichen + neben Agent-Auftrag aus.
  2. Suchen Sie unter Aufgaben hinzufügen im rechten Bereich nach Azure PowerShell, wählen Sie die Option und dann Hinzufügen aus.
  3. Wählen Sie im Bereich die Aufgabe Azure PowerShell-Skript: Dateipfad aus.
  4. Füllen Sie im rechten Bereich das Formular wie folgt aus:
    • Azure-Abonnement: Wählen Sie Ihre Dienstverbindung oder Ihr Abonnement aus.
    • Skripttyp: Wählen Sie Pfad zur Skriptdatei aus.
    • Skriptpfad: Navigieren Sie zu dem PowerShell-Skript, das Sie in Ihrem Quellcoderepository eingecheckt haben, und wählen Sie es aus. Zur Vereinfachung des Pfads können Sie integrierte Eigenschaften verwenden, z. B.: $(System.DefaultWorkingDirectory/Scripts/GetLabVMParams.ps1.
    • Skriptargumente: Geben Sie den Wert -labVmId $(vm.labVmId) ein.

Mit dem Skript werden die erforderlichen Werte erfasst und in Umgebungsvariablen innerhalb der Releasepipeline gespeichert, sodass Sie in nachfolgenden Schritten auf die Werte verweisen können.

Erstellen eines VM-Images aus der DevTest Labs-VM

Im Rahmen der nächsten Aufgabe wird ein Image der neu bereitgestellten VM im Lab erstellt. Sie können das Image verwenden, um bei Bedarf Kopien von der VM zu erstellen, um Entwickleraufgaben zu erledigen oder Tests auszuführen.

  1. Wählen Sie auf der Registerkarte Aufgaben der Releasepipeline das Pluszeichen + neben Agent-Auftrag aus.
  2. Wählen Sie unter Aufgaben hinzufügen die Option Azure DevTest Labs – Benutzerdefiniertes Image erstellen und dann Hinzufügen aus.
  3. Wählen Sie im linken Bereich die Aufgabe Azure DevTest Labs – Benutzerdefiniertes Image erstellen aus.
  4. Füllen Sie im rechten Bereich das Formular wie folgt aus:
    • Azure RM-Abonnement: Wählen Sie Ihre Dienstverbindung oder Ihr Abonnement aus.
    • Lab: Wählen Sie Ihr Lab aus.
    • Name des benutzerdefinierten Images: Geben Sie einen Namen für das benutzerdefinierte Image ein.
    • Beschreibung: Geben Sie optional eine Beschreibung ein, um die spätere Auswahl des richtigen Images zu erleichtern.
    • Quell-Lab-VM: Die labVmId. Geben Sie den Wert $(vm.labVmId) ein.
    • Ausgabevariablen: Sie können den Namen der Standardvariablen „ID des benutzerdefinierten Images“ bei Bedarf ändern.

Bereitstellen Ihrer App in der DevTest Labs-VM (optional)

Sie können Aufgaben hinzufügen, um Ihre App in der neuen DevTest Labs-VM bereitzustellen. Wenn Sie nur mit der Erstellung einer DevTest Labs-VM und einem benutzerdefinierten Image experimentieren möchten, ohne eine App bereitzustellen, können Sie diesen Schritt überspringen.

Die Aufgaben, mit denen Sie Apps normalerweise bereitstellen, sind Azure-Dateikopiervorgang und PowerShell auf Zielcomputern. Die VM-Informationen, die Sie für die Aufgabenparameter benötigen, finden Sie in der Releasepipeline in den drei Konfigurationsvariablen labVmRgName, labVMIpAddress und labVMFqdn.

Löschen der virtuellen Computer

Im Rahmen einer letzten Aufgabe löschen Sie die VM, die Sie in Ihrem Lab bereitgestellt haben. Normalerweise würden Sie die VM löschen, nachdem Sie die erforderlichen Entwicklungsaufgaben oder Tests auf der bereitgestellten VM ausgeführt haben.

  1. Wählen Sie auf der Registerkarte Aufgaben der Releasepipeline das Pluszeichen + neben Agent-Auftrag aus.
  2. Wählen Sie unter Aufgaben hinzufügen die Option Azure DevTest Labs – VM löschen und dann Hinzufügen aus.
  3. Konfigurieren Sie die Aufgabe wie folgt:
    • Azure RM-Abonnement: Wählen Sie Ihre Dienstverbindung oder Ihr Abonnement aus.
    • Lab: Wählen Sie Ihr Lab aus.
    • Virtual Machine: Geben Sie den Wert $(vm.labVmId) ein.
    • Ausgabevariablen: Wenn Sie den Standardnamen der Variablen labVmId geändert haben, geben Sie unter Verweisname den Namen hier ein. Der Standardwert lautet $(labVmId).

Speichern der Releasepipeline

So speichern Sie die neue Releasepipeline:

  1. Wählen Sie oben auf der Seite „Releasepipeline“ die Option Neue Releasepipeline aus, und geben Sie einen neuen Namen für die Pipeline ein.
  2. Wählen Sie oben rechts die Option Speichern aus.

Erstellen und Ausführen eines Releases

So erstellen und führen Sie ein Release mithilfe der neuen Pipeline aus:

  1. Wählen Sie oben rechts auf der Seite „Releasepipeline“ Release erstellen aus.
  2. Wählen Sie unter Artifacts den aktuellen Build und dann Erstellen aus.

Sie können die Ansicht Ihres Labs in jeder Releasestufe im Azure-Portal aktualisieren, um die Erstellung der VM, die Erstellung des Images und die Löschung der VM anzuzeigen.

Immer wenn Sie VMs benötigen, können Sie sie mithilfe des benutzerdefinierten Images erstellen.

Nächste Schritte