Freigeben über


Problembehandlung beim SAP Deployment Automation Framework

Im SAP Deployment Automation Framework (SDAF) erkennen wir, dass es viele bewegliche Teile gibt. Dieser Artikel soll Ihnen bei der Behandlung von Problemen helfen, die auftreten können.

Bereitstellung der Steuerungsebene

Die Bereitstellung der Steuerungsebene besteht aus den folgenden Schritten:

  1. Stellen Sie die Bereitstellungsinfrastruktur bereit.
  2. Fügen Sie dem Deployer-Schlüsseltresor die Dienstprinzipaldetails hinzu.
  3. Bereitstellen der SAP-Bibliotheksinfrastruktur
  4. Migrieren Sie den Terraform-Zustand für den Deployer in die SAP-Bibliothek.
  5. Migrieren Sie den Terraform-Zustand für die SAP-Bibliothek zur SAP-Bibliothek.

Um den Fortschritt der Bereitstellung nachzuverfolgen, wird der Status in einer Datei im .sap_deployment_automation Ordner im WORKSPACES-Verzeichnis beibehalten.

Schritt Was bereitgestellt wird Speicherort der Zustandsdatei
0 Bereitstellungsinfrastruktur (virtueller Computer, Schlüsseltresor, Firewall, Bastion) Lokal
1 Im Schlüsseltresor des Deployers gespeicherte Dienstprinzipaldetails Lokal
2 SAP-Bibliotheksinfrastruktur (Speicherkonten, privates DNS) Lokal
3 Bereitstellungsstatus terraform migriert zum Remotespeicher SAP-Bibliothek
4 SAP Library terraform state migrated to remote storage SAP-Bibliothek

Einsatz

In diesem Abschnitt wird beschrieben, wie Sie Probleme beheben können, die beim Ausführen von Bereitstellungen mithilfe des SAP Deployment Automation Framework auftreten können.

Zugriff auf keyvault nicht möglich: XXXXX-Fehler

Wenn beim Ausführen der Bereitstellung ein Fehler wie der folgende Fehler angezeigt wird:

Unable to access keyvault: XXXXYYYYDEP00userBEB                             
Please ensure the key vault exists.

Dieser Fehler gibt an, dass der angegebene Schlüsseltresor nicht vorhanden ist oder dass die Bereitstellungsumgebung nicht darauf zugreifen kann.

Je nach Bereitstellungsphase können Sie dieses Problem wie folgt beheben:

Sie können entweder die IP der Umgebung hinzufügen, aus der Sie die Bereitstellung ausführen (empfohlen), oder Sie können den öffentlichen Zugriff auf den Schlüsseltresor zulassen. Weitere Informationen zum Steuern des Zugriffs auf den Schlüsseltresor finden Sie unter Zulassen des öffentlichen Zugriffs auf einen Schlüsseltresor.

Die folgenden Variablen werden verwendet, um den Schlüsseltresorzugriff zu konfigurieren:

Agent_IP                      = "10.0.0.5"
public_network_access_enabled = true

Fehler beim Abrufen vorhandener Arbeitsbereiche

Wenn beim Ausführen der Bereitstellung ein Fehler wie der folgende Fehler angezeigt wird:

Error: : Error retrieving keys for Storage Account "mgmtweeutfstate###": azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to
https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MGMT-WEEU-SAP_LIBRARY/providers/Microsoft.Storage/storageAccounts/mgmtweeutfstate###/listKeys?api-version=2021-01-01
: StatusCode=400 -- Original Error: adal: Refresh request failed. Status Code = '400'. Response body: {"error":"invalid_request","error_description":"Identity not found"} Endpoint
http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy&resource=https%3A%2F%2Fmanagement.azure.com%2F

Dieser Fehler gibt an, dass die für die Bereitstellung verwendeten Anmeldeinformationen keinen Zugriff auf das Speicherkonto haben. Um dieses Problem zu beheben, weisen Sie die Rolle "Speicherkontomitwirkender" den Bereitstellungsanmeldeinformationen für das Terraform-Zustandsspeicherkonto, die Ressourcengruppe oder das Abonnement (falls möglich) zu.

Sie können überprüfen, ob die Bereitstellung mithilfe eines Dienstprinzipals oder einer verwalteten Identität ausgeführt wird, indem Sie die Ausgabe der Bereitstellung überprüfen. Wenn die Bereitstellung einen Dienstprinzipal verwendet, enthält die Ausgabe den folgenden Abschnitt:

	[set_executing_user_environment_variables]: Identifying the executing user and client
		[set_azure_cloud_environment]: Identifying the executing cloud environment
		[set_azure_cloud_environment]: Azure cloud environment: public
		[set_executing_user_environment_variables]: User type: servicePrincipal
		[set_executing_user_environment_variables]: client id: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
	[set_executing_user_environment_variables]: Identified login type as 'service principal'
	[set_executing_user_environment_variables]: Initializing state with SPN named: <SPN Name>
	[set_executing_user_environment_variables]: exporting environment variables
	[set_executing_user_environment_variables]: ARM environment variables:
		ARM_CLIENT_ID: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
		ARM_SUBSCRIPTION_ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
		ARM_USE_MSI: false

Suchen Sie in der Ausgabe nach der folgenden Zeile: "ARM_USE_MSI: false"

Wenn die Bereitstellung eine verwaltete Identität verwendet, enthält die Ausgabe den folgenden Abschnitt:


	[set_executing_user_environment_variables]: Identifying the executing user and client
		[set_azure_cloud_environment]: Identifying the executing cloud environment
		[set_azure_cloud_environment]: Azure cloud environment: public
		[set_executing_user_environment_variables]: User type: servicePrincipal
		[set_executing_user_environment_variables]: client id: systemAssignedIdentity
	[set_executing_user_environment_variables]: logged in using 'servicePrincipal'
	[set_executing_user_environment_variables]: unset ARM_CLIENT_SECRET
	[set_executing_user_environment_variables]: ARM environment variables:
		ARM_CLIENT_ID: zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
		ARM_SUBSCRIPTION_ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
		ARM_USE_MSI: true

Suchen Sie in der Ausgabe nach der folgenden Zeile: "ARM_USE_MSI: true"

Sie können die Rolle "Mitwirkender des Speicherkontos" den Bereitstellungsanmeldeinformationen für das Terraform-Zustandsspeicherkonto, die Ressourcengruppe oder das Abonnement (sofern möglich) zuweisen. Verwenden Sie die ARM_CLIENT_ID aus der Bereitstellungsausgabe.

export appId="<ARM_CLIENT_ID>"

az role assignment create --assignee ${appId} \
   --role "Storage Account Contributor" \
   --scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MGMT-WEEU-SAP_LIBRARY/providers/Microsoft.Storage/storageAccounts/mgmtweeutfstate###

Möglicherweise müssen Sie die Leserolle auch den Bereitstellungsanmeldeinformationen für das Abonnement zuweisen, das die Ressourcengruppe mit der Terraform-Zustandsdatei enthält. Dazu können Sie den folgenden Befehl verwenden:

export appId="<ARM_CLIENT_ID>"

az role assignment create --assignee ${appId} \
   --role "Reader" \
   --scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Der Name der privaten DNS-Zone 'xxx' wurde nicht gefunden.

Wenn beim Ausführen der Bereitstellung ein Fehler wie der folgende Fehler angezeigt wird:

Private DNS Zone Name: "privatelink.file.core.windows.net" was not found

or

Private DNS Zone Name: "privatelink.blob.core.windows.net" was not found

or

Private DNS Zone Name: "privatelink.vaultcore.azure.net" was not found

Dieser Fehler gibt an, dass die im Fehler aufgelistete private DNS-Zone nicht verfügbar ist. Sie können dieses Problem beheben, indem Sie entweder das private DNS erstellen oder die Konfiguration für eine vorhandene private DNS-Zone bereitstellen. Weitere Informationen zum Erstellen der privaten DNS-Zone finden Sie unter Erstellen einer privaten DNS-Zone.

Sie können die Details für eine vorhandene private DNS-Zone angeben, indem Sie die folgenden Variablen verwenden:

# Resource group name for resource group that contains the private DNS zone
management_dns_resourcegroup_name="<resource group name for the Private DNS Zone>"

# Subscription ID name for resource group that contains the private DNS zone
management_dns_subscription_id="<subscription id for resource group name for the Private DNS Zone>"

use_custom_dns_a_registration=false

Führen Sie die Bereitstellung erneut aus, nachdem Sie diese Änderungen vorgenommen haben.

OverconstrainedAllocationRequest-Fehler

Wenn beim Ausführen der Bereitstellung ein Fehler wie der folgende Fehler angezeigt wird:

Virtual Machine Name: "devsap01app01": Code="OverconstrainedAllocationRequest" Message="Allocation failed. VM(s) with the following constraints cannot be allocated, because the condition is too restrictive. Please remove some constraints and try again. Constraints applied are:
- Networking Constraints (such as Accelerated Networking or IPv6)
- VM Size

Dieser Fehler gibt an, dass die ausgewählte VM-Größe nicht mithilfe der bereitgestellten Einschränkungen verfügbar ist. Um dieses Problem zu beheben, wählen Sie eine andere VM-Größe oder eine andere Verfügbarkeitszone aus.

Der Client 'xx-xxxx-xxxx-xxxx-xxxxxxxx' mit Objekt-ID-Fehler

Wenn beim Ausführen der Bereitstellung ein Fehler ähnlich der folgenden Meldung angezeigt wird:


The client 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' with object id 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy' does not have
authorization or an ABAC condition not fulfilled to perform action 'Microsoft.Authorization/roleAssignments/write' over scope '/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/DEV-WEEU-SAP01-X00/providers/Microsoft.Storage/storageAccounts/....

Der Fehler gibt an, dass die Bereitstellungsanmeldeinformationen in der Ressourcengruppe nicht über die Rolle "Benutzerzugriffsadministrator" verfügen. Um dieses Problem zu beheben, weisen Sie die Rolle "Benutzerzugriffsadministrator" den Bereitstellungsanmeldeinformationen für die Ressourcengruppe oder das Abonnement (falls möglich) zu.

Konfiguration

In diesem Abschnitt wird beschrieben, wie Sie Probleme beheben können, die beim Ausführen der Konfiguration mithilfe des SAP Deployment Automation Framework auftreten können.

Vorgang "ansible.builtin.XXX" hat zusätzliche Params"

Wenn beim Ausführen der Bereitstellung ein Fehler ähnlich der folgenden Meldung angezeigt wird:

ERROR! this task 'ansible.builtin.command' has extra params, which is only allowed in the following modules: set_fact, shell, include_tasks, win_shell, import_tasks, import_role, include, win_command, command, include_role, meta, add_host, script, group_by, raw, include_vars

Dieser Fehler gibt an, dass die version von Ansible, die auf dem Agent installiert ist, diese Aufgabe nicht unterstützt. Um dieses Problem zu beheben, führen Sie ein Upgrade auf die neueste Version von Ansible auf dem virtuellen Agentcomputer durch.

Softwaredownload

In diesem Abschnitt wird beschrieben, wie Sie Probleme behandeln, die beim Herunterladen der SAP-Software mithilfe des SAP Deployment Automation Framework auftreten können.

"HTTP-Fehler 404: Nicht gefunden"

Dieser Fehler gibt an, dass die Softwareversion nicht mehr zum Download verfügbar ist. Öffnen Sie ein GitHub-Problem neues Problem, um eine Aktualisierung der Datei "Bill of Materials" anzufordern, oder aktualisieren Sie die Datei "Bill of Materials" selbst, und senden Sie eine Pull-Anforderung.

Azure DevOps

In diesem Abschnitt wird beschrieben, wie Sie Probleme beheben können, die beim Verwenden von Azure DevOps mit dem SAP Deployment Automation Framework auftreten können.

Probleme mit den Azure-Pipelines

Wenn beim Ausführen der Azure-Pipelines ein Fehler wie die folgende Meldung angezeigt wird:

##[error]Variable group SDAF-MGMT could not be found.
##[error]Bash exited with code '2'.

Dieser Fehler gibt an, dass das konfigurierte persönliche Zugriffstoken nicht über Berechtigungen für den Zugriff auf die Variablengruppe verfügt. Stellen Sie sicher, dass das persönliche Zugriffstoken über die Berechtigung "Lesen und Verwalten " für die Variablengruppe verfügt und dass es weiterhin gültig ist. Das persönliche Zugriffstoken wird in den Azure DevOps-Pipelinevariablengruppen entweder als "PAT" in der Variablengruppe der Steuerungsebene oder als "WZ_PAT" in der Variablengruppe für die Workloadzone konfiguriert.

Nächster Schritt