Übung: Einrichten Ihrer Umgebung

Abgeschlossen

Wichtig

Sie benötigen für diese Übung ein eigenes Azure-Abonnement. Außerdem fallen möglicherweise Gebühren für Sie an. Wenn Sie noch kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Bevor Sie mit der Arbeit am Websiteworkflow Ihres Spielzeugunternehmens beginnen, müssen Sie Ihre Umgebung konfigurieren. In dieser Lerneinheit stellen Sie sicher, dass Ihre Azure- und GitHub-Umgebungen so eingerichtet sind, dass Sie den Rest dieses Moduls absolvieren können.

So erreichen Sie diese Ziele:

  • Richten Sie ein GitHub-Repository für dieses Modul ein.
  • Klonen Sie das Repository des Projekts auf Ihren Computer.
  • Erstellen Sie zwei Workloadidentitäten in Microsoft Entra-ID.
  • Erstellen Sie zwei Ressourcengruppen in Azure.
  • Erstellen von zwei Geheimnissen und Umgebungen in GitHub

Abrufen des GitHub-Repositorys

Hier stellen Sie sicher, dass Ihr GitHub Repository für den Rest dieses Moduls eingerichtet ist. Sie richten es ein, indem Sie ein neues Repository basierend auf einem Vorlagenrepository erstellen. Das Vorlagenrepository enthält die Dateien, die Sie für den Einstieg in dieses Modul benötigen.

Die Module in diesem Lernpfad sind fortschreitend angeordnet. Zu Lernzwecken verfügt jedes Modul über ein zugeordnetes GitHub Vorlagenrepository.

Tipp

Auch wenn Sie das vorherige Modul im Lernpfad abgeschlossen haben, befolgen Sie diese Anweisungen, um ein neues Repository zu erstellen. Stellen Sie dabei sicher, dass Sie ihm einen neuen Namen geben.

Starten über das Vorlagenrepository

Führen Sie eine Vorlage aus, mit der Ihr GitHub-Repository eingerichtet wird.

Führen Sie auf GitHub-Website die folgenden Schritte aus, um ein Repository aus der Vorlage zu erstellen:

  1. Wählen Sie Diese Vorlage verwenden>Neues Repository erstellen aus.

    Screenshot der GitHub-Benutzeroberfläche mit dem Vorlagenrepository und hervorgehobener Schaltfläche „Use this template“ (Diese Vorlage verwenden)

  2. Notieren Sie sich Ihren GitHub-Benutzernamen oder den Namen Ihrer Organisation. Im Beispiel lautet der GitHub-Benutzername mygithubuser. Sie benötigen diesen Namen in Kürze.

  3. Geben Sie einen Namen für das neue Projekt ein, z. B. toy-website-environments.

  4. Wählen Sie die Option Public aus.

    Wenn Sie Ihre eigenen Repositorys erstellen, können Sie diese als privat festlegen. In diesem Modul arbeiten Sie mit einigen Features von GitHub, die nur mit öffentlichen Repositorys und mit GitHub Enterprise-Konten funktionieren.

  5. Wählen Sie Create repository from template (Repository aus Vorlage erstellen) aus.

    Screenshot der GitHub-Benutzeroberfläche mit der Seite zur Repositoryerstellung

Wichtig

Die letzte Übung in diesem Modul enthält wichtige Schritte zur Bereinigung. Führen Sie unbedingt die Bereinigungsschritte durch, auch wenn Sie dieses Modul nicht absolvieren.

Klonen des Repositorys

Sie verfügen nun über eine Kopie des Vorlagenrepositorys in Ihrem eigenen Konto. Als Nächstes klonen Sie dieses Repository lokal, damit Sie damit beginnen können, darin zu arbeiten.

  1. Wählen Sie Code und dann das Kopiersymbol aus.

    Screenshot der GitHub-Benutzeroberfläche mit dem neuen Repository und hervorgehobener Schaltfläche zum Kopieren der Repository-URL

  2. Öffnen Sie Visual Studio Code.

  3. Öffnen Sie in Visual Studio Code ein neues Terminalfenster, indem Sie auf Terminal>Neues Terminal klicken. Das Fenster wird in der Regel am unteren Bildschirmrand geöffnet.

  4. Navigieren Sie im Terminal zu dem Verzeichnis, in dem Sie das GitHub-Repository auf Ihrem lokalen Computer klonen möchten. Führen Sie beispielsweise den folgenden Befehl aus, um das Repository in den Ordner toy-website-environments zu klonen:

    cd toy-website-environments
    
  5. Geben Sie git clone ein, und fügen Sie die zuvor kopierte URL ein. Das Ergebnis sollte in etwa wie folgt aussehen:

    git clone https://github.com/mygithubuser/toy-website-environments.git
    
  6. Öffnen Sie Visual Studio Code erneut im Repositoryordner, indem Sie den folgenden Befehl am Visual Studio Code-Terminal ausführen:

    code -r toy-website-environments
    

Anmelden bei Azure

Sie müssen sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto anmelden, um Ressourcengruppen in Azure verwenden zu können. Stellen Sie sicher, dass Sie die Azure CLI-Tools installiert haben.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

    Die Standardshell ist in der Regel pwsh, wie auf der rechten Seite des Terminalfensters dargestellt.

    Screenshot des Visual Studio Code-Terminalfensters, in dem pwsh als Shelloption angezeigt wird.

  2. Wählen Sie die Dropdownliste Startprofil und dann Azure Cloud Shell (Bash) aus.

    Screenshot des Visual Studio Code-Terminalfensters. Die Dropdownliste der Terminalshell und das Menüelement Azure Cloud Shell (Bash) werden angezeigt.

    Eine neue Shell wird geöffnet.

Anmelden bei Azure über die Azure CLI

  1. Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus, um sich bei Azure anzumelden:

    az login
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

Sie müssen sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto anmelden, um Ressourcengruppen in Azure verwenden zu können. Stellen Sie sicher, dass Azure PowerShell installiert ist.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

    Die Standardshell ist in der Regel pwsh, wie auf der rechten Seite des Terminalfensters dargestellt.

    Screenshot des Visual Studio Code-Terminalfensters, in dem pwsh als Shelloption angezeigt wird.

  2. Wählen Sie die Dropdownliste Startprofil und dann Azure Cloud Shell (PowerShell) aus.

    Screenshot des Visual Studio Code-Terminalfensters. Die Dropdownliste der Terminalshell und das Menüelement Azure Cloud Shell (PowerShell) werden angezeigt.

    Eine neue Shell wird geöffnet.

Anmelden bei Azure mithilfe von Azure PowerShell

  1. Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus, um sich bei Azure anzumelden:

    Connect-AzAccount
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

Erstellen von zwei Workloadidentitäten

Erstellen Sie als Nächstes zwei Workloadidentitäten in Microsoft Entra ID: eine für Ihre Testumgebung und eine für Ihre Produktionsumgebung.

Zum Erstellen der Workloadidentitäten verwenden die Azure CLI-Befehle jq, um Daten aus der JSON-Ausgabe zu parsen. Wenn Sie jq nicht installiert haben, können Sie Bash in Azure Cloud Shell verwenden, um die Workloadidentität, die Ressourcengruppe und die Rollenzuweisung zu erstellen und die GitHub-Geheimnisse vorzubereiten.

  1. Führen Sie den folgenden Code aus, um Variablen für Ihren GitHub-Benutzernamen und den Namen Ihres Repositorys zu definieren. Stellen Sie sicher, dass Sie mygithubuser durch Ihren GitHub-Benutzernamen ersetzen, den Sie zuvor in dieser Übung notiert haben. Stellen Sie außerdem sicher, dass Sie den richtigen GitHub-Repositorynamen angeben.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-environments'
    
  2. Erstellen Sie eine Workloadidentität für Bereitstellungen in Ihrer Testumgebung. Die Workloadidentität benötigt zwei Verbundanmeldeinformationen: eine wird verwendet, wenn der Workflow den Auftrag Überprüfen ausführt, da dieser Auftrag keiner GitHub-Umgebung zugeordnet ist. Die zweite wird verwendet, wenn der Workflow den Auftrag Bereitstellen für die GitHub-Umgebung Test ausführt.

    testApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-environments-test')
    testApplicationRegistrationObjectId=$(echo $testApplicationRegistrationDetails | jq -r '.id')
    testApplicationRegistrationAppId=$(echo $testApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-environments-test\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Test\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-environments-test-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  3. Führen Sie den folgenden Code aus, der eine ähnliche Workloadidentität und Verbundanmeldeinformationen für die Produktionsumgebung erstellt:

    productionApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-environments-production')
    productionApplicationRegistrationObjectId=$(echo $productionApplicationRegistrationDetails | jq -r '.id')
    productionApplicationRegistrationAppId=$(echo $productionApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-environments-production\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Production\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-environments-production-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Führen Sie den folgenden Code aus, um Variablen für Ihren GitHub-Benutzernamen und den Namen Ihres Repositorys zu definieren. Stellen Sie sicher, dass Sie mygithubuser durch Ihren GitHub-Benutzernamen ersetzen, den Sie zuvor in dieser Übung notiert haben. Stellen Sie außerdem sicher, dass Sie den richtigen GitHub-Repositorynamen angeben.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-environments'
    
  2. Führen Sie den folgenden Code aus, der eine Workloadidentität für die Testumgebung erstellt und Ihrem GitHub-Repository zuordnet:

    $testApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-environments-test'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-environments-test' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Test"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-environments-test-branch' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    
  3. Führen Sie den folgenden Code aus, der einem ähnlichen Prozess für die Produktionsumgebung folgt:

    $productionApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-environments-production'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-environments-production' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Production"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-environments-production-branch' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Erstellen von zwei Ressourcengruppen in Azure und Erteilen von Zugriff für die Workloadidentität

Erstellen Sie als Nächstes eine Ressourcengruppe für jede Umgebung. Dadurch wird der jeweiligen Workloadidentität auch die Rolle Mitwirkender für die Ressourcengruppe gewährt, damit Ihr Workflow eine Bereitstellung in der Ressourcengruppe durchführen kann.

  1. Führen Sie die folgenden Azure CLI-Befehle im Visual Studio Code-Terminal aus, um die Ressourcengruppe für die Testumgebung zu erstellen und der Workloadidentität Zugriff darauf zu erteilen:

    testResourceGroupResourceId=$(az group create --name ToyWebsiteTest --location eastus --query id --output tsv)
    
    az ad sp create --id $testApplicationRegistrationObjectId
    az role assignment create \
       --assignee $testApplicationRegistrationAppId \
       --role Contributor \
       --scope $testResourceGroupResourceId
    
  2. Führen Sie einen ähnlichen Vorgang aus, um die Ressourcengruppe für die Produktionsumgebung zu erstellen:

    productionResourceGroupResourceId=$(az group create --name ToyWebsiteProduction --location eastus --query id --output tsv)
    
    az ad sp create --id $productionApplicationRegistrationObjectId
    az role assignment create \
       --assignee $productionApplicationRegistrationAppId \
       --role Contributor \
       --scope $productionResourceGroupResourceId
    
  1. Führen Sie die folgenden Azure PowerShell-Befehle im Visual Studio Code-Terminal aus, um die Ressourcengruppe für die Testumgebung zu erstellen und der Workloadidentität Zugriff darauf zu erteilen:

    $testResourceGroup = New-AzResourceGroup -Name ToyWebsiteTest -Location eastus
    
    New-AzADServicePrincipal -AppId $($testApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($testApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($testResourceGroup.ResourceId)
    
  2. Führen Sie einen ähnlichen Vorgang aus, um die Ressourcengruppe für die Produktionsumgebung zu erstellen:

    $productionResourceGroup = New-AzResourceGroup -Name ToyWebsiteProduction -Location eastus
    
    New-AzADServicePrincipal -AppId $($productionApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($productionApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($productionResourceGroup.ResourceId)
    

Vorbereiten von GitHub-Geheimnissen

Führen Sie den folgenden Code aus, um die Werte anzuzeigen, die Sie als GitHub-Geheimnisse erstellen müssen:

echo "AZURE_CLIENT_ID_TEST: $testApplicationRegistrationAppId"
echo "AZURE_CLIENT_ID_PRODUCTION: $productionApplicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID_TEST: $($testApplicationRegistration.AppId)"
Write-Host "AZURE_CLIENT_ID_PRODUCTION: $($productionApplicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

Erstellen von GitHub-Geheimnissen

Sie haben zwei Workloadidentitäten und die Ressourcengruppen erstellt, in denen sie bereitgestellt werden. Als Nächstes erstellen Sie Geheimnisse in GitHub Actions.

  1. Navigieren Sie im Browser zu Ihrem GitHub-Repository.

  2. Wählen Sie Einstellungen>Geheimnisse und Variablen>Aktionen aus.

  3. Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.

    Screenshot der GitHub-Benutzeroberfläche mit der Seite „Geheimnisse“ mit hervorgehobener Schaltfläche „New repository secret“ (Neues Repositorygeheimnis)

  4. Benennen Sie das Geheimnis mit AZURE_CLIENT_ID_TEST.

  5. Fügen Sie im Feld Wert die GUID aus der ersten Zeile der Terminalausgabe ein. Fügen Sie AZURE_CLIENT_ID_TEST, den Doppelpunkt und Leerzeichen nicht in den Wert ein.

  6. Klicken Sie auf Add secret (Geheimnis hinzufügen).

    Screenshot der GitHub-Benutzeroberfläche mit der Seite „New Secret“ (Neues Geheimnis) mit ausgefülltem Namen und Wert und hervorgehobener Schaltfläche „Add secret“ (Geheimnis hinzufügen)

  7. Wiederholen Sie den Vorgang, um die Geheimnisse für AZURE_CLIENT_ID_PRODUCTION, AZURE_TENANT_ID und AZURE_SUBSCRIPTION_ID zu erstellen, indem Sie die Werte aus den entsprechenden Feldern der Terminalausgabe kopieren.

  8. Vergewissern Sie sich, dass in der Liste der Geheimnisse jetzt alle vier Geheimnisse angezeigt werden.

    Screenshot: GitHub-Benutzeroberfläche mit der Liste der Geheimnisse, einschließlich der Geheimnisse für Test- und Produktionsumgebung

Erstellen von Umgebungen in GitHub

  1. Navigieren Sie im Browser zu Einstellungen>Umgebungen.

  2. Wählen Sie Neue Umgebung aus.

    Screenshot: GitHub-Benutzeroberfläche mit der Seite für Umgebungen und der Schaltfläche zum Erstellen einer Umgebung

  3. Geben Sie als Umgebungsnamen Test ein.

    Screenshot: GitHub-Seite für eine neue Umgebung namens „Test“ mit der Schaltfläche zum Konfigurieren einer Umgebung

  4. Wählen Sie Configure environment (Umgebung konfigurieren) aus.

  5. Wählen Sie Environments aus, um zur Liste der Umgebungen zurückzukehren.

    Screenshot: GitHub-Seite für eine neue Umgebung namens „Test“ mit dem Link für Umgebungen

  6. Wiederholen Sie den Vorgang, um eine weitere Umgebung mit dem Namen Produktion zu erstellen.

    Lassen Sie die Konfigurationsseite für die Produktionsumgebung geöffnet.

Hinzufügen einer Schutzregel zur Produktionsumgebung

  1. Wählen Sie Required reviewers aus.

  2. Geben Sie im Textfeld Search for people or teams Ihren eigenen GitHub-Benutzernamen ein, und wählen Sie sich selbst aus.

    Screenshot: GitHub-Benutzeroberfläche mit Anzeige der Seite zum Hinzufügen eines erforderlichen Prüfers mit ausgefüllten Details und der Schaltfläche zum Speichern der Schutzregeln.

  3. Wählen Sie Save protection rules (Schutzregeln speichern) aus.

  4. Wählen Sie Umgebungen aus, um die Konfiguration zu beenden.