Übung: Einrichten der Azure DevOps-Umgebung
In dieser Lerneinheit wird Ihre Azure DevOps-Organisation so eingerichtet, dass Sie den Rest dieses Moduls abschließen können. Außerdem erstellen Sie die Azure App Service-Umgebungen, in denen die Bereitstellung erfolgt.
Führen Sie die folgenden Schritte aus, um diese Ziele zu erreichen:
- Fügen Sie einen Benutzer hinzu, um sicherzustellen, dass Azure DevOps eine Verbindung mit Ihrem Azure-Abonnement herstellen kann.
- Richten Sie ein Azure DevOps-Projekt für dieses Modul ein.
- Verschieben Sie in Azure Boards das Arbeitselement für dieses Modul in die Spalte Doing (Wird ausgeführt).
- Stellen Sie sicher, dass das Projekt lokal eingerichtet ist, damit Sie Änderungen in die Pipeline pushen können.
- Erstellen Sie die Azure App Service- und Azure Functions-App mithilfe der Azure CLI in Azure Cloud Shell.
- Erstellen Sie Pipelinevariablen, die die Namen der App Service- und Azure Functions-Instanz definieren.
- Erstellen Sie eine Dienstverbindung, die Azure Pipelines den sicheren Zugriff auf Ihr Azure-Abonnement ermöglicht.
Hinzufügen eines Benutzers zu Azure DevOps
Für die Bearbeitung dieses Moduls benötigen Sie ein eigenes Azure-Abonnement. Zum Einstieg können Sie Azure kostenlos nutzen.
Obwohl Sie für die Arbeit mit Azure DevOps kein Azure-Abonnement benötigen, wird Azure DevOps in dieser Übung zur Bereitstellung für Azure-Ressourcen in Ihrem Azure-Abonnement verwendet. Um den Prozess zu vereinfachen, melden Sie sich mit demselben Microsoft-Konto bei Ihrem Azure-Abonnement und der Azure DevOps-Organisation an.
Wichtig
Wenn Sie sich mit unterschiedlichen Konten anmelden, sollten Sie Ihrer DevOps-Organisation unter dem Microsoft-Konto, das Sie für die Anmeldung bei Azure verwenden, einen Benutzer hinzufügen. Weitere Informationen finden Sie unter Hinzufügen von Benutzern zu Ihrer Organisation oder Ihrem Projekt. Wählen Sie beim Hinzufügen des Benutzers die Zugriffsebene Basic aus.
Melden Sie sich anschließend von Azure DevOps ab, und melden Sie sich mit dem neuen Benutzerkonto an. Verwenden Sie das Microsoft-Konto, das Sie zur Anmeldung bei Ihrem Azure-Abonnement verwenden.
Abrufen des Azure DevOps-Projekts
Stellen Sie sicher, dass Sie Ihre Azure DevOps-Organisation so eingerichtet haben, dass Sie den Rest dieses Moduls absolvieren können. Führen Sie hierzu eine Vorlage aus, die ein Projekt in Azure DevOps erstellt.
Die Module in diesem Lernpfad sind fortschreitend in der Reihenfolge angeordnet, in der Sie das Tailspin-Webteam bei seiner DevOps-Reise begleiten. Zu Lernzwecken verfügt jedes Modul über sein eigenes Azure DevOps-Projekt.
Ausführen der Vorlage
Führen Sie eine Vorlage aus, die Ihre Azure DevOps-Organisation einrichtet:
Wählen Sie auf der Website mit dem Azure DevOps Demo Generator die Option Anmelden aus. Akzeptieren Sie die Nutzungsbedingungen, wenn Sie dazu aufgefordert werden. Die Seite Neues Projekt erstellen wird angezeigt.
Geben Sie auf der Seite Neues Projekt erstellen einen Projektnamen ein (z. B. Space Game – Web – Azure Functions), und wählen Sie dann unter Organisation auswählen die Organisation aus, die Sie für Ihr Azure-Abonnement verwenden.
Klicken Sie im nächsten Abschnitt auf Ja, ich möchte dieses Repository forken und dann auf Autorisieren.
Wenn ein Fenster angezeigt wird, müssen Sie den Zugriff auf Ihr GitHub-Konto autorisieren.
Wichtig
Die Aktivierung dieser Forkoption ist erforderlich, damit die Vorlage eine Verbindung mit Ihrem GitHub-Repository herstellen kann. Wählen Sie diese Option auch aus, wenn Sie das Space Game-Websiteprojekt bereits geforkt haben. Die Vorlage verwendet Ihren vorhandenen Fork.
Wählen Sie Create Project (Projekt erstellen) aus.
Die Ausführung der Vorlage dauert einige Zeit.
Wenn das Projekt erfolgreich bereitgestellt wurde, wählen Sie Zu Projekt navigieren aus, um zu Ihrem Projekt in Azure DevOps zu wechseln.
Wichtig
Die Seite Bereinigen der Azure DevOps-Umgebung in diesem Modul enthält wichtige Schritte, die Sie selbst dann ausführen müssen, wenn Sie dieses Modul nicht abschließen. Durch das Bereinigen stellen Sie sicher, dass Sie weiterhin über kostenlose Erstellungsminuten verfügen.
Festlegen der Sichtbarkeit Ihres Projekts
Zunächst ist Ihr Fork des Repositorys „Space Game“ auf GitHub auf „Public“ (Öffentlich) festgelegt, während das mit der Azure DevOps-Vorlage erstellte Projekt auf „Private“ (Privat) festgelegt ist. Auf eine öffentliches Repository auf GitHub kann jeder zugreifen, während ein privates Repository nur für Sie und die Personen zugänglich ist, für die Sie es freigeben möchten. Auf ähnliche Weise bieten öffentliche Projekte in Azure DevOps schreibgeschützten Zugriff für nicht authentifizierte Benutzer, während private Projekte erfordern, dass Benutzern Zugriff gewährt wird und sie authentifiziert werden, um auf die Dienste zuzugreifen.
Derzeit ist es nicht erforderlich, diese Einstellungen für die Zwecke dieses Moduls zu ändern. Für Ihre persönlichen Projekte müssen Sie jedoch die Sichtbarkeit und den Zugriff bestimmen, den Sie anderen gewähren möchten. Bei einem Open-Source-Projekt können Sie z. B. sowohl Ihr GitHub-Repository als auch das Azure DevOps-Projekt öffentlich machen. Wenn Ihr Projekt geschützt ist, sollten Sie sowohl Ihr GitHub-Repository als auch das Azure DevOps-Projekt als privat festlegen.
Später können die folgenden Ressourcen hilfreich sein, um zu bestimmen, welche Option für Ihr Projekt am besten geeignet ist:
- Verwenden privater und öffentlicher Projekte
- Schnellstart: Öffentlichmachen privater Projekte
- Sichtbarkeit eines Repositorys festlegen
Zuweisen eines Arbeitselements und Festlegen des Zustands „Wird ausgeführt“
Hier weisen Sie sich selbst in Azure Boards ein Arbeitselement zu und legen den Arbeitselementstatus auf Wird ausgeführt fest. In der Praxis würden Sie und Ihr Team Arbeitselemente zu Beginn jedes Sprints oder jeder Arbeitsiteration erstellen.
In dieser Übung wird eine Checkliste erstellt, mit der gearbeitet werden soll. So können andere Teammitglieder einsehen, woran Sie gerade arbeiten und wie viel Arbeit noch übrig ist. Das Arbeitselement hilft auch bei der Erzwingung von WIP-Grenzwerten (Work-in-Progress, In Bearbeitung), um zu verhindern, dass das Team zu viel Arbeit auf einmal übernimmt.
Navigieren Sie von Azure DevOps aus zur Kategorie Boards, und wählen Sie dann im Menü die Option Boards aus.
Öffnen Sie das Arbeitselement zum Refactoring der Bestenlisten-API als Azure-Funktion, indem Sie den Titel auswählen. Weisen Sie sich selbst dieses Arbeitselement zu, und wählen Sie dann Speichern und schließen aus.
Klicken Sie unten auf der Karte auf den Pfeil nach unten, und wählen Sie Wird ausgeführt aus, oder wählen Sie die Karte aus, und ziehen Sie sie in die Spalte „Wird ausgeführt“.
Das Arbeitselement wird aus der Spalte Ausstehend in die Spalte Wird ausgeführt verschoben.
Am Ende dieses Moduls verschieben Sie die Karte in die Spalte Done (Erledigt), nachdem Sie die Aufgabe abgeschlossen haben.
Erstellen der Azure App Service- und Azure Functions-Umgebungen
Hier erstellen Sie die App Service- und Azure Functions-App, die für die Bereitstellung der neuen Version der Website und der API erforderlich ist.
Im Learn-Modul Erstellen einer Releasepipeline in Azure-Pipelines haben Sie App Service über das Azure-Portal aufgerufen. Obwohl das Portal eine großartige Möglichkeit ist, um zu erkunden, was in Azure verfügbar ist, oder um grundlegende Aufgaben zu erledigen, kann das Aufrufen von Komponenten wie App Service mühsam sein.
In diesem Modul verwenden Sie die Azure CLI, um eine App Service-Instanz aufzurufen. Der Zugriff auf die Azure CLI ist über ein Terminal oder über Visual Studio Code möglich. Hier greifen Sie über Azure Cloud Shell auf die Azure CLI zu. Diese browserbasierte Shell ist in der Cloud gehostet. In Cloud Shell ist die Azure CLI für die Verwendung mit Ihrem Azure-Abonnement konfiguriert.
Wichtig
Sie benötigen ein eigenes Azure-Abonnement für die Übungen in diesem Modul.
Aufrufen der Cloud Shell über das Azure-Portal
Melden Sie sich beim Azure-Portal an.
Wählen Sie in den globalen Steuerelementen im Seitenkopf die Option Cloud Shell aus.
Ein Terminal wird geöffnet und stellt eine Verbindung mit Azure Cloud Shell her.
Wählen Sie ggf. im Terminalmenü Bash aus.
Hinweis
Für Cloud Shell ist eine Azure-Speicherressource erforderlich, damit Sie alle in Cloud Shell erstellten Dateien dauerhaft speichern können. Wenn Sie Cloud Shell erstmals öffnen, werden Sie aufgefordert, eine Ressourcengruppe, ein Speicherkonto und eine Azure Files-Freigabe zu erstellen. Dieses Setup wird automatisch für alle zukünftigen Cloud Shell-Sitzungen verwendet.
Auswählen einer Azure-Region
Bei einer Region handelt es sich um mindestens ein Azure-Rechenzentrum an einem geografischen Standort. Beispiele für Regionen sind „USA, Osten“, „USA, Westen“ und „Europa, Norden“. Jeder Azure-Ressource, einschließlich App Service-Instanzen, wird eine Region zugewiesen.
Um die Ausführung von Befehlen zu erleichtern, legen Sie zunächst eine Standardregion fest. Diese wird in den von Ihnen eingegebenen Befehlen verwendet, bis Sie eine andere Region angeben.
Führen Sie in Cloud Shell den folgenden Befehl
az account list-locations
aus, um die Regionen aufzulisten, die in Ihrem Azure-Abonnement verfügbar sind:az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
Wählen Sie in der Spalte
Name
in der Ausgabe eine Region in Ihrer Nähe aus. Wählen Sie zum Beispieleastasia
oderwestus2
aus.Führen Sie
az configure
aus, um Ihre Standardregion festzulegen. Ersetzen Sie<REGION>
durch den Namen der ausgewählten Region.az configure --defaults location=<REGION>
In diesem Beispiel wird
westus2
als Standardregion festgelegt:az configure --defaults location=westus2
Erstellen von Bash-Variablen
Hier erstellen Sie Bash-Variablen, um den Setupvorgang bequemer und weniger fehleranfällig zu gestalten. Die Verwendung von Variablen für freigegebene Textzeichenfolgen hilft dabei, versehentliche Schreibfehler zu vermeiden.
Generieren Sie über Cloud Shell eine Zufallszahl, mit der im nächsten Schritt global eindeutige Namen für bestimmte Dienste erstellt werden.
resourceSuffix=$RANDOM
Erstellen Sie drei global eindeutige Namen für Ihre APP Service-, Azure Function- und Storage-Konten. Diese Befehle verwenden doppelte Anführungszeichen und weisen Bash damit an, die Variablen mithilfe der Inlinesyntax aufzulösen.
webName="tailspin-space-game-web-${resourceSuffix}" leaderboardName="tailspin-space-game-leaderboard-${resourceSuffix}" storageName="tailspinspacegame${resourceSuffix}"
Erstellen Sie zwei weitere Bash-Variablen, um die Namen der Ressourcengruppe und des App Service-Plans zu speichern.
rgName='tailspin-space-game-rg' planName='tailspin-space-game-asp'
Erstellen der erforderlichen Azure-Ressourcen
Für die Bereitstellung der Lösung sind mehrere Azure-Ressourcen erforderlich, die Sie jetzt erstellen werden.
Hinweis
In dieser Übung werden die Standardnetzwerkeinstellungen verwendet, damit Ihre Website über das Internet zugänglich ist. In der Praxis können Sie ein virtuelles Azure-Netzwerk konfigurieren, um Ihre Website in einem Netzwerk zu platzieren, auf das nur Sie und Ihr Team zugreifen können. Später können Sie das virtuelle Netzwerk neu konfigurieren, um die Website den Benutzern zur Verfügung zu stellen.
Führen Sie den folgenden Befehl
az group create
aus, um eine Ressourcengruppe mit dem zuvor definierten Namen zu erstellen:az group create --name $rgName
Führen Sie den folgenden
az appservice plan create
-Befehl aus, um einen App Service-Plan mit dem in der vorherigen Aufgabe definierten Namen zu erstellen:az appservice plan create \ --name $planName \ --resource-group $rgName \ --sku B1 \ --is-linux
Der Parameter
--sku
gibt den B1-Plan an. Dieser Plan wird im Basic-Tarif ausgeführt. Der Parameter--is-linux
gibt Linux-Worker an (Threads, die in Ereignissen und in der Aufgabenplanung verwendet werden).Wichtig
Wenn die B1-SKU in Ihrem Azure-Abonnement nicht verfügbar ist, wählen Sie einen anderen Plan aus, z. B. S1 (Standard).
Führen Sie den folgenden
az webapp create
-Befehl aus, um die App Service-Instanz zu erstellen:az webapp create \ --name $webName \ --resource-group $rgName \ --plan $planName \ --runtime "DOTNETCORE|6.0"
Für Azure Functions ist ein Speicherkonto für die Bereitstellung erforderlich. Führen Sie den folgenden
az storage account create
-Befehl aus, um es zu erstellen:az storage account create \ --name $storageName \ --resource-group $rgName \ --sku Standard_LRS
Führen Sie den folgenden Befehl
az functionapp create
aus, um die Azure Functions-App-Instanz zu erstellen. Ersetzen Sie die<region>
durch Ihre bevorzugte Region.az functionapp create \ --name $leaderboardName \ --resource-group $rgName \ --storage-account $storageName \ --functions-version 4 \ --consumption-plan-location <region>
Führen Sie den folgenden
az webapp list
-Befehl aus, um den Hostnamen und Status der App Service-Instanz aufzulisten:az webapp list \ --resource-group $rgName \ --query "[].{hostName: defaultHostName, state: state}" \ --output table
Notieren Sie sich den Hostnamen für den ausgeführten Dienst. Er sollte (mit Ausnahme des Zufallszahlenbezeichners) in etwa wie folgt aussehen. Sie benötigen den Webhostnamen später, wenn Sie Ihre Arbeit überprüfen.
HostName State ---------------------------------------------- ------- tailspin-space-game-web-4692.azurewebsites.net Running
Führen Sie den folgenden Befehl
az functionapp list
aus, um den Hostnamen und Status der Azure Functions-Instanz aufzulisten.az functionapp list \ --resource-group $rgName \ --query "[].{hostName: defaultHostName, state: state}" \ --output table
Notieren Sie sich den Hostnamen für den ausgeführten Dienst. Er sollte (mit Ausnahme des Zufallszahlenbezeichners) in etwa wie folgt aussehen. Sie benötigen den Bestenlistenhostnamen später, wenn Sie Ihre Arbeit überprüfen.
HostName State ------------------------------------------------------ ------- tailspin-space-game-leaderboard-4692.azurewebsites.net Running
Kopieren Sie diese beiden Namen an einen Speicherort, auf den Sie später problemlos zugreifen können.
Öffnen Sie optional einen Browser, und geben Sie einen Hostnamen ein, um die Ausführung zu überprüfen. Die Standardstartseite wird angezeigt.
Wichtig
Auf der Seite Clean up your Azure DevOps environment (Bereinigen der Azure DevOps-Umgebung) in diesem Modul werden wichtige Bereinigungsschritte erläutert. Durch die Bereinigung wird sichergestellt, dass Azure-Ressourcen nach Abschluss dieses Moduls nicht in Rechnung gestellt werden. Achten Sie darauf, dass Sie die Bereinigungsschritte auch ausführen, wenn Sie dieses Modul nicht abschließen.
Erstellen von Pipelinevariablen in Azure Pipelines
Im Modul Erstellen einer Releasepipeline mit Azure Pipelines haben Sie Ihrer Pipeline eine Variable hinzugefügt, um den Namen Ihrer Web-App in App Service zu speichern. Hier gehen Sie genauso vor. Außerdem fügen Sie den Namen der Leaderboard-App für die Azure Functions-Instanz hinzu.
Sie könnten diese Namen in Ihrer Pipelinekonfiguration hartcodieren, aber wenn Sie sie als Variablen definieren, lässt sich Ihre Konfiguration besser wiederverwenden. Außerdem können Sie, wenn sich die Namen Ihrer Instanzen ändern, die Variablen aktualisieren und Ihre Pipeline auslösen, ohne Ihre Konfiguration zu ändern.
Fügen Sie Ihrem Projekt jetzt eine Variablengruppe hinzu.
Ihr Projekt Space Game - Web - Azure Functions sollte in Azure DevOps geöffnet sein.
Wählen Sie im Menü Pipelines und unter Pipelines die Option Bibliothek aus. Der Bereich „Bibliothek“ wird angezeigt.
Wählen Sie in der Befehlsleiste oder in der Mitte des Bereichs die Option Variablengruppe aus. Die Seite Neue Variablengruppe wird angezeigt.
Geben Sie als Namen für die Variablengruppe Release ein.
Wählen Sie unter Variablen die Option Hinzufügen aus.
Geben Sie als Namen Ihrer Variable WebAppName ein. Geben Sie als Wert den Namen der App Service-Instanz ein, die für Ihre Web-App erstellt wurde, z. B. tailspin-space-game-web-4692.
Wichtig
Legen Sie den Namen der App Service-Instanz fest, nicht den vollständigen Hostnamen. In dieser Übung ist tailspin-space-game-web-4692 beispielsweise der Instanzteil des Hostnamens tailspin-space-game-web-4692.azurewebsites.net.
Fügen Sie eine weitere Variable namens LeaderboardAppName mit dem Wert Ihrer Bestenlisteninstanz hinzu, z. B. tailspin-space-game-leaderboard-4692.
Fügen Sie eine letzte Variable namens ResourceGroupName mit dem Wert tailspin-space-game-rg hinzu.
Wählen Sie in der Befehlsleiste im oberen Seitenbereich Speichern aus, um Ihre Variablengruppe Release in der Pipeline zu speichern.
Die Variablen in Ihrer Variablengruppe sollten wie folgt aussehen:
Erstellen der spike-Umgebung
In vorherigen Modulen haben Sie Umgebungen für Entwicklung, Test und Staging erstellt. Hier gehen Sie genauso vor. Diesmal erstellen Sie eine Umgebung namens spike.
Wählen Sie im Azure DevOps-Menü unter Pipelinesdie Option Umgebungen aus.
Klicken Sie auf Umgebung erstellen. Der Bereich Neue Umgebung wird angezeigt.
Geben Sie unter Name den Namen spike ein.
Behalten Sie in den übrigen Feldern die Standardwerte bei.
Klicken Sie auf Erstellen.
Erstellen einer Dienstverbindung
Hier stellen Sie eine Dienstverbindung her, die Azure Pipelines den Zugriff auf Ihr Azure-Abonnement ermöglicht. Azure Pipelines verwendet diese Dienstverbindung, um die Website in App Service bereitzustellen. Eine ähnliche Dienstverbindung haben Sie im vorherigen Modul erstellt.
Wichtig
Stellen Sie sicher, dass Sie sowohl beim Azure-Portal als auch bei Azure DevOps mit demselben Microsoft-Konto angemeldet sind.
Wählen Sie in Azure DevOps im Pipelineprojekt Space Game - Web - Azure Functions unterhalb des Menüs die Option Projekteinstellungen aus. Der Bereich Projektdetails wird angezeigt.
Klicken Sie im Menü unter Pipelines auf Dienstverbindungen.
Wählen Sie auf der Seite Dienstverbindungen die Option Neue Dienstverbindung und dann im Bereich Neue Dienstverbindung die Option Azure Resource Manager aus, und klicken Sie auf Weiter.
Wählen Sie im Bereich Neue Dienstverbindung die Option Dienstprinzipal (automatisch) aus, und klicken Sie dann auf Weiter.
Wählen Sie im Bereich Neue Azure-Dienstverbindung die folgenden Einstellungen aus, oder geben Sie sie ein:
Feld Wert Bereichsebene Abonnement Subscription Wählen Sie Ihr Azure-Abonnement aus. Ressourcengruppe tailspin-space-game-rg Name der Dienstverbindung Resource Manager – Tailspin – Space Game Im weiteren Verlauf werden Sie u. U. aufgefordert, sich bei Ihrem Microsoft-Konto anzumelden.
Achten Sie darauf, dass Grant access permission to all pipelines ausgewählt ist.
Wählen Sie Speichern aus.
Azure DevOps führt einen Verbindungstest aus, um sicherzustellen, dass eine Verbindung mit Ihrem Azure-Abonnement hergestellt werden kann. Wenn Azure DevOps keine Verbindung herstellen kann, haben Sie die Möglichkeit, sich ein zweites Mal anzumelden.