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_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 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
}
}
$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
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.
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.
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 isthttps://github.com/Azure/sap-automation-bootstrap.git
. - Name des Code-Repositorys:
sap-automation
. Quelle isthttps://github.com/Azure/sap-automation.git
. - Name des Beispiel- und Vorlagen-Repositorys:
sap-samples
. Quelle isthttps://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".
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
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.Melden Sie sich mit dem Benutzerkonto an, das Sie in Ihrer Azure DevOps-Organisation verwenden möchten.
Öffnen Sie auf Ihrer Startseite Ihre Benutzereinstellungen, und wählen Sie "Persönliche Zugriffstoken" aus.
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.
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 der Bibliotheksseite 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-MGMT
z. 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.
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 Service
Datei "Mitwirken" Berechtigungen zu.
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:
Melden Sie sich beim Azure-Portal an.
Navigieren Sie zu der Ressourcengruppe, die die Bereitsteller-VM enthält.
Stellen Sie mithilfe von Azure Bastion eine Verbindung zur VM her.
Der Standardbenutzername lautet azureadm.
Wählen Sie Privater SSH-Schlüssel aus Azure Key Vault aus.
Wählen Sie das Abonnement aus, das die Steuerungsebene enthält.
Wählen Sie den Schlüsseltresor des Bereitstellers aus.
Wählen Sie in der Liste der Geheimnisse das Geheimnis aus, das auf -sshkey endet.
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.