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

Um Azure DevOps Services zu verwenden, benötigen Sie eine Azure DevOps-Organisation. 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 Sie sich an, oder erstellen Sie ein neues Konto.

Konfigurieren von Azure DevOps Services für das SAP-Framework zur Automatisierung der Bereitstellung auf Azure

Sie können das folgende Skript verwenden, um eine grundlegende Installation von Azure DevOps Services für SAP Deployment Automation Framework durchzufü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_WORKLOAD_ZONE_CODE = "DEV"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
    
    $UniqueIdentifier = Read-Host "Please provide an identifier that makes the service principal names unique, for instance a project code"
    
    $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 = $UniqueIdentifier + " SDAF Control Plane"
    }
    
    else {
      $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
    }
    
    $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 = $UniqueIdentifier + " SDAF " + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
    }
        else {
      $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
    }
    
    $confirmation = Read-Host "Do you want to create a new Service Principal for the Workload zone y/n?"
    if ($confirmation -eq 'y') {
        $Env:SDAF_WorkloadZone_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_WORKLOAD_ZONE_CODE + " SPN"
    }
        else {
      $Env:SDAF_WorkloadZone_SPN_NAME = Read-Host "Please provide the Workload Zone 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") {
        remove-item .\New-SDAFDevopsProject.ps1
    }
    
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile .\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 zum Ausführen 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.

Wichtig

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 az upgrade Befehl 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. Dieser Prozess erstellt die Variablegruppe und die Dienstverbindung in Azure DevOps und optional den Bereitstellungsdienstprinzipal.

Ö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
        }
    }
    
    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/main/deploy/scripts/New-SDAFDevopsWorkloadZone.ps1 -OutFile .\New-SDAFDevopsWorkloadZone.ps1 ; .\New-SDAFDevopsWorkloadZone.ps1
    

Erstellen einer Beispielkonfiguration für die Steuerungsebene

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 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 that shows how to clone the repository.

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 ZIP-Datei 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 that shows that source code is changed.

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. Quelle ist https://github.com/Azure/sap-automation-bootstrap.git.
  • Name des Code-Repositorys: sap-automation. Quelle ist https://github.com/Azure/sap-automation.git.
  • Name des Beispiel- und Vorlagen-Repositorys: sap-samples. 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 zu pullen, benötigen Sie eine GitHub-Dienstverbindung. Weitere Informationen finden Sie unter Verwalten von Dienstverbindungen.

Um die Dienstverbindung zu erstellen, wechseln Sie zu Project Einstellungen, und wechseln Sie unter dem Abschnitt "Pipelines" zu "Dienstverbindungen".

Screenshot that shows how to create a service connection for GitHub.

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-Verbinden ion auf 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 Bereitstellung der SAP-Workloadzone und der 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 sie 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 zur späteren 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 Bereitstellungspipeline 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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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 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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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 BEREITSTELLUNG der SAP-Workloadzone um.

Pipeline für die SAP-Systembereitstellung

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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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.

Pipeline für den SAP-Softwareerwerb

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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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.

Pipeline für SAP-Konfiguration und Softwareinstallation

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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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 Entfernung der Bereitstellung 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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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 Entfernung der Steuerebene um.

Bereitstellungsentfernungspipeline mithilfe 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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

Einstellung Wert
Repository "Stamm-Repository" (identisch mit dem Projektnamen)
Bankfiliale Standard
Pfad pipelines/11-remover-arm-fallback.yml
Name Entfernen der Bereitstellung mit Azure Resource Manager

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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 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 Repositoryupdaterpipeline. 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 schon bestehenden Azure Pipelines-YAML-Datei. Geben Sie die Pipeline mit den folgenden Einstellungen an:

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

Speichern Sie die Pipeline. Um "Speichern" anzuzeigen, wählen Sie das Chevron neben "Ausführen" aus. Navigieren Sie zum Abschnitt Pipelinesund 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 Repositoryupdater um.

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

Importieren der sauber up-Aufgabe 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 Nachbuildbereinigung installieren. Installieren Sie sie in Ihrer Azure DevOps-Organisation, bevor Sie die Pipelines ausführen.

Vorbereitungen für einen selbst gehosteten Agent

  1. Erstellen Sie einen Agentpool, indem Sie zu "Organisations-Einstellungen" wechseln. Wählen Sie im Abschnitt "Pipelines" die Option "Agentpool>hinzufügen Pool" aus. Wählen Sie selbst gehostet als Pooltyp aus. Benennen Sie den Pool, der an der Steuerelementebenenumgebung ausgerichtet werden soll. 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.

    Diagram that shows the creation of a personal access token.

  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.

    • Variable Gruppen: Wählen Sie " Lesen", "Erstellen" und "Verwalten" aus.

      Notieren Sie sich den erstellten Tokenwert.

    Diagram that shows the attributes of the personal access token.

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 aufgerufen wird SDAF-General.

Erstellen Sie eine neue Variablengruppe, die mithilfe derBibliotheksseite im Abschnitt "Pipelines" benannt SDAF-General wird. Fügen Sie die folgenden Variablen hinzu:

Variable Wert Notizen
Deployment_Configuration_Path ARBEITSBEREICHE Verwenden Sie samples/WORKSPACES zum Testen der Beispielkonfiguration anstelle von WORKSPACES.
Bankfiliale Standard
S-Username <SAP Support user account name>
S-Password <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_varsion=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, die für die Steuerelementebenenumgebung benannt SDAF-MGMT ist, indem Sie die Bibliotheksseite im Abschnitt "Pipelines" verwenden. Fügen Sie die folgenden Variablen hinzu:

Variable Wert Hinweise
Agent Azure Pipelines oder der Name des Agentpools 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 Name der zuvor erstellten Verbindung
sap_fqdn Vollqualifizierter SAP-Name Standard 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 hoch verfügbare Bereitstellungen, die einen Dienstprinzipal für den Fencing-Agent verwenden.
FENCING_SPN_PWD Service principal password für den Fencing-Agent Erforderlich für hoch verfügbare Bereitstellungen, die einen Dienstprinzipal für den Fencing-Agent verwenden.
FENCING_SPN_TENANT Service principal tenant ID für den Fencing-Agent Erforderlich für hoch verfügbare Bereitstellungen, die einen Dienstprinzipal für den Fencing-Agent verwenden.
Persönliche Zugriffstoken <Personal Access Token> Verwenden Sie das persönliche Token, das im vorherigen Schritt definiert ist.
POOL <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 SAP workload zone deployment Pipeline 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 SAP system deployment (infrastructure) Pipeline 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 Builddienst 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 that shows how to create a service connection.

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

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.

Berechtigungen

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

Screenshot that shows repository permissions.

Bereitstellen der Steuerungsebene

Neu erstellte Pipelines werden in der Standardansicht möglicherweise nicht angezeigt. 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 Steuerebene bereitzustellen. Stellen Sie sicher, dass Sie das Kontrollkästchen "Konfigurationswebanwendung bereitstellen" aktivieren, wenn Sie die Konfigurationsweb-App einrichten möchten.

Manuelles Konfigurieren des selbstgehosteten 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 zum Bereitsteller her:

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zu der Ressourcengruppe, die die Bereitsteller-VM enthält.

  3. Stellen Sie mithilfe von Azure Bastion eine Verbindung zur VM her.

  4. Der Standardbenutzername lautet azureadm.

  5. Wählen Sie Privater SSH-Schlüssel aus Azure Key Vault aus.

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

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

  8. Wählen Sie in der Liste der Geheimnisse das Geheimnis aus, das auf -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 für den Agent und den Arbeitsordner die Standardnamen. 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 Bereitstellungsweb-App-Pipeline veröffentlicht die Software der Anwendung in dieser Infrastruktur.

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