Umgebung – VM-Ressource

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Verwenden Sie VM-Ressourcen, um Bereitstellungen auf mehreren Computern mit YAML-Pipelines zu verwalten. Mithilfe von VM-Ressourcen können Sie Agents für rollierende Bereitstellungen auf Ihren eigenen Servern installieren.

Von VM-Ressourcen wird eine Verbindung mit Umgebungen hergestellt. Nachdem Sie eine Umgebung definiert haben, können Sie VMs mit Bereitstellungen zum Ziel hinzufügen. Die Ansicht „Bereitstellungsverlauf“ in einer Umgebung ermöglicht die Rückverfolgbarkeit von Ihrem virtuellen Computer bis zu Ihrer Pipeline.

Voraussetzungen

Sie benötigen mindestens eine Basic-Lizenz und Zugriff auf die folgenden Bereiche:

  • das mit Ihrer Pipeline verbundene Repository
  • die VM, die Sie mit der Umgebung verbinden möchten

Weitere Informationen zur Sicherheit für Azure Pipelines finden Sie unter Pipelinesicherheitsressourcen.

Wenn Sie einer Umgebung einen virtuellen Computer hinzufügen möchten, müssen Sie über die Administratorrolle für den entsprechenden Bereitstellungspool verfügen. Ein Bereitstellungspool ist eine Gruppe von Zielservern, die der Organisation zur Verfügung stehen. Erfahren Sie mehr über Bereitstellungspool- und Umgebungsberechtigungen.

Hinweis

Wenn Sie einen Bereitstellungsgruppen-Agent konfigurieren oder beim Registrieren einer VM-Umgebungsressource ein Fehler angezeigt wird, müssen Sie den PAT-Bereich auf Alle zugänglichen Organisationen festlegen.

Erstellen einer VM-Ressource

Hinweis

Sie können denselben Prozess verwenden, um physische Computer mit einem Registrierungsskript einzurichten.

Der erste Schritt beim Hinzufügen einer VM-Ressource besteht darin, eine Umgebung zu definieren.

Definieren einer Umgebung

  1. Wählen Sie Umgebung erstellen oder Neue Umgebung aus, je nachdem, ob es sich um Ihre erste Umgebung handelt.
  2. Fügen Sie einen Namen (erforderlich) für die Umgebung und eine Beschreibung hinzu.
  3. Speichern Sie die neue Umgebung.

Ressource hinzufügen

  1. Wählen Sie Ihre Umgebung und dann Ressource hinzufügen aus.

  2. Wählen Sie Virtuelle Computer als Ressourcentyp aus. Wählen Sie Weiteraus.

    Add an environment.

  3. Wählen Sie Windows oder Linux als Betriebssystem aus.

  4. Kopieren Sie das Registrierungsskript. Ihr Skript ist ein PowerShell-Skript, wenn Sie Windows ausgewählt haben, und ein Linux-Skript, wenn Sie Linux ausgewählt haben.

    Add a virtual machine.

  5. Führen Sie das kopierte Skript auf jedem virtuellen Zielcomputer aus, den Sie bei dieser Umgebung registrieren möchten.

    • Bei einer Installation unter Windows müssen Sie das Skript von einem PowerShell-Administrator ausführen.
    • Bei einer Installation unter Linux benötigen Sie die Berechtigung zum Herunterladen und Ausführen ausführbarer Skripts.

    Hinweis

    • Das persönliche Zugriffstoken (Personal Access Token, PAT) für den angemeldeten Benutzer wird in das Skript eingeschlossen. Das PAT läuft an dem Tag ab, an dem Sie das Skript generieren.
    • Wenn auf der VM bereits ein anderer Agent ausgeführt wird, geben Sie unter Agent einen eindeutigen Namen an, der in der Umgebung registriert wird.
    • Weitere Informationen zum Installieren des Agent-Skripts finden Sie unter Selbstgehostete Linux-Agents und Selbstgehostete Windows-Agents. Die Agent-Skripts für VM-Ressourcen ähneln den Skripts für selbstgehostete Agents, und Sie können dieselben Befehle verwenden.
  6. Sobald die VM registriert ist, wird sie auf der Registerkarte Ressourcen der Umgebung als Umgebungsressource angezeigt.

  7. Zum Hinzufügen weiterer VMs kopieren Sie das Skript erneut. Wählen Sie Ressource hinzufügen>Virtuelle Computer aus. Die Windows- und Linux-Skripts sind für alle der Umgebung hinzugefügten virtuellen Computer identisch.

  8. Wenn das VM-Skript erfolgreich installiert wurde, wird die VM in der Liste der Ressourcen für die Umgebung angezeigt.

    View resources.

Verwenden eines virtuellen Computers in Pipelines

Legen Sie virtuelle Computer in Ihrer Pipeline als Ziel fest, indem Sie auf die Umgebung verweisen. Standardmäßig wird der Pipelineauftrag für alle virtuellen Computer ausgeführt, die für eine Umgebung mit einem resourceName definiert sind.

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
   name: VMenv
   resourceName: VMenv
   resourceType: virtualMachine
  strategy:
     runOnce:
        deploy:   
          steps:
            - script: echo "Hello world"

Hinweis

Bei den resourceType-Werten muss die Groß-/Kleinschreibung berücksichtigt werden. Die falsche Schreibweise bei der Groß-/Kleinschreibung führt dazu, dass keine übereinstimmenden Ressourcen in der Umgebung gefunden werden. Weitere Informationen finden Sie unter YAML-Schema.

Sie können einen bestimmten virtuellen Computer aus der Umgebung als einziges Bereitstellungsziel auswählen, indem Sie ihn mit seinem resourceName angeben. Wenn Sie z. B. die VM-Ressource mit dem Namen USHAN-PC in der Umgebung VMenv als einziges Bereitstellungsziel auswählen möchten, fügen Sie den Parameter resourceName hinzu, und weisen Sie ihm den Wert USHAN-PC zu.

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    resourceName: USHAN-PC # only deploy to the VM resource named USHAN-PC
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

Weitere Informationen zu Bereitstellungsaufträgen finden Sie unter YAML-Schema.

Hinzufügen und Verwalten von Tags

Tags bieten Ihnen eine Möglichkeit, eine Gruppe von bestimmten virtuellen Computern in einer Umgebung als Bereitstellungsziel festzulegen. Sie können dem virtuellen Computer Tags als Teil des interaktiven Registrierungsskripts oder über die Benutzeroberfläche hinzufügen. Tags sind jeweils auf 256 Zeichen begrenzt. Sie können eine unbegrenzte Anzahl an Tags verwenden.

Auf der Benutzeroberfläche können Sie Tags in der Ressourcenansicht hinzufügen oder aus dieser entfernen, indem Sie Weitere Aktionen für eine VM-Ressource auswählen.

Set VM tags.

Wenn Sie mehrere Tags auswählen, werden virtuelle Computer, die alle Tags enthalten, in Ihrer Pipeline verwendet. In dieser Pipeline werden beispielsweise die virtuellen Computer als Ziel festgelegt, die mit den Tags windows und prod versehen sind. Wenn ein virtueller Computer nur über eines dieser Tags verfügt, wird er nicht als Ziel verwendet.

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    tags: windows,prod # only deploy to virtual machines with both windows and prod tags
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

Anwenden einer Bereitstellungsstrategie

Wenden Sie eine Bereitstellungsstrategie an, um zu definieren, wie Ihre Anwendung eingeführt wird. Sowohl die Strategie runOnce als auch die Strategie rolling werden für virtuelle Computer unterstützt. Weitere Informationen zu Bereitstellungsstrategien und Lebenszyklus-Hooks finden Sie unter Bereitstellungsaufträge/Bereitstellungsstrategien.

Anzeigen des Bereitstellungsverlaufs

Wählen Sie die Registerkarte Bereitstellungen aus, damit Sie die Commits und Arbeitselemente komplett nachverfolgen und einen pipelineübergreifenden Bereitstellungsverlauf für jede Umgebung und Ressource anzeigen können.

VMDeployments_view

Entfernen eines virtuellen Computers aus einer Umgebung

Windows-Umgebung

Führen Sie den folgenden Befehl aus, um virtuelle Computer aus einer Windows-Umgebung zu entfernen. Achten Sie darauf, dass Sie die folgenden Aufgaben ausführen:

  • Den Befehl über eine PowerShell-Administratoreingabeaufforderung ausführen
  • Den Befehl auf jedem Computer ausführen
  • Den Befehl im selben Ordnerpfad ausführen, in dem auch der Befehl für die Umgebungsregistrierung ausgeführt wurde
./config.cmd remove

Linux-Umgebung

Führen Sie den folgenden Befehl auf jedem Computer aus, um einen virtuellen Computer aus einer Linux-Umgebung zu entfernen.

./config.sh remove

Bekannte Einschränkungen

Wenn Sie eine Phase wiederholen, wird die Bereitstellung auf allen virtuellen Computern und nicht nur auf fehlgeschlagenen Zielen erneut ausgeführt.