SAP-Bereitstellungen in Google Cloud mit Terraform automatisieren

Sie können die Bereitstellung der Google Cloud-Infrastruktur mit Terraform automatisieren, einem Open-Source-Tool, mit dem Sie die Erstellung und Verwaltung von Google Cloud-Ressourcen automatisieren können. Informationen zu Terraform finden Sie unter Terraform mit Google Cloud.

Für ausgewählte SAP-Lösungen und unterstützende Datenbanken wie SAP HANA bietet Google Cloud vordefinierte Terraform-Konfigurationsdateien, mit denen Sie eine Google Cloud-Infrastruktur bereitstellen können, die den Anforderungen und Best Practices der SAP-Unterstützung entspricht.

Unterstützte SAP-Lösungen

Google Cloud bietet Terraform-Konfigurationsdateien für die folgenden SAP-Lösungen:

Inhalt der Bereitstellung der Konfigurationsdateien

Alle Terraform-Konfigurationsdateien, die Google Cloud für SAP-Implementierungen bereitstellt, konfigurieren die folgenden Elemente oder stellen sie bereit:

  • Mindestens eine Compute Engine-VM
  • Ein von Ihnen angegebenes Betriebssystem-Image
  • Mindestens ein Persistent Disk- oder Hyperdisk-Volume
  • Optional: Ein Dienstkonto für die Identitäts- und Zugriffsverwaltung (Identity and Access Management – IAM), das Sie für die Nutzung durch die VMs angeben
  • Die Google Cloud APIs, die für die SAP-Bereitstellung erforderlich sind
  • Optional: Netzwerk-Tags für jede VM-Instanz
  • Optional: Eine externe IP-Adresse für jede VM-Instanz
  • Die neueste Version des Google Cloud-Agents für SAP

Für SAP HANA stellen die Terraform-Konfigurationsdateien auch Folgendes bereit:

  • Speicher-Volumes für /hana/data, /hana/log, /hana/shared, /usr/sap und /hanabackup
  • Optional: Das SAP HANA-System selbst
  • Für SAP HANA-Systeme mit horizontaler Skalierung und automatischem Host-Failover einen Master-Host, bis zu 15 Worker-Hosts und bis zu 3 Standby-Hosts
  • Linux-Hochverfügbarkeitscluster
  • Optional, für SAP HANA-Systeme mit vertikaler Skalierung, statische IP-Adressen für die primäre und sekundäre Instanz
  • Optional, für SAP HANA-Systeme mit horizontaler Skalierung, statische IP-Adressen für die Master-, Worker- und Standby-Knoten

Für SAP NetWeaver stellen die Terraform-Konfigurationsdateien auch Folgendes bereit:

  • Speicher-Volumes für /sapmnt und /usr/sap und ein Swap-Volume
  • Optional ein Linux-Hochverfügbarkeitscluster unter SLES

Bei Hochverfügbarkeitsclustern stellen die Terraform-Konfigurationsdateien auch zusätzliche Funktionen und Funktionen wie internen Load-Balancer, Instanzgruppen und Weiterleitungsregeln bereit. Weitere Informationen finden Sie im Bereitstellungsleitfaden für das HA-Szenario.

Terraform-Konfigurationen für jede SAP-Bereitstellung

Jede vordefinierte Terraform-Konfiguration für SAP enthält eine deklarative Konfigurationsdatei DEPLOYMENT_TYPE.tf.

Informationen zu den Namen von Konfigurationsdateien oder zum Herunterladen finden Sie in der Bereitstellungsanleitung für Ihr Szenario.

Terraform-Konfigurationsdatei fertigstellen

Die für SAP-Bereitstellungen zur Verfügung gestellten Terraform-Konfigurationsdateien entsprechen den von Terraform definierten Standards.

Die für SAP bereitgestellten Konfigurationsdateien enthalten die Definition des primären Moduls, gefolgt von Kommentaren, die Argumente deklarieren. Das folgende Beispiel ist ein Auszug aus der Datei sap_hana.tf zum Bereitstellen eines SAP HANA-Systems zur horizontalen Skalierung ohne Standby-Knoten:

#...
module "sap_hana" {
  source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
  #
  # By default, this source file uses the latest release of the terraform module
  # for SAP on Google Cloud. To fix your deployments to a specific release
  # of the module, comment out the source property above and uncomment the source property below.
  #
  # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/YYYYMMDDHHMM/terraform/sap_hana/sap_hana_module.zip"
  # ...
  project_id = "example-project-123456"
  zone = "us-central1-f"
  machine_type = "n2-highmem-32"
  subnetwork = "example-subnet-us-central1"
  linux_image = "sles-15-sp2-sap"
  linux_image_project = "suse-sap-cloud"
  # ...
  instance_name = "hana-scaleout"
  # ...
  sap_hana_deployment_bucket = "mybucketname"
  sap_hana_sid = "AB2"
  sap_hana_instance_number = 12
  sap_hana_sidadm_password = "TempPa55word"
  sap_hana_system_password = "TempPa55word"
  sap_hana_scaleout_nodes = 3
  sap_hana_sidadm_uid = 11
  vm_static_ip = "10.0.0.1"
  worker_static_ips = ["10.0.0.2", "10.0.0.3", "10.0.0.4"]
  enable_fast_restart = true
  # ...
}

Wenn Sie die optionalen Argumente verwenden möchten, entfernen Sie das Kommentarzeichen # und geben Sie einen Wert für das Argument an. Die meisten optionalen Argumente haben einen Standardwert. Wenn Sie kein optionales Argument angeben, verwendet die Terraform-Konfiguration gegebenenfalls den Standardwert dieses Arguments.

Weitere Informationen zu Konfigurationsdateien finden Sie in der Dokumentation zur Terraform-Sprache.

Modulversionsverwaltung

Die Terraform-Konfigurationsdateien DEPLOYMENT_TYPE.tf, die Sie von Google Cloud für SAP-Bereitstellungen herunterladen, enthalten zwei Instanzen des Arguments source: eine aktive Instanz und eine als Kommentar enthaltende Instanz. Sie können steuern, welche Version des Moduls Ihre Konfiguration verwendet. Entfernen Sie dazu das führende Kommentarzeichen # aus dem Argument source, das Sie benötigen, und fügen Sie es demjenigen hinzu, das Sie nicht benötigen.

Wenn Sie eine neue Terraform-Konfigurationsdatei aus Google Cloud für SAP-Bereitstellungen herunterladen, gibt das aktive Argument source standardmäßig latest als Modulversion an. Das bedeutet, wenn Terraform die Dateien in Ihrem Arbeitsverzeichnis aktualisiert, wenn Sie den Befehl terraform init eingeben, dann verwendet Ihre Konfiguration die neueste verfügbare Version des Terraform-Moduls, das Google Cloud für SAP-Bereitstellungen bereitstellt.

Die zweite Instanz des Arguments source, die standardmäßig durch ein führendes #-Zeichen deaktiviert ist, enthält den Zeitstempel, der die Version des von Google Cloud bereitgestellten Moduls identifiziert. Im folgenden Beispiel ist 1.3.674800406 der Zeitstempel, der die Version des Terraform-Moduls angibt.

#...
module "sap_hana" {
  source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
  #...
  # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/1.3.674800406/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

Wenn alle Ihre Bereitstellungen dieselbe Modulversion verwenden sollen, entfernen Sie in der Datei DEPLOYMENT_TYPE.tf das führende #-Zeichen aus dem Argument source, das den Zeitstempel der Version enthält, und fügen es dem Argument source hinzu, das latest als Version angibt, wie im folgenden Beispiel gezeigt:

#...
module "sap_hana" {
  # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
  #...
  source = "https://storage.googleapis.com/cloudsapdeploy/terraform/1.3.674800406/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...}

Wenn ein Zeitstempel angegeben ist, verwenden alle Bereitstellungen die Version des Terraform-Moduls, die dem angegebenen Zeitstempel entspricht.

Mehrere Systeme mit einer einzigen Konfigurationsdatei bereitstellen

Sie können mehrere Systeme mit einer einzigen Terraform-Konfigurationsdatei bereitstellen. Fügen Sie dazu der Konfigurationsdatei module-Blöcke für jedes zusätzliche System hinzu, das Sie bereitstellen müssen.

Für SAP-Bereitstellungen kopieren Sie die von Google Cloud bereitgestellte Blockdefinition module und fügen Sie sie in der richtigen Reihenfolge in Ihre Konfigurationsdatei ein.

Geben Sie in jedem Modulblock eindeutige Werte für instanzspezifische Argumente wie module oder instance_name an.

Konfigurationen anwenden

Sie wenden eine Terraform-Konfiguration mit dem Befehl terraform apply an.

Wenn Sie eine Vorschau der Konfigurationsergebnisse sehen möchten, bevor Sie Google Cloud-Ressourcen bereitstellen, erstellen Sie den Terraform-Ausführungsplan mit dem Befehl terraform plan.

Ausführliche Anwendungsverfahren finden Sie im Bereitstellungsleitfaden für Ihr Szenario.

Wenn Terraform Ihre Konfiguration angewendet hat, zeigt Terraform in Cloud Shell für jede erstellte Ressource COMPLETED an und übergibt die Kontrolle an das Shell-Script. Das Shell-Script wird auf den bereitgestellten VMs als StartScript aufgerufen.

Das Shell-Script konfiguriert die bereitgestellten Ressourcen weiter und protokolliert ihren Fortschritt in Cloud Logging. Eine SAP-Bereitstellung ist erst abgeschlossen, wenn die Shell-Skripts ihre Verarbeitung abgeschlossen haben.

Skripts nach der Bereitstellung

Sie können ein Script nach der Bereitstellung verwenden, um zusätzliche Aktionen auszuführen, wie z. B. die Installation Ihrer SAP NetWeaver-Anwendung auszulösen, Agenten zu beobachten und so weiter.

Skripts nach der Bereitstellung werden zur Anpassung der Konfiguration empfohlen, da sie erst nach der Konfiguration der Google Cloud-Infrastruktur gemäß den Anforderungen der SAP-Unterstützung die Kontrolle übernehmen.

Zur Anzeige von Statusmeldungen für Skripts nach der Bereitstellung müssen Sie die Skripts so codieren, dass die Nachrichten in die Logs geschrieben werden. Weitere Informationen finden Sie in der Cloud Logging-Dokumentation.

Der Status von Skripts nach der Bereitstellung ist nicht in den Nachrichten enthalten, die Terraform in Cloud Shell oder eine lokale Google Cloud CLI-Sitzung schreibt.

Unterstützung für die Terraform-Konfigurationen erhalten

Wenn Sie Hilfe bei der Behebung eines Problems mit den Terraform-Konfigurationen benötigen, die Google Cloud für SAP bereitstellt, erfassen Sie die erforderlichen Diagnoseinformationen und wenden Sie sich an den Cloud Customer Care.

Weitere Informationen zum Support von Terraform-Problemen finden Sie unter Support für Terraform-Probleme erhalten.