Freigeben über


Verwenden des SAP-Frameworks zur Automatisierung der Bereitstellung auf Azure über Azure DevOps Services

Azure DevOps optimiert den Bereitstellungsprozess, indem Pipelines bereitgestellt werden, die Sie ausführen können, um die Infrastrukturbereitstellung sowie die Konfigurations- und SAP-Installationsaktivitäten auszuführen.

Sie können Azure Repos verwenden, um Ihre Konfigurationsdateien zu speichern und Azure Pipelines zum Bereitstellen und Konfigurieren der Infrastruktur und der SAP-Anwendung zu verwenden.

Registrieren für Azure DevOps Services

Sie benötigen eine Azure DevOps-Organisation, um Azure DevOps Services verwenden zu können. Eine Organisation wird verwendet, um Gruppen verwandter Projekte zu verbinden. Verwenden Sie Ihr Geschäfts-, Schul- oder Unikonto, um Ihre Organisation automatisch mit Ihrer Microsoft Entra-ID zu verbinden. Um ein Konto zu erstellen, öffnen Sie Azure DevOps und melden sich an oder erstellen ein neues Konto.

Konfigurieren von Azure DevOps Services für SAP Deployment Automation Framework

Sie können das folgende Skript verwenden, um eine Basisinstallation von Azure Devops Services für das SAP-Framework zur Automatisierung der Bereitstellung auszuführen.

Öffnen Sie PowerShell ISE, kopieren Sie das folgende Skript, und aktualisieren Sie die Parameter entsprechend Ihrer Umgebung.

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_CONTROL_PLANE_CODE = "MGMT"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $Env:MSI_OBJECT_ID = $null

    $branchName = "main"
        
    $UniqueIdentifier = "SDAF" + $ShortCode
    
    if ($Env:ARM_TENANT_ID.Length -eq 0) {
      az login --output none --only-show-errors --scope https://graph.microsoft.com//.default
    }
    else {
      az login --output none --tenant $Env:ARM_TENANT_ID --only-show-errors --scope https://graph.microsoft.com//.default
    }

    az config set extension.use_dynamic_install=yes_without_prompt --only-show-errors

    az extension add --name azure-devops --only-show-errors

    $differentTenant = Read-Host "Is your Azure DevOps organization hosted in a different tenant than the one you are currently logged in to? y/n"
    if ($differentTenant -eq 'y') {
        $env:AZURE_DEVOPS_EXT_PAT = Read-Host "Please enter your Personal Access Token (PAT) with permissions to add new projects, manage agent pools to the Azure DevOps organization $Env:ADO_Organization"
        try {
            az devops project list
        }
        catch {
            $_
        }
    }
    
    $confirmationWebAppDeployment = Read-Host "Do you want to use the Web Application for editing the configuration files (recommended) y/n?"
    if ($confirmationWebAppDeployment -eq 'y') {
        $Env:SDAF_WEBAPP = "true"
        $confirmation = Read-Host "Do you want to create a new Application registration (needed for the Web Application) y/n?"
        if ($confirmation -eq 'y') {
            $Env:SDAF_APP_NAME = "SDAF " + $UniqueIdentifier + " SDAF Control Plane"
        }
        else {
            $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
        }
    }
    else {
        $Env:SDAF_WEBAPP = "false"
    }
    
    $Env:SDAF_AuthenticationMethod = 'Managed Identity'
    
    $confirmationDeployment = Read-Host "Do you want to use Managed Identities for the deployment (recommended) y/n?"
    
    if ($confirmationDeployment -eq 'n') {
        $Env:SDAF_AuthenticationMethod = 'Service Principal'
         
        $confirmation = Read-Host "Do you want to create a new Service Principal for the Control plane y/n?"
        if ($confirmation -eq 'y') {
            $Env:SDAF_MGMT_SPN_NAME = "SDAF " + $UniqueIdentifier + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
        }
        else {
            $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
        }
        
    }
        
    if ( $PSVersionTable.Platform -eq "Unix") {
        if ( Test-Path "SDAF") {
        }
        else {
            $sdaf_path = New-Item -Path "SDAF" -Type Directory
        }
    }
    else {
        $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
        if ( Test-Path $sdaf_path) {
        }
        else {
            New-Item -Path $sdaf_path -Type Directory
        }
    }
        
    Set-Location -Path $sdaf_path
        
    if ( Test-Path "New-SDAFDevopsProject.ps1") {
        if ( $PSVersionTable.Platform -eq "Unix") {
            Remove-Item "New-SDAFDevopsProject.ps1"
        }
        else {
            Remove-Item ".\New-SDAFDevopsProject.ps1"
        }
    }
        
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/$branchName/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile New-SDAFDevopsProject.ps1 
    
    
    if ( $PSVersionTable.Platform -eq "Unix") {
        Unblock-File ./New-SDAFDevopsProject.ps1
        ./New-SDAFDevopsProject.ps1
    }
    else {
        Unblock-File .\New-SDAFDevopsProject.ps1
        .\New-SDAFDevopsProject.ps1
    }
    

Führen Sie das Skript aus, und folgen Sie den Anweisungen. Das Skript öffnet Browserfenster für die Authentifizierung und zur Erledigung von Aufgaben im Azure DevOps-Projekt.

Sie können den Code entweder direkt über GitHub ausführen oder eine Kopie des Codes in Ihr Azure DevOps-Projekt importieren.

Um zu bestätigen, dass das Projekt erstellt wurde, wechseln Sie zum Azure DevOps-Portal und wählen Sie das Projekt aus. Stellen Sie sicher, dass das Repository aufgefüllt wurde und dass die Pipelines erstellt wurden.

Von Bedeutung

Führen Sie die folgenden Schritte auf Ihrer lokalen Arbeitsstation aus. Stellen Sie außerdem sicher, dass Sie die neueste Azure CLI installiert haben, indem Sie den Befehl „az upgrade“ ausführen.

Konfigurieren von Azure DevOps Services-Artefakten für eine neue Workloadzone

Verwenden Sie das folgende Skript, um die Artefakte bereitzustellen, die erforderlich sind, um eine neue Workloadzone zu unterstützen. In diesem Prozess wird die Variablengruppe und die Dienstverbindung in Azure DevOps und optional im Bereitstellungsdienstprinzipal erstellt.

Öffnen Sie PowerShell ISE, kopieren Sie das folgende Skript, und aktualisieren Sie die Parameter entsprechend Ihrer Umgebung.

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
    
    if ( $PSVersionTable.Platform -eq "Unix") {
        if ( Test-Path "SDAF") {
        }
        else {
            $sdaf_path = New-Item -Path "SDAF" -Type Directory
        }
    }
    else {
        $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
        if ( Test-Path $sdaf_path) {
        }
        else {
            New-Item -Path $sdaf_path -Type Directory
        }
    }

    $branchName = "main"
    
    Set-Location -Path $sdaf_path
    
    if ( Test-Path "New-SDAFDevopsWorkloadZone.ps1") {
        remove-item .\New-SDAFDevopsWorkloadZone.ps1
    }
    
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/$branchName/deploy/scripts/New-SDAFDevopsWorkloadZone.ps1 -OutFile .\New-SDAFDevopsWorkloadZone.ps1 ; .\New-SDAFDevopsWorkloadZone.ps1
    

Beispiel einer Steuerungsebene-Konfiguration erstellen

Sie können die Create Sample Deployer Configuration Pipeline ausführen, um eine Beispielkonfiguration für die Steuerungsebene zu erstellen. Wenn sie ausgeführt wird, wählen Sie die entsprechende Azure-Region aus. Sie können auch steuern, ob Sie Azure Firewall und Azure Bastion bereitstellen möchten.

Manuelle Konfiguration von Azure DevOps Services für SAP Deployment Automation Framework

Sie können Azure DevOps Services für SAP Deployment Automation Framework manuell konfigurieren.

Erstellen eines neuen Projekts

Sie können Azure Repos verwenden, um den Code aus dem Sap-Automatisierung-GitHub-Repository und den Umgebungskonfigurationsdateien zu speichern.

Öffnen Sie Azure DevOps , und erstellen Sie ein neues Projekt, indem Sie "Neues Projekt" auswählen und die Projektdetails eingeben. Das Projekt enthält das Repository für die Quellcodeverwaltung von Azure Repos und Azure Pipelines zum Ausführen von Bereitstellungsaktivitäten.

Wenn "Neues Projekt" nicht angezeigt wird, stellen Sie sicher, dass Sie über berechtigungen zum Erstellen neuer Projekte in der Organisation verfügen.

Notieren Sie die URL des Projekts.

Importieren des Repositorys

Importieren Sie zunächst das SAP Deployment Automation Framework Bootstrap GitHub-Repository in Azure Repos.

Wechseln Sie zum Abschnitt "Repositorys ", und wählen Sie " Repository importieren" aus. Importieren Sie das https://github.com/Azure/sap-automation-bootstrap.git Repository in Azure DevOps. Weitere Informationen finden Sie unter Importieren eines Repositorys.

Wenn Sie kein Repository importieren können, können Sie das Repository manuell erstellen. Anschließend können Sie den Inhalt aus dem GitHub-Bootstrap-Repository des SAP Deployment Automation Framework in das Repository importieren.

Erstellen des Repositorys für den manuellen Import

Führen Sie diesen Schritt nur aus, wenn Sie das Repository nicht direkt importieren können.

Um das Arbeitsbereichs-Repository zu erstellen, wählen Sie im Abschnitt " Repos " unter "Projekteinstellungen" die Option "Erstellen" aus.

Wählen Sie das Repository aus, geben Sie Git ein, und geben Sie einen Namen für das Repository an. Verwenden Sie z. B. das SAP-Konfigurations-Repository.

Klonen des Repositorys

Um eine umfassendere Bearbeitungsfunktion des Inhalts bereitzustellen, können Sie das Repository in einen lokalen Ordner klonen und den Inhalt lokal bearbeiten.

Um das Repository in einen lokalen Ordner zu klonen, wählen Sie im Abschnitt " Repository " des Portals unter "Dateien" die Option "Klonen" aus. Weitere Informationen finden Sie unter Klonen eines Repositorys.

Screenshot, der zeigt, wie sie das Repository klonen.

Manuelles Importieren des Repositoryinhalts mithilfe eines lokalen Klons

Sie können den Inhalt auch manuell aus dem SAP Deployment Automation Framework-Repository herunterladen und dem lokalen Klon des Azure DevOps-Repositorys hinzufügen.

Wechseln Sie zum https://github.com/Azure/SAP-automation-samples Repository, und laden Sie den Repositoryinhalt als .zip Datei herunter. Wählen Sie "Code " und dann " ZIP herunterladen" aus.

Kopieren Sie den Inhalt aus der datei .zip in den Stammordner Ihres lokalen Klons.

Öffnen Sie den lokalen Ordner in Visual Studio Code. Sie sollten sehen, dass Änderungen vom Indikator über das hier gezeigte Quellcodeverwaltungssymbol synchronisiert werden müssen.

Screenshot, der zeigt, dass der Quellcode geändert wird.

Wählen Sie das Quellcodeverwaltungssymbol aus, und geben Sie eine Meldung zur Änderung an. Geben Sie beispielsweise "Importieren aus GitHub" ein, und wählen Sie STRG+EINGABETASTE aus, um die Änderungen zu übernehmen. Wählen Sie als Nächstes " Änderungen synchronisieren" aus, um die Änderungen wieder mit dem Repository zu synchronisieren.

Wählen Sie die Quelle für den Terraform- und Ansible-Code aus.

Sie können den SAP Deployment Automation Framework-Code entweder direkt über GitHub ausführen oder lokal importieren.

Ausführen des Codes aus einem lokalen Repository

Wenn Sie den SAP Deployment Automation Framework-Code aus dem lokalen Azure DevOps-Projekt ausführen möchten, müssen Sie ein separates Code-Repository und ein Konfigurations-Repository im Azure DevOps-Projekt erstellen:

  • Name des Konfigurations-Repositorys: Same as the DevOps Project name. Die Quelle ist https://github.com/Azure/sap-automation-bootstrap.git.
  • Name des Code-Repositorys: sap-automation. Die Quelle ist https://github.com/Azure/sap-automation.git.
  • Name des Beispiel- und Vorlagen-Repositorys: sap-samples. Die Quelle ist https://github.com/Azure/sap-automation-samples.git.

Ausführen des Codes direkt über GitHub

Wenn Sie den Code direkt von GitHub ausführen möchten, müssen Sie Anmeldeinformationen für Azure DevOps angeben, um den Inhalt von GitHub abrufen zu können.

Erstellen der GitHub-Dienstverbindung

Um den Code von GitHub abzurufen, benötigen Sie eine GitHub-Dienstverbindung. Weitere Informationen finden Sie unter Verwalten von Dienstverbindungen.

Um die Dienstverbindung zu erstellen, wechseln Sie zu "Projekteinstellungen" , und wechseln Sie im Abschnitt "Pipelines " zu "Dienstverbindungen".

Screenshot, der zeigt, wie Eine Dienstverbindung für GitHub erstellt wird.

Wählen Sie GitHub als Dienstverbindungstyp aus. Wählen Sie Azure-Pipelines im Dropdownmenü "OAuth-Konfiguration " aus.

Wählen Sie "Autorisieren " aus, um sich bei GitHub anzumelden.

Geben Sie einen Dienstverbindungsnamen ein, z. B. SDAF-Verbindung mit GitHub. Achten Sie darauf, dass das Kontrollkästchen Zugriffsberechtigungen für alle Pipelines gewähren aktiviert ist. Wählen Sie Speichern aus, um die Dienstverbindung zu speichern.

Einrichten der Web-App

Das Automatisierungsframework stellt optional eine Web-App als Teil der Steuerungsebene bereit, um die SAP-Workloadzone und Systemkonfigurationsdateien zu unterstützen. Wenn Sie die Web-App verwenden möchten, müssen Sie zunächst eine App-Registrierung für Authentifizierungszwecke erstellen. Öffnen Sie Azure Cloud Shell, und führen Sie die folgenden Befehle aus.

Ersetzen Sie MGMT bei Bedarf durch Ihre Umgebung.

echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json

TF_VAR_app_registration_app_id=$(az ad app create --display-name MGMT-webapp-registration --enable-id-token-issuance true --sign-in-audience AzureADMyOrg --required-resource-access @manifest.json --query "appId" | tr -d '"')

echo $TF_VAR_app_registration_app_id

az ad app credential reset --id $TF_VAR_app_registration_app_id --append --query "password"

rm manifest.json

Speichern Sie die App-Registrierungs-ID und die Kennwortwerte für die spätere Verwendung.

Erstellen von Azure-Pipelines

Azure-Pipelines werden als YAML-Dateien implementiert. Sie werden im Ordner "deploy/pipelines " im Repository gespeichert.

Pipeline zur Bereitstellung der Steuerungsebene

Erstellen Sie die Pipeline zur Bereitstellung der Steuerungsebene. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/01-deploy-control-plane.yml
Name Bereitstellung der Steuerungsebene

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite Umbenennen/Verschieben aus, und benennen Sie die Pipeline in Bereitstellung der Steuerungsebene um.

Bereitstellungspipeline für SAP-Workloadzonen

Erstellen Sie die SAP-Workloadzonenpipeline. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/02-sap-workload-zone.yml
Name Bereitstellung von SAP-Workloadzonen

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite Umbenennen/Verschieben aus, und benennen Sie die Pipeline in Bereitstellung von SAP-Workloadzonen um.

SAP-System-Bereitstellungs-Pipeline

Erstellen Sie die SAP-Systembereitstellungspipeline. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/03-sap-system-deployment.yml
Name SAP-Systembereitstellung (Infrastruktur)

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite "Umbenennen/Verschieben " aus, und benennen Sie die Pipeline als SAP-Systembereitstellung (Infrastruktur) um.

SAP-Softwareerwerbspipeline

Erstellen Sie die SAP-Softwareakquisitionspipeline. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad deploy/pipelines/04-sap-software-download.yml
Name SAP-Softwareerwerb

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie " Umbenennen/Verschieben" im Menü mit den Auslassungspunkten rechts aus, und benennen Sie die Pipeline als SAP-Softwareerwerb um.

SAP-Konfigurations- und Softwareinstallationspipeline

Erstellen Sie die SAP-Konfigurations- und Softwareinstallationspipeline. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/05-DB-and-SAP-installation.yml
Name Konfiguration und SAP-Installation

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite "Umbenennen/Verschieben " aus, und benennen Sie die Pipeline als SAP-Konfiguration und Softwareinstallation um.

Pipeline zum Entfernen der Bereitstellung

Erstellen Sie die Pipeline zum Entfernen der Bereitstellung. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/10-remover-terraform.yml
Name Bereitstellungsentfernung

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite Umbenennen/Verschieben aus, und benennen Sie die Pipeline in Bereitstellungsentfernung um.

Entfernungspipeline der Steuerungsebene

Erstellen Sie die Entfernungspipeline der Steuerungsebene. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/12-remove-control-plane.yml
Name Entfernung der Steuerungsebene

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite Umbenennen/Verschieben aus, und benennen Sie die Pipeline in Entfernung der Steuerungsebene um.

Pipeline zur Bereitstellungsentfernung unter Verwendung von Azure Resource Manager

Erstellen Sie die Azure Resource Manager-Pipeline zum Entfernen der Bereitstellung. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/11-remover-arm-fallback.yml
Name Entfernen einer Bereitstellung mithilfe von Azure Resource Manager

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite Umbenennen/Verschieben aus, und benennen Sie die Pipeline in Bereitstellungsentfernung mit ARM-Prozessor um.

Hinweis

Verwenden Sie diese Pipeline nur als letztes Mittel. Das Entfernen nur der Ressourcengruppen hinterlässt Reste, die möglicherweise erneute Bereitstellungen erschweren.

Pipeline zur Repositoryaktualisierung

Erstellen Sie die Repository-Updater-Pipeline. Wählen Sie im Abschnitt "Pipelines " die Option "Neue Pipeline" aus. Wählen Sie Azure Repos Git als Quelle für Ihren Code aus. Konfigurieren Sie Ihre Pipeline für die Verwendung einer vorhandenen YaML-Datei in Azure Pipelines. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Konfiguration Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Filiale Standard
Pfad pipelines/20-update-ado-repository.yml
Name Repositoryaktualisierung

Speichern Sie die Pipeline. Um Speichern anzuzeigen, wählen Sie den Pfeil neben Ausführen aus. Wechseln Sie zum Abschnitt "Pipelines ", und wählen Sie die Pipeline aus. Wählen Sie im Menü mit den Auslassungspunkten auf der rechten Seite Umbenennen/Verschieben aus, und benennen Sie die Pipeline in Repositoryaktualisierung um.

Diese Pipeline sollte verwendet werden, wenn ein Update im Repository „sap-automation“ vorhanden ist, das Sie verwenden möchten.

Importieren der Bereinigungsaufgabe aus dem Visual Studio Marketplace

Die Pipelines verwenden einen benutzerdefinierten Task, um nach der Bereitstellung Bereinigungsaktivitäten durchzuführen. Sie können die benutzerdefinierte Aufgabe über die Postbuildbereinigung installieren. Installieren Sie sie in Ihrer Azure DevOps-Organisation, bevor Sie die Pipelines ausführen.

Vorbereitungen für einen selbstgehosteten Agenten

  1. Erstellen Sie einen Agentpool, indem Sie zu den Organisationseinstellungen wechseln. Wählen Sie im Abschnitt Pipelines die Option Agentpools>Pool hinzufügen aus. Wählen Sie selbst gehostet als Pooltyp aus. Benennen Sie den Pool, damit er zur Steuerungsebene passt. Verwenden Sie z. B. MGMT-WEEU-POOL. Stellen Sie sicher, dass die Berechtigung "Zugriff erteilen" für alle Pipelines ausgewählt ist, und wählen Sie " Erstellen " aus, um den Pool zu erstellen.

  2. Melden Sie sich mit dem Benutzerkonto an, das Sie in Ihrer Azure DevOps-Organisation verwenden möchten.

  3. Öffnen Sie auf Ihrer Startseite Ihre Benutzereinstellungen, und wählen Sie "Persönliche Zugriffstoken" aus.

    Diagramm, das die Erstellung eines persönlichen Zugriffstokens zeigt.

  4. Erstellen Sie ein persönliches Zugriffstoken mit den folgenden Einstellungen:

    • Agentpools: Wählen Sie "Lesen" und "Verwalten" aus.

    • Build: Wählen Sie "Lesen" und "Ausführen" aus.

    • Code: Wählen Sie "Lesen" und "Schreiben" aus.

    • Variablengruppen: Wählen Sie Lesen, Erstellen und Verwalten aus.

      Notieren Sie sich den erstellten Tokenwert.

    Diagramm, das die Attribute des persönlichen Zugriffstokens zeigt.

Variablendefinitionen

Die Bereitstellungspipelinen sind so konfiguriert, dass sie einen Satz vordefinierter Parameterwerte verwenden, die mithilfe von Variablengruppen definiert sind.

Allgemeine Variablen

Allgemeine Variablen werden von allen Bereitstellungspipelinen verwendet. Sie werden in einer Variablengruppe gespeichert, die SDAF-General genannt wird.

Erstellen Sie eine neue Variablengruppe mit dem Namen SDAF-General mithilfe der Seite Bibliothek im Abschnitt Pipelines. Fügen Sie die folgenden Variablen hinzu:

Variable Wert Hinweise
Deployment_Configuration_Path ARBEITSBEREICHE Verwenden Sie samples/WORKSPACES zum Testen der Beispielkonfiguration anstelle von WORKSPACES.
Filiale Standard
S-Benutzername <SAP Support user account name>
S-Kennwort <SAP Support user password> Ändern Sie den Variablentyp in geheim, indem Sie das Sperrsymbol auswählen.
tf_version 1.6.0 Die zu verwendende Terraform-Version. Siehe Terraform Download.

Speichern Sie die Variablen.

Alternativ können Sie die Azure DevOps CLI verwenden, um die Gruppen einzurichten.

s-user="<SAP Support user account name>"
s-password="<SAP Support user password>"

az devops login

az pipelines variable-group create --name SDAF-General --variables ANSIBLE_HOST_KEY_CHECKING=false Deployment_Configuration_Path=WORKSPACES Branch=main S-Username=$s-user S-Password=$s-password tf_version=1.3.0 --output yaml

Denken Sie daran, berechtigungen für alle Pipelines mithilfe von Pipelineberechtigungen zuzuweisen.

Umgebungsspezifische Variablen

Da jede Umgebung möglicherweise über unterschiedliche Bereitstellungsanmeldeinformationen verfügt, müssen Sie eine variable Gruppe pro Umgebung erstellen. Verwenden Sie SDAF-MGMTz. B. ,SDAF-DEV, und SDAF-QA.

Erstellen Sie eine neue Variablengruppe mit dem Namen SDAF-MGMT für die Umgebung des Kontrollplane, indem Sie die Seite Bibliothek im Abschnitt Pipelines verwenden. Fügen Sie die folgenden Variablen hinzu:

Variable Wert Hinweise
Vertreter Azure Pipelines oder der Name des Agentenpools Dieser Pool wird in einem späteren Schritt erstellt.
CP_ARM_CLIENT_ID Service principal application ID
CP_ARM_OBJECT_ID Service principal object ID
CP_ARM_CLIENT_SECRET Service principal password Ändern Sie den Variablentyp in geheim, indem Sie das Sperrsymbol auswählen.
CP_ARM_SUBSCRIPTION_ID Target subscription ID
CP_ARM_TENANT_ID Tenant ID für den Dienstprinzipal
AZURE_CONNECTION_NAME Zuvor erstellter Verbindungsname
sap_fqdn Vollqualifizierter SAP-Domänenname, z. B. sap.contoso.net Nur erforderlich, wenn privates DNS nicht verwendet wird.
FENCING_SPN_ID Service principal application ID für den Fencing-Agent Erforderlich für hochverfügbare Bereitstellungen mit einem Dienstprinzipal für den Fencing-Agent.
FENCING_SPN_PWD Service principal password für den Fencing-Agent Erforderlich für hochverfügbare Bereitstellungen mit einem Dienstprinzipal für den Fencing-Agent.
FENCING_SPN_TENANT Service principal tenant ID für den Fencing-Agent Erforderlich für hochverfügbare Bereitstellungen mit einem Dienstprinzipal für den Fencing-Agent.
TÄTSCHELN <Personal Access Token> Verwenden Sie das persönliche Token, das im vorherigen Schritt definiert ist.
TÜMPEL <Agent Pool name> Der Agentpool, der für diese Umgebung verwendet werden soll.
APP_REGISTRATION_APP_ID App registration application ID Erforderlich, wenn die Web-App bereitgestellt wird.
WEB_APP_CLIENT_SECRET App registration password Erforderlich, wenn die Web-App bereitgestellt wird.
SDAF_GENERAL_GROUP_ID Die Gruppen-ID für die SDAF-General Gruppe Die ID kann über den URL-Parameter variableGroupId abgerufen werden, wenn sie mithilfe eines Browsers auf die Variablegruppe zugreifen. Beispiel: variableGroupId=8.
WORKLOADZONE_PIPELINE_ID Die ID für die Pipeline SAP workload zone deployment Die ID kann aus dem URL-Parameter definitionId von der Pipelineseite in Azure DevOps abgerufen werden. Beispiel: definitionId=31.
SYSTEM_PIPELINE_ID Die ID für die Pipeline SAP system deployment (infrastructure) Die ID kann aus dem URL-Parameter definitionId von der Pipelineseite in Azure DevOps abgerufen werden. Beispiel: definitionId=32.

Speichern Sie die Variablen.

Denken Sie daran, berechtigungen für alle Pipelines mithilfe von Pipelineberechtigungen zuzuweisen.

Wenn Sie die Web-App verwenden, stellen Sie sicher, dass der Build-Dienst mindestens über die Berechtigung "Mitwirken" verfügt.

Sie können die Klonfunktion verwenden, um die nächste Umgebungsvariablengruppe zu erstellen. APP_REGISTRATION_APP_ID, WEB_APP_CLIENT_SECRET, SDAF_GENERAL_GROUP_ID, WORKLOADZONE_PIPELINE_ID und SYSTEM_PIPELINE_ID sind nur für die SDAF-MGMT Gruppe erforderlich.

Erstellen einer Dienstverbindung

Um die Azure-Ressourcen zu entfernen, benötigen Sie eine Azure Resource Manager-Dienstverbindung. Weitere Informationen finden Sie unter Verwalten von Dienstverbindungen.

Um die Dienstverbindung zu erstellen, wechseln Sie zu "Project-Einstellungen". Wählen Sie im Abschnitt "Pipelines " die Option "Dienstverbindungen" aus.

Screenshot, der zeigt, wie Eine Dienstverbindung erstellt wird.

Wählen Sie Azure Resource Manager als Dienstverbindungstyp und Dienstprinzipal (manuell) als Authentifizierungsmethode aus. Geben Sie das Zielabonnement ein, das in der Regel das Abonnement für die Steuerebene ist. Geben Sie die Details zum Dienstprinzipal ein. Wählen Sie "Überprüfen " aus, um die Anmeldeinformationen zu überprüfen. Weitere Informationen zum Erstellen eines Dienstprinzipal-Kontos finden Sie unter Erstellen eines Dienstprinzipal-Kontos.

Geben Sie beispielsweise einen Dienstverbindungsnamen ein.Connection to MGMT subscription Achten Sie darauf, dass das Kontrollkästchen Zugriffsberechtigungen für alle Pipelines gewähren aktiviert ist. Wählen Sie "Überprüfen" und "Speichern " aus, um die Dienstverbindung zu speichern.

Erlaubnisse

Die meisten Pipelines fügen Dateien zum Azure Repos hinzu und erfordern daher Pullberechtigungen. Wählen Sie unter "Projekteinstellungen" im Abschnitt "Repositorys " die Registerkarte "Sicherheit " des Quellcoderepositorys aus, und weisen Sie der Build ServiceDatei "Mitwirken" Berechtigungen zu.

Screenshot, der Repositoryberechtigungen zeigt.

Bereitstellen der Steuerungsebene

Neu erstellte Pipelines sind in der Standardansicht möglicherweise nicht sichtbar. Wählen Sie die Registerkarte "Zuletzt verwendet " aus, und wechseln Sie zurück zu "Alle Registerkarten ", um die neuen Pipelines anzuzeigen.

Wählen Sie die Bereitstellungspipeline der Steuerungsebene aus, und geben Sie die Konfigurationsnamen für den Deployer und die SAP-Bibliothek ein. Wählen Sie Ausführen aus, um die Steuerungsebene bereitzustellen. Stellen Sie sicher, dass Sie das Kontrollkästchen "Konfigurationswebanwendung bereitstellen " aktivieren, wenn Sie die Konfigurationsweb-App einrichten möchten.

Manuelles Konfigurieren des selbst gehosteten Azure DevOps Services-Agents

Manuelle Konfiguration ist nur erforderlich, wenn der Azure DevOps Services-Agent nicht automatisch konfiguriert ist. Überprüfen Sie, ob der Agentpool leer ist, bevor Sie fortfahren.

So stellen Sie eine Verbindung mit dem Deployer her:

  1. Melden Sie sich beim Azure-Portal an.

  2. Wechseln Sie zu der Ressourcengruppe, die den virtuellen Bereitstellungscomputer enthält.

  3. Stellen Sie mithilfe von Azure Bastion eine Verbindung mit dem virtuellen Computer her.

  4. Der Standardbenutzername ist azureadm.

  5. Wählen Sie den privaten SSH-Schlüssel aus Dem Azure Key Vault aus.

  6. Wählen Sie das Abonnement aus, das die Steuerebene enthält.

  7. Wählen Sie den Schlüsseltresor des Bereitstellers aus.

  8. Wählen Sie in der Liste der geheimen Schlüssel den geheimen Schlüssel aus, der mit -sshkey endet.

  9. Stellen Sie eine Verbindung mit dem virtuellen Computer her.

Führen Sie das folgende Skript aus, um den Deployer zu konfigurieren:

mkdir -p ~/Azure_SAP_Automated_Deployment

cd ~/Azure_SAP_Automated_Deployment

git clone https://github.com/Azure/sap-automation.git

cd sap-automation/deploy/scripts

./configure_deployer.sh

Starten Sie die Bereitstellung neu, stellen Sie die Verbindung wieder her, und führen Sie das folgende Skript aus, um den Azure DevOps-Agent einzurichten:

cd ~/Azure_SAP_Automated_Deployment/

$DEPLOYMENT_REPO_PATH/deploy/scripts/setup_ado.sh

Akzeptieren Sie die Lizenz, und geben Sie, wenn Sie zur Eingabe der Server-URL aufgefordert werden, die URL ein, die Sie beim Erstellen des Azure DevOps-Projekts erfasst haben. Wählen Sie für die Authentifizierung PAT aus, und geben Sie den Tokenwert aus dem vorherigen Schritt ein.

Wenn Sie dazu aufgefordert werden, geben Sie den Namen des Anwendungspools ein, den Sie im vorherigen Schritt erstellt haben. Übernehmen Sie den Standard-Agent-Namen und den Standardnamen des Arbeitsordners. Der Agent ist jetzt konfiguriert und startet.

Bereitstellen der Webanwendung für die Steuerungsebene

Wenn Sie den deploy the web app infrastructure Parameter auswählen, wenn Sie die Bereitstellungspipeline für die Steuerungsebene ausführen, wird die Infrastruktur bereitgestellt, die für das Hosten der Web-App erforderlich ist. Die Pipeline zum Bereitstellen der Web-App stellt die Software der Anwendung auf dieser Infrastruktur bereit.

Warten Sie, bis die Bereitstellung abgeschlossen ist. Wählen Sie die Registerkarte "Erweiterungen " aus, und folgen Sie den Anweisungen, um die Konfiguration abzuschließen. Aktualisieren Sie die reply-url Werte für die App-Registrierung.

Als Ergebnis der Ausführung der Pipeline für die Steuerungsebene wird ein Teil der benötigten Web-App-URL in einer Variablen gespeichert, die in Ihrer umgebungsspezifischen Variablengruppe benannt WEBAPP_URL_BASE ist. Sie können die URLs der registrierten Anwendungsweb-App jederzeit mithilfe des folgenden Befehls aktualisieren.

webapp_url_base=<WEBAPP_URL_BASE>
az ad app update --id $TF_VAR_app_registration_app_id --web-home-page-url https://${webapp_url_base}.azurewebsites.net --web-redirect-uris https://${webapp_url_base}.azurewebsites.net/ https://${webapp_url_base}.azurewebsites.net/.auth/login/aad/callback

Sie müssen auch Leseberechtigungen für die vom App-Dienst zugewiesene verwaltete Identität erteilen. Wechseln Sie zur App-Dienstressource. Wählen Sie auf der linken Seite "Identität" aus. Wählen Sie auf der Registerkarte "System zugewiesen " die Option "Azure-Rollenzuweisung hinzufügen>" aus. Wählen Sie "Abonnement " als Bereich und "Leser " als Rolle aus. Klicken Sie dann auf Speichern. Ohne diesen Schritt funktioniert die Dropdownfunktion der Web-App nicht.

Sie sollten nun in der Lage sein, die Web-App zu besuchen und sie für die Bereitstellung von SAP-Workloadzonen und der SAP-Systeminfrastruktur zu verwenden.

Nächster Schritt