Bereitstellen für virtuelle Azure-Computer mithilfe von Bereitstellungsgruppen in Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

In früheren Versionen von Azure Pipelines erforderten Anwendungen, die auf mehreren Servern bereitgestellt werden mussten, einen erheblichen Planungs- und Wartungsaufwand. Windows PowerShell Remoting musste manuell aktiviert, erforderliche Ports geöffnet und Bereitstellungs-Agents auf jedem der Server installiert werden. Die Pipelines mussten dann manuell verwaltet werden, wenn eine Rolloutbereitstellung erforderlich war.

Alle oben genannten Herausforderungen wurden mit der Einführung der Bereitstellungsgruppen nahtlos weiterentwickelt.

Eine Bereitstellungsgruppe installiert einen Bereitstellungs-Agent auf jedem der Zielserver in der konfigurierten Gruppe und weist die Releasepipeline an, die Anwendung schrittweise auf diesen Servern bereitzustellen. Für die Rolloutbereitstellungen können mehrere Pipelines erstellt werden, sodass die neueste Version einer Anwendung stufenweise an mehrere Benutzergruppen zur Überprüfung der neu eingeführten Features bereitgestellt werden kann.

Hinweis

Bereitstellungsgruppen sind ein Konzept, das in klassischen Pipelines verwendet wird. Wenn Sie YAML-Pipelines verwenden, finden Sie weitere Informationen unter Umgebungen.

In diesem Tutorial lernen Sie Folgendes kennen:

  • Bereitstellen der VM-Infrastruktur in Azure mithilfe einer Vorlage
  • Erstellen einer Azure Pipelines-Bereitstellungsgruppe
  • Erstellen und Ausführen einer CI/CD-Pipeline zum Bereitstellen der Lösung mit einer Bereitstellungsgruppe

Voraussetzungen

  • Ein Microsoft Azure-Konto.
  • Eine Azure DevOps-Organisation.

Verwenden Sie den Azure DevOps Demo Generator, um das Tutorialprojekt in Ihrer Azure DevOps-Organisation bereitzustellen.

Einrichten der Azure-Bereitstellungsumgebung

Die folgenden Ressourcen werden in Azure mithilfe einer ARM-Vorlage bereitgestellt:

  • Sechs Virtual Machines-Webserver (VM) mit konfiguriertem IIS
  • SQL Server-VM (DB-Server)
  • Azure-Netzwerklastenausgleich
  1. Klicken Sie unten auf den Link In Azure bereitstellen, um die Ressourcenbereitstellung zu initiieren. Geben Sie alle erforderlichen Informationen an, und wählen Sie Kaufen aus. Sie können eine beliebige Kombination aus zulässigen Administratorbenutzernamen und Kennwörtern verwenden, da diese in diesem Tutorial nicht erneut verwendet werden. Der Env-Präfixname wird allen Ressourcennamen vorangestellt, um sicherzustellen, dass diese Ressourcen mit global eindeutigen Namen generiert werden. Sie können etwas Persönliches oder Zufälliges verwenden. Wenn während der Überprüfung oder Erstellung ein Namenskonfliktfehler auftritt, versuchen Sie, diesen Parameter zu ändern und erneut auszuführen.

    Bereitstellung in Azure

    Screenshot, der zeigt, wie Sie Ihre Azure-Bereitstellungsumgebung einrichten.

    Hinweis

    Es dauert ca. 10 bis 15 Minuten, bis die Bereitstellung abgeschlossen ist. Wenn Sie eine Namenskonfliktmeldung erhalten, ändern Sie den Parameter, den Sie für Env Prefix Name angeben.

  2. Nach Abschluss der Bereitstellung können Sie alle in der angegebenen Ressourcengruppe generierten Ressourcen mithilfe des Azure-Portal überprüfen. Wählen Sie die DB-Server-VM mit sqlSrv im Namen aus, um die Details anzuzeigen.

    Bereitstellen der Ressourcengruppe in Azure.

  3. Notieren Sie sich den DNS-Namen. Dieser Wert wird in einem späteren Schritt benötigt. Mit der Schaltfläche Kopieren können Sie es in die Zwischenablage kopieren.

    SQL DNS-Bereitstellung in Azure.

Erstellen und Konfigurieren einer Bereitstellungsgruppe

Azure Pipelines erleichtert die Organisation von Servern, die für die Bereitstellung von Anwendungen erforderlich sind. Bei einer Bereitstellungsgruppe handelt es sich um eine Gruppe von Computern mit Bereitstellungs-Agents. Jeder Computer interagiert mit Azure Pipelines, um die Bereitstellung der App zu koordinieren.

Da für die Buildpipeline keine Konfigurationsänderung erforderlich ist, wird der Build automatisch ausgelöst, nachdem das Projekt bereitgestellt wurde. Wenn Sie ein Release später in die Warteschlange stellen, wird dieser Build verwendet.

  1. Gehen Sie zum Azure DevOps-Projekt, das vom Demogenerator erstellt wurde.

  2. Gehen Sie unter Pipelines zu Bereitstellungsgruppen.

    Navigieren zu den Bereitstellungsgruppen unter Pipelines

  3. Wählen Sie Bereitstellungsgruppe hinzufügen aus.

  4. Geben Sie den Bereitstellungsgruppennamen für Release ein, und wählen Sie Erstellen aus. Daraufhin wird ein Registrierungsskript generiert. Sie können die Zielserver mit dem bereitgestellten Skript registrieren, wenn Sie selbst arbeiten. In diesem Tutorial werden die Zielserver jedoch automatisch als Teil der Releasepipeline registriert. Die Releasedefinition verwendet Stages, um die Anwendung auf den Zielservern bereitzustellen. Eine Stage ist eine logische Gruppierung der Aufgaben, die das Laufzeitziel definiert, auf dem die Aufgaben ausgeführt werden. Jede Bereitstellungsgruppenstage führt Aufgaben auf den Computern aus, die in der Bereitstellungsgruppe definiert sind.

  5. Gehen Sie unter Pipelines zu Releases. Wählen Sie die Releasepipeline mit dem Namen Bereitstellungsgruppen und dann Bearbeiten aus.

  6. Wählen Sie die Registerkarte Aufgaben aus, um die Bereitstellungsaufgaben in der Pipeline anzuzeigen. Die Aufgaben sind in drei Stages unterteilt, die als Agentphase, Bereitstellungsgruppenphase und IIS-Bereitstellungsphase bezeichnet werden.

  7. Wählen Sie die Agentphase aus. In dieser Stage werden die Zielserver der Bereitstellungsgruppe mithilfe der Aufgabe „Azure-Ressourcengruppenbereitstellung“ zugeordnet. Für die Ausführung müssen ein Agentpool und eine Spezifikation definiert werden. Wählen Sie den Azure Pipelines-Pool und die neueste Windows-Spezifikation aus.

    Konfigurieren der Agentphase

  8. Wählen Sie die Aufgabe Bereitstellung einer Azure-Ressourcengruppe aus. Konfigurieren Sie eine Dienstverbindung mit dem Azure-Abonnement, das zuvor zum Erstellen der Infrastruktur verwendet wurde. Nachdem Sie die Verbindung autorisiert haben, wählen Sie die Ressourcengruppe aus, die für dieses Tutorial erstellt wurde.

    Erstellen einer Azure-Dienstverbindung

  9. Diese Aufgabe wird auf den in Azure gehosteten virtuellen Computern ausgeführt und muss eine Verbindung mit dieser Pipeline herstellen können, um die Anforderungen der Bereitstellungsgruppe zu erfüllen. Zum Sichern der Verbindung benötigen sie ein persönliches Zugriffstoken (Personal Access Token, PAT). Öffnen Sie in der Dropdownliste Benutzereinstellungenpersönliche Zugriffstoken auf einer neuen Registerkarte. Die meisten Browser unterstützen das Öffnen eines Links in einer neuen Registerkarte per Kontextmenü mit der rechten Maustaste oder STRG+Klick.

    Navigieren zu persönlichen Zugangstokens

  10. In der neuen Registerkarte wählen Sie Neues Token.

  11. Geben Sie einen Namen ein, und wählen Sie den Bereich Vollzugriff aus. Wählen Sie Erstellen aus, um das Token zu erstellen. Kopieren Sie nach der Erstellung das Token, und schließen Sie die Browserregisterkarte. Kehren Sie zum Azure Pipeline-Editor zurück.

    Erstellen eines persönlichen Zugriffstokens

  12. Wählen Sie unter Azure Pipelines-Dienstverbindung die Option Neu aus.

    Hinzufügen einer Azure Pipelines-Dienstverbindung

  13. Geben Sie die Verbindungs-URL zur aktuellen Instanz von Azure DevOps ein. Diese URL lautet etwa https://dev.azure.com/[Your account]. Fügen Sie das zuvor erstellte persönliche Zugriffstoken ein, und geben Sie einen Dienstverbindungsnamen an. Klicken Sie auf Verify and save.

    Erstellen einer Azure Pipelines-Dienstverbindung

    Hinweis

    Zum Registrieren eines Agents müssen Sie Mitglied der Administratorrolle im Agentpool sein. Die Identität des Agentpooladministrators wird nur zum Zeitpunkt der Registrierung benötigt. Die Administratoridentität wird nicht auf dem Agent beibehalten und wird in keiner nachfolgenden Kommunikationen zwischen dem Agent und Azure Pipelines verwendet. Nachdem der Agent registriert wurde, ist es nicht mehr erforderlich, das persönliche Zugriffstoken zu erneuern, da es nur zum Zeitpunkt der Registrierung erforderlich ist.

  14. Wählen Sie das aktuelle Teamprojekt und die zuvor erstellte Bereitstellungsgruppe aus.

    Konfigurieren der Azure Pipelines-Bereitstellungsgruppe

  15. Wählen Sie die Bereitstellungsgruppenphase aus. Diese Stage führt Aufgaben auf den Computern aus, die in der Bereitstellungsgruppe definiert sind. Diese Stage ist mit dem SQL-Svr-DB-Tag verknüpft. Wählen Sie in der Dropdownliste die Bereitstellungsgruppe aus.

    Konfigurieren der Bereitstellungsgruppenphase

  16. Wählen Sie die Stage IIS-Bereitstellungsphase aus. In dieser Stage wird die Anwendung mithilfe der angegebenen Aufgaben auf den Webservern bereitgestellt. Diese Stage ist mit dem WebSrv-Tag verknüpft. Wählen Sie in der Dropdownliste die Bereitstellungsgruppe aus.

  17. Wählen Sie die Aufgabe Azure Network Load Balancer trennen aus. Da die Zielcomputer mit dem NLB verbunden sind, trennt diese Aufgabe die Computer vor der Bereitstellung vom NLB und verbindet sie nach der Bereitstellung wieder mit dem NLB. Konfigurieren Sie die Aufgabe für die Verwendung der Azure-Verbindung, der Ressourcengruppe und des Lastenausgleichs (es sollte nur eine vorhanden sein).

  18. Wählen Sie die Aufgabe IIS-Web-App verwalten aus. Diese Aufgabe wird auf den Bereitstellungszielcomputern ausgeführt, die bei der für die Aufgabe/Stage konfigurierten Bereitstellungsgruppe registriert sind. Es erstellt lokal eine Web-App und einen Anwendungspool mit dem Namen PartsUnlimited, die unter Port 80 ausgeführt werden

  19. Wählen Sie die Aufgabe IIS Web App bereitstellen aus. Diese Aufgabe wird auf den Bereitstellungszielcomputern ausgeführt, die bei der für die Aufgabe/Stage konfigurierten Bereitstellungsgruppe registriert sind. Die Anwendung wird mithilfe von Web Deploy auf dem IIS-Server bereitgestellt.

  20. Wählen Sie die Aufgabe Azure Network Load Balancer verbinden aus. Konfigurieren Sie die Aufgabe für die Verwendung der Azure-Verbindung, der Ressourcengruppe und des Lastenausgleichs (es sollte nur eine vorhanden sein).

  21. Wählen Sie die Registerkarte Variablen aus, und geben Sie die Variablenwerte wie folgt ein.

    Variablenname Variablenwert
    DatabaseName PartsUnlimited-Dev
    DBPassword P2ssw0rd@123
    DBUserName sqladmin
    DefaultConnectionString Data Source=[YOUR_DNS_NAME];Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;
    ServerName Localhost

    Wichtig

    Stellen Sie sicher, dass Sie ihren SQL Server-DNS-Namen (den Sie in Azure-Portal zuvor notiert haben) in der DefaultConnectionString-Variable ersetzen.

    Ihr DefaultConnectionString sollte der folgenden Zeichenfolge ähneln, nachdem Sie das SQL-DNS ersetzt haben:

    Data Source=cust1sqljo5zndv53idtw.westus2.cloudapp.azure.com;Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;

    Die endgültige Variablenliste sollte in etwa wie folgt aussehen:

    Konfigurieren der Pipelinevariablen

    Hinweis

    Möglicherweise erhalten Sie eine Fehlermeldung, dass die Variable DefaultConnectionString als Geheimnis gespeichert werden muss. Wählen Sie in diesem Fall die Variable aus, und klicken Sie auf das Vorhängeschlosssymbol, das neben dem Wert angezeigt wird, um sie zu schützen.

Ein Release in die Warteschlange stellen und Überprüfen der Bereitstellung

  1. Wählen Sie Speichern und „Fortfahren“ aus.

  2. Wählen Sie Release erstellen und „Bestätigen“ aus. Folgen Sie dem Release bis zum Abschluss. Die Bereitstellung kann dann überprüft werden.

  3. Öffnen Sie im Azure-Portal eine der Web-VMs in Ihrer Ressourcengruppe. Sie können alle auswählen, die websrv im Namen enthalten.

    Suchen einer Web-VM

  4. Kopieren Sie das DNS des virtuellen Computers. Der Azure Load Balancer verteilt eingehenden Datenverkehr auf fehlerfreie Instanzen von Servern, die in einer Gruppe mit Lastenausgleich definiert sind. Daher ist das DNS aller Webserverinstanzen identisch.

    Suchen der Web-App-Domäne

  5. Öffnen Sie eine neue Browserregisterkarte für das DNS des virtuellen Computers. Vergewissern Sie sich, dass die bereitgestellte App ausgeführt wird.

    Überprüfen der App

Zusammenfassung

In diesem Tutorial haben Sie mithilfe von Azure Pipelines und Bereitstellungsgruppen eine Webanwendung für eine Gruppe von Azure-VMs bereitgestellt. Dieses Szenario umfasste zwar eine Handvoll Computer, aber Sie können den Prozess problemlos hochskalieren, um Hunderte oder sogar Tausende von Computern mit praktisch jeder Konfiguration zu unterstützen.

Bereinigen von Ressourcen

In diesem Tutorial wurden ein Azure DevOps-Projekt und einige Ressourcen in Azure erstellt. Falls Sie diese Ressourcen nicht weiterverwenden möchten, löschen Sie sie wie folgt:

  1. Löschen Sie das Azure DevOps-Projekt, das vom Azure DevOps-Demo-Generator erstellt wurde.

  2. Alle Azure-Ressourcen, die während dieses Tutorials erstellt wurden, wurden der Ressourcengruppe zugewiesen, die während der Erstellung angegeben wurde. Beim Löschen dieser Gruppe werden die darin enthaltenen Ressourcen gelöscht. Diese Löschung kann über die CLI oder das Portal erfolgen.

Nächste Schritte