Freigeben über


Bereitstellen von Web-Apps auf Azure-VMs mit Bereitstellungsgruppen

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

In früheren Versionen von Azure-Pipelines erfordert die Bereitstellung von Anwendungen auf mehreren Servern erhebliche Planung und Wartung. Windows PowerShell-Remoting musste manuell aktiviert werden, bestimmte Ports müssen geöffnet werden, und Die Bereitstellungs-Agents mussten auf jedem Server installiert werden. Für die Verwaltung der Bereitstellungen ist auch ein manueller Eingriff erforderlich. Diese Herausforderungen wurden mit der Einführung von Bereitstellungsgruppen erheblich vereinfacht.

Eine Bereitstellungsgruppe installiert einen Bereitstellungs-Agent auf jedem Zielserver in der Gruppe und ermöglicht es der Releasepipeline, die Anwendung schrittweise auf diesen Servern bereitzustellen. Sie können mehrere Pipelines für Rollouts von Bereitstellungen erstellen, sodass phasenweise Anwendungsupdates an verschiedene Benutzergruppen bereitgestellt werden können.

Hinweis

Bereitstellungsgruppen werden in klassischen Pipelines verwendet. Wenn Sie YAML-Pipelines verwenden, lesen Sie "Umgebungen".

Voraussetzungen

Produkt Anforderungen
Azure DevOps - Eine Azure DevOps Organisation.
- Ein Azure DevOps Projekt.
Azure DevOps Demo-Generator - Richten Sie den Demo-Generator ein.
– Erstellen Sie ein neues Azure DevOps-Projekt , und stellen Sie sicher, dass Sie die DeploymentGroups-Vorlage auswählen (Nummer 15 in der Liste).
Azure – Ein Azure-Abonnement.

Einrichten von Ressourcen in Azure

Dieser Abschnitt führt Sie durch das Einrichten Ihrer Azure-Ressourcen mithilfe einer ARM-Vorlage. Es stellt sechs VM-Webserver bereit, auf die IIS konfiguriert ist, eine SQL Server-VM (DB-Server), ein Azure Load Balancer und alle erforderlichen Netzwerkverbindungen.

  1. Wählen Sie die Schaltfläche " aus, um die Bereitstellung Ihrer Ressourcen in Azure zu initiieren.

  2. Geben Sie die erforderlichen Informationen ein, und wählen Sie dann "Überprüfen+ erstellen" aus. Sie können jede zulässige Kombination aus Benutzernamen und Kennwörtern verwenden, da sie in diesem Lernprogramm nicht mehr verwendet werden. Der Präfixname "Env" wird allen Ressourcennamen hinzugefügt, um die globale Eindeutigkeit sicherzustellen. Verwenden Sie etwas persönliches oder zufälliges. Wenn während der Überprüfung oder Erstellung ein Namenskonflikt auftritt, versuchen Sie, diesen Wert zu ändern und erneut bereitzustellen. Die Bereitstellung dauert in der Regel 10 bis 15 Minuten.

    Screenshot, der zeigt, wie Sie Ihre Azure-Ressourcen in Azure einrichten.

  3. Wählen Sie nach Abschluss der Überprüfung " Erstellen" aus, um Ihre Ressourcen bereitzustellen.

  4. Nachdem die Bereitstellung abgeschlossen ist, wechseln Sie im Azure-Portal zu Ihrer Ressourcengruppe, um die generierten Ressourcen zu überprüfen. Wählen Sie die VM des DB-Servers mit sqlSrv im Namen aus, um die Details anzuzeigen.

    Screenshot mit den neu erstellten Ressourcen in Azure.

  5. Kopieren Sie den DNS-Namen , während Sie ihn in einem späteren Schritt benötigen.

    Screenshot der VM des DB-Servers in Azure.

Erstellen einer Bereitstellungsgruppe

Eine Bereitstellungsgruppe ist eine Sammlung von Computern, die jeweils mit einem Bereitstellungs-Agent installiert sind. Diese Computer kommunizieren mit Azure-Pipelines, um Anwendungsbereitstellungen zu koordinieren.

  1. Navigieren Sie mit dem Demo-Generator zu dem Zuvor erstellten Azure DevOps-Projekt.

  2. Wählen SiePipelines-Bereitstellungsgruppen> aus.

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

  4. Geben Sie "Release " als Namen der Bereitstellungsgruppe ein, und wählen Sie dann "Erstellen" aus. Es wird ein Registrierungsskript generiert. Sie können dieses Skript verwenden, um Zielserver zu registrieren und den Bereitstellungs-Agent manuell zu installieren. In diesem Lernprogramm werden die Zielserver jedoch automatisch als Teil der Releasepipeline registriert.

Erstellen eines persönlichen Zugriffstokens

  1. Wählen Sie im Azure DevOps-Projekt das Symbol " Benutzereinstellungen " und dann " Persönliche Zugriffstoken" aus.

  2. Wählen Sie "Neues Token" aus, geben Sie einen Namen für Ihr PAT ein, und wählen Sie dann ein Ablaufdatum aus.

  3. Wählen Sie "BenutzerdefinierterBereich" aus, wählen Sie " Alle Bereiche anzeigen" aus, und überprüfen Sie dann die folgenden Bereiche:

    1. Projekt und Team ->Lese- und Schreibzugriff.
    2. Agentpools –>Lesen und Verwalten
    3. Bereitstellungsgruppen –>Lesen und Verwalten.
  4. Wählen Sie "Erstellen " aus, wenn Sie fertig sind, und kopieren Sie Ihren PAT, wie Sie ihn im folgenden Abschnitt benötigen.

Konfigurieren der Releasepipeline

Die Pipelinevorlage für die klassische Version enthält einen Agentauftrag, die Agent-Phase, in der Aufgaben für einen Agent in einem Agentpool ausgeführt werden. Sie enthält auch zwei Bereitstellungsgruppenaufträge: die Bereitstellungsgruppenphase und die IIS-Bereitstellungsphase. Bereitstellungsgruppenaufträge führen Aufgaben auf Computern aus, die in einer Bereitstellungsgruppe definiert sind. Führen Sie die folgenden Schritte aus, um jeden Auftrag zu konfigurieren.

Konfigurieren des Agentauftrags

  1. Navigieren Sie zu Ihrem Azure DevOps-Projekt, und wählen Sie Pipelines-Versionen>aus.

  2. Wählen Sie die Bereitstellungsgruppen-Freigabeverzögerung aus, und wählen Sie dann "Bearbeiten" aus.

  3. Wählen Sie die Registerkarte "Aufgaben " aus, um die Bereitstellungsaufgaben in Ihrer Pipeline anzuzeigen.

  4. Wählen Sie die Phase "Agent" und dann den Azure Pipelines-Pool und die neueste Windows-Spezifikation aus.

    Screenshot der Agentphase in der Klassischen Releasepipeline.

  5. Wählen Sie die Azure Resource Group Deployment-Aufgabe aus, wählen Sie das Azure-Abonnement aus, das Sie zuvor zum Erstellen Ihrer Ressourcen verwendet haben, und wählen Sie dann "Autorisieren " aus, um die Verbindung zu autorisieren. Wählen Sie nach der Autorisierung die Ressourcengruppe aus, die Sie für dieses Lernprogramm erstellt haben.

    Screenshot, der zeigt, wie die Ressourcengruppe in der Bereitstellungsaufgabe konfiguriert wird.

  6. Diese Aufgabe wird auf virtuellen Computern in Azure ausgeführt und muss eine Verbindung mit der Pipeline herstellen können, um die Bereitstellungsgruppenanforderungen abzuschließen. Um die Verbindung zu sichern, muss eine Dienstverbindung mit dem zuvor erstellten PERSÖNLICHEn Zugriffstoken (PERSONAL Access Token, PAT) eingerichtet werden. Scrollen Sie innerhalb derselben Aufgabe nach unten, und wählen Sie " Neu " unter azure Pipelines-Dienstverbindung aus.

  7. Geben Sie im Bereich "Neue Dienstverbindung " die Verbindungs-URL Ihrer Azure DevOps-Organisation https://dev.azure.com/organizationNameein. Fügen Sie das zuvor erstellte persönliche Zugriffstoken ein, geben Sie einen Dienstverbindungsnamen an, und überprüfen Sie das Kontrollkästchen "Zugriffsberechtigung für alle Pipelines gewähren". Wählen Sie Überprüfen und Speichern aus, wenn Sie fertig sind.

    Screenshot, der zeigt, wie Eine neue Dienstverbindung für die Bereitstellungsaufgabe konfiguriert wird.

  8. Scrollen Sie in der Azure Resource Group Deployment-Aufgabe nach unten, und wählen Sie dann aus den Dropdownmenüs Ihres Teamprojekts und der Zuvor erstellten Bereitstellungsgruppe aus.

    Screenshot, der zeigt, wie sie das Teamprojekt und die Bereitstellungsgruppe für die Bereitstellungsaufgabe konfigurieren.

Konfigurieren der Bereitstellungsgruppenaufträge

  1. Wählen Sie in der Releasedefinition für Bereitstellungsgruppen den Bereitstellungsgruppenphasenauftrag aus. Dieser Auftrag führt Aufgaben auf den Computern aus, die in der Bereitstellungsgruppe definiert sind. Dieser Auftrag verwendet das SQL-Svr-DB-Tag , um eine Teilmenge von Zielen in der Bereitstellungsgruppe bereitzustellen. Wählen Sie unter der Dropdownliste "Bereitstellungsgruppe" die Zuvor erstellte Bereitstellungsgruppe "Release " aus.

    Screenshot, der zeigt, wie der Bereitstellungsgruppenphasenauftrag konfiguriert wird.

  2. Wählen Sie den IIS-Bereitstellungsphasenauftrag aus. Dieser Auftrag verwendet das WebSrv-Tag , um die Webanwendung in einer Teilmenge der Webserver bereitzustellen. Wählen Sie die Zuvor erstellte Bereitstellungsgruppe aus der Dropdownliste aus.

  3. Die Aufgaben "Azure Network Load Balancer trennen " und "Azure Network Load Balancer verbinden " sind veraltet. Sie können sie jetzt deaktivieren, indem Sie mit der rechten Maustaste auf die Aufgabe klicken und die Option "Aufgabe(n) deaktivieren" auswählen.

  4. Die Aufgaben "IIS Web App Manage " und "IIS Web App Deploy " sind bereits ausgefüllt und erfordern keine Änderungen.

  5. Wählen Sie in der oberen linken Ecke die Registerkarte "Variablen " aus, wählen Sie Pipelinevariablen aus, und geben Sie die folgenden Werte an. Ersetzen Sie den Platzhalter in der DefaultConnectionString-Variablen durch den SQL Server-DNS-Namen, den Sie zuvor kopiert haben:

    Variablenname Variablenwert
    Datenbankname PartsUnlimited-Dev
    DBPassword xxxxxxxx
    DBUserName xxxxxxxx
    DefaultConnectionString Datenquelle=[YOUR_DNS_NAME]; Initial Catalog=PartsUnlimited-Dev; Benutzer-ID=xxxxxxxx;Password=xxxxxxxx;MultipleActiveResultSets=False; Verbindungstimeout=30;
    Servername localhost
  6. Wählen Sie "Speichern" aus, fügen Sie bei Bedarf einen Kommentar hinzu, und wählen Sie dann "OK" aus.

Tipp

Wenn Sie eine Fehlermeldung erhalten, dass die DefaultConnectionString-Variable als geheimer Schlüssel gespeichert werden muss, wählen Sie das Vorhängeschlosssymbol neben seinem Wert aus, um sie zu schützen.

Erstellen einer Release- und Bereitstellungsanwendung

Nachdem die Releasedefinition konfiguriert und gespeichert wurde, können Sie mit der Erstellung einer Version fortfahren, um Ihre Web-App in Azure bereitzustellen. Bevor Sie die Version starten, müssen Sie jedoch sicherstellen, dass die Buildpipeline mindestens einmal ausgeführt wurde. Dadurch wird das Pipelineartefakt generiert, das für die Bereitstellung erforderlich ist. Wenn Sie versuchen, die Releasepipeline vor der Buildpipeline auszuführen, ist der Abschnitt "Artefakte" im Releasebereich leer. Führen Sie die folgenden Schritte aus, um Ihre Pipeline auszuführen, generieren Sie ein Pipelineartefakt, und erstellen Sie dann eine neue Version:

  1. Wählen Sie in Ihrem Azure DevOps-Projekt "Pipeline" und dann die Buildpipeline für Bereitstellungsgruppen aus.

  2. Klicken Sie auf Pipeline ausführen. Wählen Sie im Bereich "Pipelineausführung" Ihre Agent-Spezifikation und dann "Ausführen" aus.

    Screenshot, der zeigt, wie die Pipelineausführung konfiguriert wird.

  3. Nachdem die Pipeline erfolgreich abgeschlossen wurde, wird ein Pipelineartefakt generiert. Sie können es im Pipelinezusammenfassungsfenster anzeigen:

    Screenshot mit dem generierten Pipelineartefakt.

  4. Wechseln Sie nun zu PipelinesRelease, wählen Sie Ihre Releasedefinition aus, und wählen Sie dann >" aus, um die Bereitstellungspipeline zu starten.

    Screenshot, der zeigt, wie eine neue Version erstellt wird.

  5. Wählen Sie "Erstellen" aus, wenn Sie fertig sind, und wählen Sie dann die Pipelineausführung aus, um die Übersicht zu öffnen. Ihre Pipeline sollte in Bearbeitung sein. Klicken Sie auf die Phase, um die detaillierten Bereitstellungsprotokolle anzuzeigen.

    Screenshot mit der Übersicht über die Versionspipeline.

  6. Im Zusammenfassungsfenster können Sie den Status jeder Phase der Bereitstellung sehen:

    Screenshot mit der Versionszusammenfassung.

Problembehandlung

  • Es konnte keine Verbindung mit dem Master- oder Zielserverhergestellt werden, oder eine Verbindung wurde erfolgreich mit dem Server hergestellt, während des Anmeldevorgangs ist jedoch ein Fehler aufgetreten.

Wenn beim Ausführen der Sql Dacpac-Bereitstellung auf Computergruppen eine der folgenden Fehler auftritt, führen Sie die folgenden Schritte aus:

  1. Überprüfen Sie Ihre Datenbank:

Stellen Sie sicher, dass die Datenbank während der Ressourcenbereitstellung erfolgreich erstellt wurde. Sie können dies mithilfe der Azure CLI oder sqlcmd bestätigen:

sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"

Wenn Ihre Datenbank nicht in der Liste vorhanden ist, können Sie mit dem folgenden Befehl einen neuen erstellen:

sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
  1. Überprüfen Der SQL Server-Authentifizierung:

Stellen Sie sicher, dass die SQL Server-Authentifizierung aktiviert ist, muss Ihr SQL Server so konfiguriert sein, dass sowohl DIE SQL- als auch die Windows-Authentifizierung (Gemischter Modus) zulässig ist. So aktivieren Sie es:

a) Verbinden mit SSMS oder sqlcmd

b. Führen Sie die folgende Abfrage aus:

EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE',
    N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
    N'LoginMode',
    REG_DWORD,
    2;

Abschnitt c. Starten Sie den SQL Server-Dienst neu, damit die Änderung wirksam wird:

net stop MSSQLSERVER
net start MSSQLSERVER
  • Einige meiner Agents sind offline, obwohl der Agent auf meinem virtuellen Computer ausgeführt wird.

Wenn ein oder mehrere Ihrer Agents als offline angezeigt werden, können Sie ein paar Dinge ausprobieren. Melden Sie sich zuerst bei der VM an, auf der der Agent ausgeführt wird, und führen Sie den folgenden Befehl aus, um zu überprüfen, ob Ihre VM in denselben Satz von IPs aufgelöst wird.

nslookup dev.azure.com

Wenn alle virtuellen Computer in den gleichen Satz von IPs aufgelöst werden, stellen Sie sicher, dass das Lastenausgleichsmodul mit der richtigen ausgehenden Regel konfiguriert ist. Sie können Ihrem Lastenausgleich in Azure einen Back-End-Pool hinzufügen, die NICs Ihrer virtuellen Computer dem Back-End-Pool hinzufügen und sie dann der ausgehenden Regel ihres Lastenausgleichs zuordnen. Um dies zu tun:

  1. Navigieren Sie zu Azure, und suchen Sie Ihren Lastenausgleich.

  2. Wählen Sie Back-End-Pools aus, wählen Sie Ihren vorhandenen Pool aus, oder erstellen Sie einen neuen Pool, und fügen Sie Ihre Webserver unter IP-Konfigurationen hinzu.

  3. Wechseln Sie zu Lastenausgleichsregeln, wählen Sie Ihre Lastenausgleichsregel aus, und wählen Sie ihren Back-End-Pool aus der Back-End-Pool-Dropdownliste aus.

Bereinigen von Ressourcen

In diesem Lernprogramm wurde ein Azure DevOps-Projekt erstellt und Ressourcen in Azure bereitgestellt. Wenn Sie sie nicht mehr benötigen, führen Sie die folgenden Schritte aus, um sie zu bereinigen:

  1. Löschen Sie das Azure DevOps-Projekt: Navigieren Sie zu Ihren Projekteinstellungen>– Übersicht löschen>.

  2. Löschen Sie die Azure-Ressourcengruppe "Alle Azure-Ressourcen", die während dieses Lernprogramms erstellt wurden, in derselben Ressourcengruppe. Beim Löschen der Ressourcengruppe werden alle zugeordneten Ressourcen entfernt. Sie können dies über das Azure-Portal oder die CLI tun:

  • Azure CLI

    az group delete --name <RESOURCE_GROUP_NAME> --yes --no-wait
    
  • Azure-Portal

  1. Navigieren Sie zu >.

  2. Wählen Sie die Ressourcengruppe aus, die Sie im Lernprogramm verwendet haben.

  3. Wählen Sie "Ressourcengruppe löschen" aus, bestätigen Sie den Namen, und wählen Sie dann "Löschen" aus.