Bereitstellen des SAP Deployment Automation Frameworks im großen Maßstab für Unternehmen

In diesem Artikel erfahren Sie, wie Sie Bereitstellungen mithilfe von SAP Deployment Automation Framework durchführen. In diesem Beispiel wird Azure Cloud Shell verwendet, um die Infrastruktur der Steuerebene bereitzustellen. Der vm (deployer virtual machine) erstellt die verbleibende Infrastruktur und SAP HANA Konfigurationen.

Es gibt drei Hauptschritte einer SAP-Bereitstellung auf Azure mit dem Automatisierungsframework:

  1. Bereiten Sie die Region vor. Sie stellen Komponenten bereit, um das SAP-Automatisierungsframework in einer angegebenen Azure Region zu unterstützen. In diesem Schritt führen Sie Folgendes aus:

    1. Erstellen Sie die Bereitstellungsumgebung.
    2. Erstellen Sie einen freigegebenen Speicher für Terraform-Zustandsdateien.
    3. Erstellen Sie gemeinsam genutzten Speicher für SAP-Installationsmedien.
  2. Bereiten Sie die Arbeitslastzone vor. Sie stellen die Komponenten der Workloadzone bereit, z. B. das virtuelle Netzwerk und die Key Vaults.

  3. Stellen Sie das System bereit. Sie stellen die Infrastruktur für das SAP-System bereit.

Es gibt mehrere Workflows im Bereitstellungsautomatisierungsprozess. Dieser Artikel konzentriert sich auf einen Workflow für eine einfache Bereitstellung. Sie können diesen Workflow, die eigenständige SAP S4 HANA-Umgebung, mithilfe von Bash bereitstellen. In den folgenden Abschnitten werden die allgemeine Hierarchie und die verschiedenen Phasen der Bereitstellung beschrieben.

Voraussetzungen

  • Ein Azure-Abonnement. Falls Sie nicht über ein Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
  • Azure CLI Version 2.5.0 oder höher.
  • Terraform Version 1.5 oder höher.
  • Git zum Klonen von Automatisierungsframework-Repositorys.
  • Ein SSH-Client oder Azure Bastion zum Herstellen einer Verbindung mit der Bereitstellungs-VM.
  • Ein Azure Konto mit Berechtigungen zum Erstellen von Dienstprinzipalen und Zuweisen von Rollen (Mitwirkender und Benutzerzugriffsadministrator) für das Zielabonnement.
  • Ausreichendes Azure Abonnement-Kernkontingent für DdSV4- und EdsV4-Familien-SKUs in der ausgewählten Region. Etwa 50 Kerne, die für jede VM-Familie verfügbar sind, sollten ausreichen.
  • Ein gültiges SAP-Benutzerkonto (SAP-User oder S-Benutzerkonto) mit Softwaredownloadberechtigungen zum Herunterladen der SAP-Software.
  • Das Repository SAP Deployment Automation Framework auf GitHub.
  • (Optional) .NET SDK, wenn Sie die Konfigurationswebanwendung bereitstellen möchten.

Übersicht über die Umgebung

DAS SAP Deployment Automation Framework verfügt über zwei Hauptkomponenten:

  • Bereitstellungsinfrastruktur (Kontrollfläche)
  • SAP-Infrastruktur (SAP-Workload)

Das folgende Diagramm zeigt die Abhängigkeit zwischen der Steuerebene und der Anwendungsebene.

Diagramm, das den Infrastrukturentwurf zeigt.

Das Framework verwendet Terraform für die Infrastrukturbereitstellung und ansible für das Betriebssystem und die Anwendungskonfiguration. Das folgende Diagramm zeigt die logische Trennung der Steuerebene und der Arbeitsauslastungszone.

Diagramm, das die SAP Deployment Automation Framework-Umgebung zeigt.

Verwaltungszone

Die Verwaltungszone enthält die Steuerungsebeneninfrastruktur, aus der andere Umgebungen bereitgestellt werden. Nachdem die Verwaltungszone bereitgestellt wurde, müssen Sie, wenn überhaupt, nur selten erneut bereitstellen.

Diagramm, das die Steuerebene zeigt.

Der Deployer ist das Ausführungsmodul des SAP-Automatisierungsframeworks. Diese vorkonfigurierte VM wird zum Ausführen von Terraform- und Ansible-Befehlen verwendet.

Die SAP-Bibliothek bietet den persistenten Speicher für die Terraform-Zustandsdateien und die heruntergeladenen SAP-Installationsmedien für die Steuerungsebene.

Sie konfigurieren den Deployer und die Bibliothek in einer Terraform-Variablendatei .tfvars . Weitere Informationen finden Sie unter Konfigurieren der Steuerebene.

Arbeitslastzone

Eine SAP-Anwendung verfügt in der Regel über mehrere Bereitstellungsebenen. Beispielsweise können Sie über Entwicklungs-, Qualitätssicherungs- und Produktionsstufen verfügen. Das SAP Deployment Automation Framework bezeichnet diese Ebenen als Arbeitsauslastungszonen.

Diagramm, das die Workloadzone zeigt.

Die SAP-Workload-Zone enthält die Netzwerk- und freigegebenen Komponenten für die SAP-VMs. Zu diesen Komponenten gehören Routentabellen, Netzwerksicherheitsgruppen und virtuelle Netzwerke. Die Landschaft bietet die Möglichkeit, Bereitstellungen in verschiedene Umgebungen aufzuteilen. Weitere Informationen finden Sie unter Konfigurieren der Workloadzone.

Die Systembereitstellung besteht aus den virtuellen Computern zum Ausführen der SAP-Anwendung, einschließlich Web-, App- und Datenbankebenen. Weitere Informationen finden Sie unter Konfigurieren des SAP-Systems.

Einrichten von Cloud Shell

  1. Wechseln Sie zu Azure Cloud Shell.

  2. Melden Sie sich bei Ihrem Azure Konto an.

    az login
    

    Authentifizieren Sie Ihre Anmeldung. Schließen Sie das Fenster erst, wenn Sie dazu aufgefordert werden.

  3. Überprüfen Sie Ihr aktives Abonnement, und notieren Sie Ihre Abonnement-ID:

    az account list --query "[?isDefault].{Name: name, CloudName: cloudName, SubscriptionId: id, State: state, IsDefault: isDefault}" --output=table
    

    Oder

    az account list --output=table | grep True
    
  4. Ändern Sie bei Bedarf Ihr aktives Abonnement.

    az account set --subscription <Subscription ID>
    

    Überprüfen Sie, ob Ihr aktives Abonnement geändert wurde.

    az account list --query "[?isDefault].{Name: name, CloudName: cloudName, SubscriptionId: id, State: state, IsDefault: isDefault}" --output=table
    
  5. Entfernen Sie optional alle Bereitstellungsartefakte. Verwenden Sie diesen Befehl, wenn Sie alle Reste früherer Bereitstellungsartefakte entfernen möchten.

    cd ~
    rm -rf Azure_SAP_Automated_Deployment .sap_deployment_automation .terraform.d
    
  6. Erstellen Sie den Bereitstellungsordner, und klonen Sie das Repository.

    mkdir -p ${HOME}/Azure_SAP_Automated_Deployment; cd $_
    git clone https://github.com/Azure/sap-automation-bootstrap.git config
    git clone https://github.com/Azure/sap-automation.git sap-automation
    git clone https://github.com/Azure/sap-automation-samples.git samples
    cp -Rp samples/Terraform/WORKSPACES ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    
  7. Überprüfen Sie optional die Versionen von Terraform und die Azure CLI, die auf Ihrer Instanz von Cloud Shell verfügbar sind.

    ./sap-automation/deploy/scripts/helpers/check_workstation.sh
    

    Aktualisieren Sie zum Ausführen des Automatisierungsframeworks auf die folgenden Versionen:

Erstellen eines Diensthauptkontos

Das SAP-Automatisierungsbereitstellungsframework verwendet Dienstprinzipale für die Bereitstellung. Erstellen Sie einen Dienstprinzipal für die Steuerungsebene-Bereitstellung. Um Dienstprinzipale zu erstellen, vergewissern Sie sich, dass Sie ein Konto mit den erforderlichen Berechtigungen verwenden.

Wenn Sie einen Namen für Ihren Dienstprinzipal auswählen, stellen Sie sicher, dass der Name innerhalb Ihres Azure-Mandanten eindeutig ist.

  1. Erteilen Sie den Dienstprinzipalmitwirkenden und den Administratorberechtigungen für den Benutzerzugriff.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az ad sp create-for-rbac --role="Contributor"           \
      --scopes="/subscriptions/${ARM_SUBSCRIPTION_ID}"      \
      --name="${control_plane_env_code}-Deployment-Account"
    

    Überprüfen Sie die Ausgabe. Beispiel:

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. Notieren Sie die Ausgabedetails. Speichern Sie die Werte für appId, password, und Tenant.

    Die Ausgabe wird den folgenden Parametern zugeordnet. Sie verwenden diese Parameter in späteren Schritten mit Automatisierungsbefehlen.

    Parameter-Eingabename Ausgabename
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. Weisen Sie optional dem Dienstprinzipal die Rolle Benutzerzugriffsadministrator zu.

    export appId="<appId>"
    
    az role assignment create --assignee ${appId}   \
      --role "User Access Administrator"            \
      --scope /subscriptions/${ARM_SUBSCRIPTION_ID}
    

Von Bedeutung

Wenn Sie der Dienstprinzipal nicht die Rolle "Benutzerzugriffsadministrator" zuweisen, können Sie berechtigungen nicht mithilfe der Automatisierung zuweisen.

Konfigurieren Sie die Anmeldeinformationen der Webanwendung der Steuerungsebene

Als Teil der Steuerungsebene des SAP Automation Frameworks können Sie optional eine interaktive Webanwendung erstellen, die Sie bei der Erstellung der erforderlichen Konfigurationsdateien unterstützt.

Screenshot der Web-App-Startseite.

Erstellen einer App-Registrierung

Wenn Sie die Web-App verwenden möchten, müssen Sie zunächst eine App-Registrierung für Authentifizierungszwecke erstellen. Öffnen Sie Cloud Shell, und führen Sie die folgenden Befehle aus:

Ersetzen Sie LAB nach Bedarf durch Ihre Umgebung.

export            env_code="LAB"

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

export TF_VAR_app_registration_app_id=$(az ad app create \
    --display-name ${env_code}-webapp-registration       \
    --enable-id-token-issuance true                      \
    --sign-in-audience AzureADMyOrg                      \
    --required-resource-access @manifest.json            \
    --query "appId" --output tsv )

#remove the placeholder manifest.json
rm manifest.json

export TF_VAR_webapp_client_secret=$(az ad app credential reset \
    --id $TF_VAR_app_registration_app_id --append               \
    --query "password" --output tsv )

export TF_use_webapp=true

echo "App registration ID:  ${TF_VAR_app_registration_app_id}"
echo "App registration password:  ${TF_VAR_webapp_client_secret}"

Hinweis

Stellen Sie sicher, dass Sie mit einem Benutzerkonto angemeldet sind, das über die erforderlichen Berechtigungen zum Erstellen von Anwendungsregistrierungen verfügt. Weitere Informationen zu App-Registrierungen finden Sie unter Erstellen einer App-Registrierung.

Notieren Sie die Ausgabedetails. Stellen Sie sicher, dass Sie die Werte für App registration ID und App registration password speichern.

Die Ausgabe wird den folgenden Parametern zugeordnet. Sie verwenden diese Parameter in späteren Schritten mit Automatisierungsbefehlen.

Parameter-Eingabename Ausgabename
app_registration_app_id App registration ID
webapp_client_secret App registration password

Konfigurationsdateien ansehen

  1. Öffnen Sie Visual Studio Code aus Cloud Shell.

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    code .
    
  2. Erweitern Sie das WORKSPACES Verzeichnis. Es gibt sechs Unterordner: CONFIGURATION, DEPLOYER, LANDSCAPE, LIBRARY, SYSTEM und BOMS. Erweitern Sie jeden dieser Ordner, um nach regionalen Bereitstellungskonfigurationsdateien zu suchen.

  3. Suchen Sie die Terraform-Variablendateien im entsprechenden Unterordner. Die Terraform-Variablendatei könnte z. B. wie in diesem Beispiel DEPLOYER aussehen:

    # The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
    environment = "LAB"
    # The location/region value is a mandatory field, it is used to control where the resources are deployed
    location = "swedencentral"
    
    # management_network_address_space is the address space for management virtual network
    management_network_address_space = "10.10.20.0/25"
    # management_subnet_address_prefix is the address prefix for the management subnet
    management_subnet_address_prefix = "10.10.20.64/28"
    
    # management_firewall_subnet_address_prefix is the address prefix for the firewall subnet
    management_firewall_subnet_address_prefix = "10.10.20.0/26"
    firewall_deployment = true
    
    # management_bastion_subnet_address_prefix is the address prefix for the bastion subnet
    management_bastion_subnet_address_prefix = "10.10.20.128/26"
    bastion_deployment = true
    
    # deployer_enable_public_ip controls if the deployer Virtual machines will have Public IPs
    deployer_enable_public_ip = true
    
    # deployer_count defines how many deployer VMs will be deployed
    deployer_count = 1
    
    # use_service_endpoint defines that the management subnets have service endpoints enabled
    use_service_endpoint = true
    
    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = false
    
    # enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
    enable_firewall_for_keyvaults_and_storage = false
    
    # public_network_access_enabled controls if storage account and key vaults have public network access enabled
    public_network_access_enabled = true
    
    

    Beachten Sie die Speicherorte der Terraform-Variablendateien für zukünftige Bearbeitungen während der Bereitstellung.

  4. Suchen Sie die Terraform-Variablendateien für die SAP-Bibliothek im entsprechenden Unterordner. Die Terraform-Variablendatei könnte z. B. wie in diesem Beispiel LIBRARY aussehen:

    # The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
    environment = "LAB"
    # The location/region value is a mandatory field, it is used to control where the resources are deployed
    location = "swedencentral"
    
    #Defines the DNS suffix for the resources
    dns_label = "lab.sdaf.contoso.net"
    
    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = false
    

    Beachten Sie die Speicherorte der Terraform-Variablendateien für zukünftige Bearbeitungen während der Bereitstellung.

    Von Bedeutung

    Stellen Sie sicher, dass die dns_label Ihrer Instanz von Azure Privates DNS entspricht.

Bereitstellen der Steuerungsebene

Verwenden Sie das skript deploy_controlplane.sh , um den Deployer und die Bibliothek bereitzustellen. Diese Bereitstellungselemente bilden die Steuerungsebene für einen ausgewählten Automatisierungsbereich.

Die Bereitstellung durchläuft Zyklen der Bereitstellung der Infrastruktur, das Aktualisieren des Zustands und das Hochladen der Terraform-Zustandsdateien in das Bibliotheksspeicherkonto. Alle diese Schritte werden in ein einzelnes Bereitstellungsskript verpackt. Das Skript benötigt den Speicherort der Konfigurationsdatei für die Bereitstellung und Bibliothek sowie einige andere Parameter.

Wählen Sie beispielsweise "Westeuropa" als Bereitstellungsort mit dem vierstelligen Namen SECEaus, wie zuvor beschrieben. Die Konfigurationsdatei LAB-SECE-DEP05-INFRASTRUCTURE.tfvars für den Beispiel-Deployment befindet sich im Ordner ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/LAB-SECE-DEP05-INFRASTRUCTURE.

Die SAP Library-Beispielkonfigurationsdatei LAB-SECE-SAP_LIBRARY.tfvars befindet sich im ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/LAB-SECE-SAP_LIBRARY Ordner.

  1. Legen Sie die Umgebungsvariablen für den Dienstprinzipal fest:

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appId>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenantId>"
    

    Wenn Sie das Skript von einer Arbeitsstation ausführen, die nicht Teil des Bereitstellungsnetzwerks oder von Cloud Shell ist, können Sie den folgenden Befehl verwenden, um die Umgebungsvariable zum Zulassen der Konnektivität von Ihrer IP-Adresse festzulegen:

    export TF_VAR_Agent_IP=<your-public-ip-address>
    

    Wenn Sie die Konfigurationswebanwendung bereitstellen, müssen Sie auch die folgenden Umgebungsvariablen festlegen:

    export TF_VAR_app_registration_app_id=<appRegistrationId>
    export    TF_VAR_webapp_client_secret=<appRegistrationPassword>
    export                  TF_use_webapp=true
    
  2. Erstellen Sie den Deployer und die SAP-Bibliothek, und fügen Sie mithilfe dieses Skripts die Dienstprinzipaldetails zum Bereitstellungsschlüsseltresor hinzu:

    export            env_code="LAB"
    export           vnet_code="DEP05"
    export         region_code="SECE"
    
    export     DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    cd $CONFIG_REPO_PATH
    
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
        --deployer_parameter_file "${deployer_parameter_file}"         \
        --library_parameter_file "${library_parameter_file}"           \
        --subscription "${ARM_SUBSCRIPTION_ID}"                        \
        --spn_id "${ARM_CLIENT_ID}"                                    \
        --spn_secret "${ARM_CLIENT_SECRET}"                            \
        --tenant_id "${ARM_TENANT_ID}"
    

    Wenn Authentifizierungsprobleme auftreten, führen Sie az logout aus, um sich abzumelden und token-cache zu leeren. Führen Sie dann den Befehl az login aus, um die Authentifizierung erneut zu authentifizieren.

    Warten Sie, bis das Automatisierungsframework die Terraform-Vorgänge plan und apply ausführt.

    Die Bereitstellung des Deployers kann etwa 15 bis 20 Minuten dauern.

    Sie müssen einige Werte für anstehende Schritte notieren. Suchen Sie in der Ausgabe nach diesem Textblock:

    #########################################################################################
    #                                                                                       #
    #  Please save these values:                                                            #
    #     - Key Vault: LABSECEDEP05user39B                                                  #
    #     - Deployer IP: x.x.x.x                                                            #
    #     - Storage Account: labsecetfstate53e                                              #
    #     - Web Application Name: lab-sece-sapdeployment39B                                 #
    #     - App registration Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx                       #
    #                                                                                       #
    #########################################################################################
    
  3. Wechseln Sie zum portal Azure.

    Klicken Sie auf Ressourcengruppen. Suchen Sie nach neuen Ressourcengruppen für die Bereitstellungsinfrastruktur und -bibliothek. Beispielsweise können Sie sehen LAB-[region]-DEP05-INFRASTRUCTURE und LAB-[region]-SAP_LIBRARY.

    Die Inhalte der Ressourcengruppe "deployer" und "SAP Library" werden hier gezeigt.

    Screenshot der Bereitstellungsressourcen.

    Screenshot, der Bibliotheksressourcen zeigt.

    Die Terraform-Zustandsdatei wird nun in das Speicherkonto eingefügt, dessen Name enthält tfstate. Das Speicherkonto weist einen Container tfstate mit den Bereitstellungs- und Bibliotheksstatusdateien auf. Der Inhalt des tfstate Container wird nach einer erfolgreichen Bereitstellung des Control Plane hier angezeigt.

    Screenshot der Zustandsdateien für die Steuerebene von Terraform.

Häufige Probleme und Lösungen

Hier sind einige Tipps zur Problembehandlung:

  • Wenn beim Erstellen des Deployer-Moduls die folgende Fehlermeldung angezeigt wird, stellen Sie sicher, dass Sie sich beim Ausführen des Skripts im WORKSPACES Verzeichnis befinden:

    Incorrect parameter file.
    The file must contain the environment attribute!!
    
  • Der folgende Fehler ist vorübergehend. Führen Sie denselben Befehl erneut aus, deploy_controlplane.sh.

    Error: file provisioner error
    ..
    timeout - last error: dial tcp
    
  • Wenn nach dem Ausführen des Skripts deploy_controlplane.shAuthentifizierungsprobleme auftreten, führen Sie den folgenden Befehl aus:

    az logout
    
    az login
    

Herstellen einer Verbindung mit dem virtuellen Bereitstellungscomputer

Nachdem die Steuerebene bereitgestellt wurde, wird der Terraform-Zustand mithilfe des Remote-Backend azurerm gespeichert. Alle Geheimnisse zum Verbinden mit der Bereitstellungs-VM sind in einem Key Vault in der Ressourcengruppe des Deployers verfügbar.

So stellen Sie eine Verbindung mit Ihrer Bereitstellungs-VM her:

  1. Melden Sie sich beim portal Azure an.

  2. Wählen oder suchen Sie nach Schlüssel-Tresoren.

  3. Suchen Sie auf der Seite "Key Vault " den Bereitstellungsschlüsseltresor. Der Name beginnt mit LAB[REGION]DEP05user. Filtern Sie bei Bedarf nach Ressourcengruppe oder Standort.

  4. Wählen Sie im Abschnitt "Einstellungen" im linken Bereich " Geheime Schlüssel" aus.

  5. Suchen Sie den geheimen Schlüssel, der sshkey enthält, und wählen Sie es aus. Es könnte wie LAB-[REGION]-DEP05-sshkey folgt aussehen.

  6. Wählen Sie auf der Seite des geheimen Schlüssels die aktuelle Version aus. Kopieren Sie dann den geheimen Wert.

  7. Öffnen Sie einen Nur-Text-Editor. Kopieren Sie den geheimen Wert.

  8. Speichern Sie die Datei, in der Sie SSH-Schlüssel beibehalten. Verwenden Sie z. B. C:\\Users\\<your-username>\\.ssh.

  9. Speichern Sie die Datei. Wenn Sie aufgefordert werden, "Speichern unter" auszuwählen, wählen Sie "Alle Dateien" aus, wenn SSH keine Option ist. Verwenden Sie z. B. deployer.ssh.

  10. Stellen Sie eine Verbindung mit der Bereitstellungs-VM über einen beliebigen SSH-Client her, z. B. Visual Studio Code. Verwenden Sie die zuvor erwähnte öffentliche IP-Adresse und den heruntergeladenen SSH-Schlüssel. Anweisungen zum Herstellen einer Verbindung mit dem Deployer mithilfe von Visual Studio Code finden Sie unter Verbinden mit dem Deployer mithilfe von Visual Studio Code. Wenn Sie PuTTY verwenden, konvertieren Sie zuerst die SSH-Schlüsseldatei mithilfe von PuTTYGen.

Hinweis

Der Standardbenutzername ist azureadm.

Stellen Sie sicher, dass die Zum Speichern des SSH-Schlüssels verwendete Datei die Datei mit dem richtigen Format speichern kann, d. h. ohne Wagenrücklaufzeichen (CR). Verwenden Sie Visual Studio Code oder einen einfachen Text-Editor.

Nachdem Sie mit der Bereitstellungs-VM verbunden sind, können Sie die SAP-Software mithilfe der Stückliste (Bill of Materials, BOM) herunterladen.

Stellen Sie eine Verbindung mit der Bereitstellungs-VM her, wenn Sie keine öffentliche IP verwenden

Für Bereitstellungen ohne öffentliche IP-Konnektivität ist die direkte Konnektivität über das Internet nicht zulässig. In diesen Fällen können Sie ein Azure Bastion Sprungfeld verwenden oder den nächsten Schritt von einem Computer ausführen, auf dem eine Verbindung mit dem Azure virtuellen Netzwerk besteht.

Im folgenden Beispiel wird Azure Bastion verwendet.

So stellen Sie eine Verbindung mit dem Deployer her:

  1. Melden Sie sich beim portal Azure 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 SSH Private Key aus 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 der VM her.

Der Rest der Aufgaben muss auf dem Deployer ausgeführt werden.

Steuerungsebene sichern

Die Steuerungsebene ist der wichtigste Teil des SAP-Automatisierungsframeworks. Es ist wichtig, die Steuerebene zu sichern. Die folgenden Schritte helfen Ihnen, die Steuerungsebene zu sichern.

Sie sollten die Steuerebenendatei tfvars aktualisieren, damit Sie private Endpunkte aktivieren und den öffentlichen Zugriff auf die Speicherkonten und Schlüsselvaults blockieren können.

  1. Um die Konfigurationsdateien für die Steuerungsebene in den virtuellen Bereitstellungscomputer zu kopieren, können Sie das sync_deployer.sh Skript verwenden. Melden Sie sich bei der Bereitstellungs-VM an, und aktualisieren Sie den folgenden Befehl, um Ihren Terraform-Statusspeicherkontonamen zu verwenden. Führen Sie dann das folgende Skript aus:

    terraform_state_storage_account=labsecetfstate###
    
    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    
    ../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname $terraform_state_storage_account --state_subscription $ARM_SUBSCRIPTION_ID
    

    Mit diesem Befehl werden die tfvars Konfigurationsdateien aus dem Speicherkonto der SAP-Bibliothek in den virtuellen Bereitstellungscomputer kopiert.

  2. Ändern Sie die Konfigurationsdateien für die Steuerungsebene in:

    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = true
    
    # enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
    enable_firewall_for_keyvaults_and_storage = true
    
    # public_network_access_enabled controls if storage account and key vaults have public network access enabled
    public_network_access_enabled = false
    
    # if you want to use the webapp
    use_webapp = true
    
  3. Führen Sie die Bereitstellung erneut aus, um die Änderungen anzuwenden. Aktualisieren Sie den Namen des Speicherkontos und den Schlüsseltresornamen im Skript.

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appId>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenantId>"
    
  4. Erstellen Sie den Deployer und die SAP-Bibliothek.

    export            env_code="LAB"
    export           vnet_code="DEP05"
    export         region_code="SECE"
    
    terraform_state_storage_account=labsecetfstate###
                         vault_name="LABSECEDEP05user###"
    
    export     DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    cd $CONFIG_REPO_PATH
    
    deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"
    
    az logout
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
        --deployer_parameter_file "${deployer_parameter_file}"         \
        --library_parameter_file "${library_parameter_file}"           \
        --subscription "${ARM_SUBSCRIPTION_ID}"                        \
        --storageaccountname "${terraform_state_storage_account}"      \
        --vault "${vault_name}"
    

Bereitstellen der Webanwendung

Sie können die Webanwendung mithilfe des folgenden Skripts bereitstellen:

export            env_code="LAB"
export           vnet_code="DEP05"
export         region_code="SECE"
export         webapp_name="<webAppName>"
export              app_id="<appRegistrationId>"
export           webapp_id="<webAppId>"

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

cd $DEPLOYMENT_REPO_PATH
cd Webapp/SDAF

dotnet build SDAFWebApp.csproj
dotnet publish SDAFWebApp.csproj --output publish
cd publish

zip -r SDAF.zip .

az webapp deploy --resource-group ${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE --name $webapp_name --src-path SDAF.zip --type zip

az ad app update --id $app_id --web-home-page-url https://$webapp_name.azurewebsites.net --web-redirect-uris https://$webapp_name.azurewebsites.net/ https://$webapp_name.azurewebsites.net/.auth/login/aad/callback
az role assignment create --assignee $webapp_id --role reader --subscription $ARM_SUBSCRIPTION_ID --scope /subscriptions/$ARM_SUBSCRIPTION_ID
az webapp restart --resource-group ${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE --name $webapp_name

Sammeln von Workloadzoneninformationen

  1. Sammeln Sie die folgenden Informationen in einem Text-Editor. Diese Informationen wurden am Ende der Phase "Bereitstellen der Steuerungsebene" gesammelt.

    1. Der Name des Terraform-Dateispeicherkontos in der Bibliotheksressourcengruppe:

      1. Im Anschluss an das vorherige Beispiel ist die Ressourcengruppe LAB-SECE-SAP_LIBRARY.

      2. Der Name des Speicherkontos enthält labsecetfstate.

    2. Der Name des Key Vaults in der Bereitstellungsressourcengruppe:

      1. Im Anschluss an das vorherige Beispiel ist die Ressourcengruppe LAB-SECE-DEP05-INFRASTRUCTURE.

      2. Der Name des Schlüsseltresors enthält LABSECEDEP05user.

    3. Die öffentliche IP-Adresse der Bereitstellungs-VM. Wechseln Sie zur Ressourcengruppe Ihres Deployers, öffnen Sie den virtuellen Bereitstellungscomputer, und kopieren Sie die öffentliche IP-Adresse.

  2. Sie müssen die folgenden Informationen sammeln:

    1. Der Name der Bereitstellungsstatusdatei befindet sich unter der Bibliotheksressourcengruppe:

      1. Wählen Sie Bibliotheksressourcengruppe>Statusspeicherkonto>Container>tfstate aus. Kopieren Sie den Namen der Bereitstellungsstatusdatei.

      2. Im Folgenden, im vorherigen Beispiel lautet der Name des BLOB LAB-SECE-DEP05-INFRASTRUCTURE.terraform.tfstate.

  3. Registrieren Sie den Dienstprinzipal, falls erforderlich. In diesem Beispiel ist dieser Schritt nicht erforderlich.

    Wenn eine Umgebung zum ersten Mal instanziiert wird, muss ein Dienstprinzipal registriert werden. In diesem Beispiel befindet sich die Steuerebene in der LAB Umgebung und die Workloadzone befindet sich ebenfalls in LAB. Aus diesem Grund muss ein Serviceprinzipal für die LAB Umgebung registriert werden.

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appID>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenant>"
    export           key_vault="<vaultName>"
    export            env_code="LAB"
    export         region_code="SECE"
    
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/set_secrets.sh \
        --environment "${env_code}"                           \
        --region "${region_code}"                             \
        --vault "${key_vault}"                                \
        --subscription "${ARM_SUBSCRIPTION_ID}"               \
        --spn_id "${ARM_CLIENT_ID}"                           \
        --spn_secret "${ARM_CLIENT_SECRET}"                   \
        --tenant_id "${ARM_TENANT_ID}"
    

Vorbereiten der Bereitstellung der Workloadzone

Stellen Sie eine Verbindung mit Ihrer Bereitstellungs-VM her, um die folgenden Schritte auszuführen. Eine Kopie des Repositorys ist jetzt vorhanden.

Bereitstellen der Workloadzone

Verwenden Sie das Skript install_workloadzone , um die SAP-Workloadzone bereitzustellen.

  1. Wechseln Sie auf der Bereitstellungs-VM zum Azure_SAP_Automated_Deployment Ordner.

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/LAB-SECE-SAP04-INFRASTRUCTURE
    
  2. Öffnen Sie optional die Konfigurationsdatei für die Workloadzone, und ändern Sie ggf. den logischen Netzwerknamen so, dass er dem Netzwerknamen entspricht.

  3. Starten Sie die Bereitstellung der Workloadzone. Die Details, die Sie zuvor gesammelt haben, sind hier erforderlich:

    • Name der Bereitstellungsdatei tfstate (im tfstate Container gefunden)
    • Name des tfstate Speicherkontos
    • Name des Deployer-Schlüsselbunds
    export     ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export           ARM_CLIENT_ID="<appId>"
    export       ARM_CLIENT_SECRET="<password>"
    export           ARM_TENANT_ID="<tenantId>"
    
    export       deployer_env_code="LAB"
    export            sap_env_code="LAB"
    export             region_code="SECE"
    
    export      deployer_vnet_code="DEP05"
    export               vnet_code="SAP04"
    
    export tfstate_storage_account="<storageaccountName>"
    export               key_vault="<vaultName>"
    
    export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    cd "${CONFIG_REPO_PATH}/LANDSCAPE/${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE"
    
    parameterFile="${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    deployerState="${deployer_env_code}-${region_code}-${deployer_vnet_code}-INFRASTRUCTURE.terraform.tfstate"
    
    $SAP_AUTOMATION_REPO_PATH/deploy/scripts/install_workloadzone.sh  \
        --parameterfile "${parameterFile}"                            \
        --deployer_environment "${deployer_env_code}"                 \
        --deployer_tfstate_key  "${deployerState}"                    \
        --keyvault "${key_vault}"                                     \
        --storageaccountname "${tfstate_storage_account}"             \
        --subscription "${ARM_SUBSCRIPTION_ID}"                       \
        --spn_id "${ARM_CLIENT_ID}"                                   \
        --spn_secret "${ARM_CLIENT_SECRET}"                           \
        --tenant_id "${ARM_TENANT_ID}"
    

    Die Bereitstellung der Workload-Zone sollte automatisch gestartet werden.

    Warten Sie, bis die Bereitstellung abgeschlossen ist. Die neue Ressourcengruppe wird im Azure Portal angezeigt.

Vorbereiten der Bereitstellung der SAP-Systeminfrastruktur

Stellen Sie eine Verbindung mit Ihrer Bereitstellungs-VM her, um die folgenden Schritte auszuführen. Eine Kopie des Repositorys ist jetzt vorhanden.

Wechseln Sie in den WORKSPACES/SYSTEM Ordner, und kopieren Sie die Beispielkonfigurationsdateien aus dem Repository.

Bereitstellen der SAP-Systeminfrastruktur

Nachdem die Workloadzone abgeschlossen ist, können Sie die SAP-Systeminfrastrukturressourcen bereitstellen. Das SAP-System erstellt Ihre VMs und unterstützende Komponenten für Ihre SAP-Anwendung. Verwenden Sie das skript installer.sh , um das SAP-System bereitzustellen.

Das SAP-System stellt Folgendes bereit:

  • Die Datenbankebene, die Datenbank-VMs und deren Datenträger und eine Azure Load Balancer Standard Instanz bereitstellt. Sie können HANA-Datenbanken oder AnyDB-Datenbanken auf dieser Ebene ausführen.
  • Die SCS-Ebene, die eine kundendefinierte Anzahl von VMs und eine Azure Load Balancer Standard Instanz bereitstellt.
  • Die Anwendungsebene, die die virtuellen Computer und deren Datenträger bereitstellt.
  • Die Web Dispatcher-Ebene.

Bereitstellen des SAP-Systems:

export             sap_env_code="LAB"
export              region_code="SECE"
export                vnet_code="SAP04"
export                      SID="L00"

export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

cd ${CONFIG_REPO_PATH}/SYSTEM/${sap_env_code}-${region_code}-${vnet_code}-${SID}

${DEPLOYMENT_REPO_PATH}/deploy/scripts/installer.sh                             \
    --parameterfile "${sap_env_code}-${region_code}-${vnet_code}-${SID}.tfvars" \
    --type sap_system

Überprüfen Sie, ob sich die Systemressourcengruppe jetzt im Azure-Portal befindet.

Sap-Software mithilfe der Materialrechnung abrufen

Das Automatisierungsframework bietet Ihnen Tools zum Herunterladen von Software aus SAP mithilfe der SAP-BOM. Die Software wird in die SAP-Bibliothek heruntergeladen, die als Archiv für alle Medien fungiert, die für die Bereitstellung von SAP erforderlich sind.

Die SAP BOM imitiert den SAP-Wartungsplaner. Es gibt relevante Produkt-IDs und eine Reihe von Download-URLs.

Ein Beispielextrakt einer BOM-Datei sieht wie in diesem Beispiel aus:


---
name:    'S41909SPS03_v0010'
target:  'S/4 HANA 1909 SPS 03'
version: 7

product_ids:
  dbl:       NW_ABAP_DB:S4HANA1909.CORE.HDB.ABAP
  scs:       NW_ABAP_ASCS:S4HANA1909.CORE.HDB.ABAP
  scs_ha:    NW_ABAP_ASCS:S4HANA1909.CORE.HDB.ABAPHA
  pas:       NW_ABAP_CI:S4HANA1909.CORE.HDB.ABAP
  pas_ha:    NW_ABAP_CI:S4HANA1909.CORE.HDB.ABAPHA
  app:       NW_DI:S4HANA1909.CORE.HDB.PD
  app_ha:    NW_DI:S4HANA1909.CORE.HDB.ABAPHA
  web:       NW_Webdispatcher:NW750.IND.PD
  ers:       NW_ERS:S4HANA1909.CORE.HDB.ABAP
  ers_ha:    NW_ERS:S4HANA1909.CORE.HDB.ABAPHA

materials:
  dependencies:
    - name:     HANA_2_00_055_v0005ms

  media:
    # SAPCAR 7.22
    - name:         SAPCAR
      archive:      SAPCAR_1010-70006178.EXE
      checksum:     dff45f8df953ef09dc560ea2689e53d46a14788d5d184834bb56544d342d7b
      filename:     SAPCAR
      permissions:  '0755'
      url:          https://softwaredownloads.sap.com/file/0020000002208852020

    # Kernel
    - name:         "Kernel Part I ; OS: Linux on x86_64 64bit ; DB: Database independent"

Bei dieser Beispielkonfiguration lautet LAB-SECE-DEP05-INFRASTRUCTUREdie Ressourcengruppe . Der Name des Deployer-Schlüsseltresors enthält LABSECEDEP05user im Namen. Sie verwenden diese Informationen, um die Key Vault-Geheimnisse Ihres Deployers zu konfigurieren.

  1. Stellen Sie eine Verbindung mit Ihrer Bereitstellungs-VM her, um die folgenden Schritte auszuführen. Eine Kopie des Repositorys ist jetzt vorhanden.

  2. Fügen Sie einen Geheimschlüssel mit dem Benutzernamen für Ihr SAP-Benutzerkonto hinzu. Ersetzen Sie <vaultName> durch den Namen Ihres Deployer Key Vault. Ersetzen Sie <sap-username> außerdem durch Ihren SAP-Benutzernamen.

    export key_vault=<vaultName>
    export sap_username=<sap-username>
    
    az keyvault secret set --name "S-Username" --vault-name $key_vault --value "${sap_username}";
    
  3. Fügen Sie einen geheimen Schlüssel mit dem Kennwort für Ihr SAP-Benutzerkonto hinzu. Ersetzen Sie <vaultName> durch Ihren Bereitstellungsschlüsseltresornamen und <sap-password> durch Ihr SAP-Kennwort.

    Hinweis

    Die Verwendung einzelner Anführungszeichen beim Festlegen sap_user_password ist wichtig. Die Verwendung von Sonderzeichen im Kennwort kann andernfalls zu unvorhersehbaren Ergebnissen führen.

    sap_user_password='<sap-password>'
    
    az keyvault secret set --name "S-Password" --vault-name "${key_vault}" --value="${sap_user_password}";
    
  4. Konfigurieren Sie die SAP-Parameterdatei für den Downloadprozess. Laden Sie dann die SAP-Software mithilfe von Ansible Playbooks herunter. Führen Sie die folgenden Befehle aus:

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    mkdir BOMS
    cd BOMS
    
    vi sap-parameters.yaml
    
  5. Aktualisieren Sie bom_base_name auf den Namen BOM. Ersetzen Sie <Deployer KeyVault Name> durch den Namen der Azure Key Vault für die Bereitstellungsressourcengruppe.

    Ihre Datei sollte mit der folgenden Beispielkonfiguration vergleichbar sein:

    bom_base_name:                 S42022SPS00_v0001ms
    deployer_kv_name:              <vaultName>
    BOM_directory:                 ${HOME}/Azure_SAP_Automated_Deployment/samples/SAP
    
  6. Um die Software herunterzuladen, führen Sie das Ansible Playbook aus. Eine Möglichkeit zum Ausführen der Playbooks besteht darin, das Menü "Downloader " zu verwenden. Führen Sie das download_menu Skript aus.

    ${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/download_menu.sh
    
  7. Wählen Sie aus, welche Playbooks ausgeführt werden sollen.

    1) BoM Downloader
    3) Quit
    Please select playbook:
    

    Wählen Sie das Playbook 1) BoM Downloader aus, um die in der BOM-Datei beschriebene SAP-Software in das Speicherkonto herunterzuladen. Überprüfen Sie, ob der Container über alle Medien für Ihre sapbits Installation verfügt.

    Sie können das Playbook über das Konfigurationsmenü oder direkt über die Befehlszeile ausführen.

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/BOMS/
    
    export           ANSIBLE_PRIVATE_KEY_FILE=sshkey
    
    playbook_options=(
            --inventory-file="${sap_sid}_hosts.yaml"
            --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
            --extra-vars="_workspace_directory=`pwd`"
            --extra-vars="@sap-parameters.yaml"
            --extra-vars="bom_processing=true"
            "${@}"
    )
    
    # Run the playbook to retrieve the ssh key from the Azure Key Vault
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
    
    # Run the playbook to perform the Operating System configuration
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_bom_downloader.yaml
    

    Wenn Sie möchten, können Sie auch die SAP-Benutzeranmeldeinformationen als Parameter übergeben.

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/BOMS/
    
    sap_username=<sap-username>
    sap_user_password='<sap-password>'
    
    export           ANSIBLE_PRIVATE_KEY_FILE=sshkey
    
    playbook_options=(
            --inventory-file="${sap_sid}_hosts.yaml"
            --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
            --extra-vars="_workspace_directory=`pwd`"
            --extra-vars="@sap-parameters.yaml"
            --extra-vars="s_user=${sap_username}"
            --extra-vars="s_password=${sap_user_password}"
            --extra-vars="bom_processing=true"
            "${@}"
    )
    
    # Run the playbook to retrieve the ssh key from the Azure Key Vault
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
    
    # Run the playbook to perform the Operating System configuration
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_bom_downloader.yaml
    

Installieren der SAP-Anwendung

Die SAP-Anwendungsinstallation erfolgt über Ansible Playbooks.

Wechseln Sie zum Systembereitstellungsordner.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

Stellen Sie sicher, dass die folgenden Dateien in den aktuellen Ordnern vorhanden sind: sap-parameters.yaml und L00_host.yaml.

Für ein eigenständiges SAP S/4HANA-System gibt es acht Playbooks, die sequenziert ausgeführt werden können. Eine Möglichkeit zum Ausführen der Playbooks besteht darin, das Konfigurationsmenü zu verwenden.

Führen Sie das configuration_menu Skript aus.

${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/configuration_menu.sh

Diagramm, das das SAP Deployment Automation Ansible Configuration Menu zeigt.

Wählen Sie die auszuführenden Playbooks aus.

Playbook: Grundlegende Betriebssystemkonfiguration

Dieses Playbook führt das allgemeine Betriebssystemkonfigurationssetup auf allen Computern durch, die die Konfiguration von Softwarerepositorys, Paketen und Diensten umfasst.

Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                            sap_sid=L00
export           ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to perform the Operating System configuration
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_01_os_base_config.yaml

Playbook: SAP-spezifische Betriebssystemkonfiguration

Dieses Playbook führt die Konfiguration des SAP-Betriebssystems auf allen Computern durch. Die Schritte umfassen die Erstellung von Volumengruppen und Dateisystemen sowie die Konfiguration von Softwarerepositorys, Paketen und Diensten.

Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                            sap_sid=L00
export           ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to perform the SAP Specific Operating System configuration
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml

Playbook: BOM-Verarbeitung

Dieses Playbook lädt die SAP-Software auf die SCS-VM herunter.

Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml

Playbook: SCS-Installation

Dieses Playbook installiert SAP Central Services. Bei hochverfügbaren Konfigurationen installiert das Playbook auch die SAP ERS Instanz und konfiguriert Pacemaker.

Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_00_00_sap_scs_install.yaml

Playbook: Datenbankinstanzinstallation

Dieses Playbook installiert die Datenbankinstanzen.

Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04_00_00_db_install.yaml

Playbook: Datenbanklast

Dieses Playbook ruft die Datenbankladeaufgabe vom primären Anwendungsserver auf.

Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_01_sap_dbload.yaml

Playbook: Einrichten der hochverfügbarkeitsbasierten Datenbank

Dieses Playbook konfiguriert die hohe Verfügbarkeit der Datenbank. Für HANA umfasst es die HANA-Systemreplikation und Pacemaker für die HANA-Datenbank.

Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04_00_01_db_ha.yaml

Playbook: Primäre Anwendungsserverinstallation

Dieses Playbook installiert den primären Anwendungsserver. Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_02_sap_pas_install.yaml

Playbook: Anwendungsserverinstallationen

Dieses Playbook installiert die Anwendungsserver. Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_02_sap_app_install.yaml

Playbook: Web Dispatcher-Installationen

Dieses Playbook installiert die Web Dispatchers. Sie können das Playbook mithilfe des Konfigurationsmenüs oder der Befehlszeile ausführen.

Sie haben jetzt ein eigenständiges HANA-System bereitgestellt und konfiguriert. Wenn Sie eine hochverfügbare (HA) SAP HANA-Datenbank konfigurieren müssen, führen Sie das HANA-HA-Playbook aus.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_04_sap_web_install.yaml

Bereinigen von Ressourcen

Es ist wichtig, Ihre SAP-Installation nach Abschluss des Vorgangs zu bereinigen. Andernfalls entstehen weiterhin Kosten im Zusammenhang mit den Ressourcen.

Um die gesamte bereitgestellte SAP-Infrastruktur zu entfernen, müssen Sie:

  1. Entfernen Sie die SAP-Systeminfrastrukturressourcen.
  2. Entfernen Sie alle Lastzonen (die Landschaft).
  3. Entfernen Sie die Steuerebene.

Führen Sie die Entfernung Ihrer SAP-Infrastrukturressourcen und Workloadzonen aus der Bereitstellungs-VM aus. Führen Sie die Entfernung der Steuerebene aus Cloud Shell aus.

Bevor Sie beginnen, melden Sie sich bei Ihrem Azure Konto an. Überprüfen Sie dann, ob Sie sich im richtigen Abonnement befinden.

Entfernen der SAP-Infrastruktur

Wechseln Sie zum LAB-SECE-SAP01-L00 Unterordner innerhalb des Ordners SYSTEM . Führen Sie dann den folgenden Befehl aus:

export  sap_env_code="LAB"
export   region_code="SECE"
export sap_vnet_code="SAP04"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/${sap_env_code}-${region_code}-${sap_vnet_code}-L00

${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh                   \
  --parameterfile "${sap_env_code}-${region_code}-${sap_vnet_code}-L00.tfvars" \
  --type sap_system

Entfernen der SAP-Workloadzone

Wechseln Sie zum LAB-XXXX-SAP01-INFRASTRUCTURE Unterordner innerhalb des Ordners LANDSCAPE . Führen Sie dann den folgenden Befehl aus:

export  sap_env_code="LAB"
export   region_code="SECE"
export sap_vnet_code="SAP01"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE

${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh                                       \
      --parameterfile ${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE.tfvars \
      --type sap_landscape

Entfernen Sie die Steuerebene

Melden Sie sich bei Cloud Shell an.

Navigieren Sie zum Ordner WORKSPACES.

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/

Exportieren Sie die folgenden beiden Umgebungsvariablen:

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export ARM_SUBSCRIPTION_ID="<subscriptionId>"

Führen Sie den folgenden Befehl aus:

export region_code="SECE"
export    env_code="LAB"
export   vnet_code="DEP05"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
${DEPLOYMENT_REPO_PATH}/deploy/scripts/remove_controlplane.sh                                                                                                \
    --deployer_parameter_file DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars  \
    --library_parameter_file LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars

Stellen Sie sicher, dass alle Ressourcen bereinigt werden.