Automazione dei deployment SAP su Google Cloud con Terraform

Puoi automatizzare il deployment dell'infrastruttura Google Cloud utilizzando Terraform, uno strumento open source che ti consente di automatizzare la creazione e la gestione delle risorse Google Cloud. Per informazioni su Terraform, consulta Terraform con Google Cloud.

Per alcune soluzioni SAP e database di supporto come SAP HANA, Google Cloud fornisce file di configurazione Terraform predefiniti che puoi utilizzare per eseguire il deployment dell'infrastruttura di Google Cloud che soddisfa i requisiti di supportobilità e le best practice di SAP.

Soluzioni SAP supportate

Google Cloud fornisce file di configurazione Terraform per le seguenti soluzioni SAP:

Che cosa vengono distribuiti i file di configurazione

Tutti i file di configurazione Terraform forniti da Google Cloud per i deployment SAP configurano o implementano i seguenti elementi:

  • Una o più macchine virtuali (VM) Compute Engine
  • Un'immagine del sistema operativo da te specificata
  • Uno o più dischi permanenti o Hyperdisk
  • Facoltativamente, un account di servizio Identity and Access Management (IAM) specificato per l'utilizzo da parte delle VM
  • Le API Google Cloud richieste dal deployment SAP
  • Facoltativamente, tag di rete per ogni istanza VM
  • Facoltativamente, un indirizzo IP pubblico per ogni istanza VM
  • L'ultima versione di Google Cloud's Agent for SAP

Per SAP HANA, viene eseguito anche il deployment dei file di configurazione Terraform:

  • Volumi di archiviazione per /hana/data, /hana/log, /hana/shared, /usr/sap e /hanabackup
  • Facoltativamente, lo stesso sistema SAP HANA
  • Per i sistemi a scalabilità orizzontale di SAP HANA con failover automatico dell'host, host master, fino a 15 host worker e fino a 3 host in standby
  • Un cluster Linux ad alta disponibilità
  • Facoltativamente, per i sistemi di scale up SAP HANA, indirizzi IP statici per le istanze primarie e secondarie
  • Facoltativamente, per i sistemi con scale out SAP HANA, indirizzi IP statici per nodi master, worker e standby

Per SAP NetWeaver, viene eseguito anche il deployment dei file di configurazione Terraform:

  • Volumi di archiviazione per /sapmnt, /usr/sap e un volume di swap
  • Facoltativamente, un cluster Linux ad alta disponibilità su SLES

Per i cluster ad alta disponibilità, i file di configurazione Terraform eseguono anche il deployment di funzioni e funzionalità aggiuntive come il bilanciatore del carico interno, le regole del gruppo di istanze e di forwarding. Per ulteriori informazioni, consulta la guida al deployment per lo scenario ad alta disponibilità.

Configurazioni Terraform per ogni deployment SAP

Ogni configurazione Terraform predefinita per SAP contiene un file di configurazione dichiarativo DEPLOYMENT_TYPE.tf.

Per informazioni sui nomi dei file di configurazione o su come scaricarli, consulta la guida al deployment per il tuo scenario.

Completare il file di configurazione Terraform

I file di configurazione Terraform forniti per i deployment SAP sono conformi agli standard definiti da Terraform.

I file di configurazione forniti per SAP includono la definizione del modulo principale, seguita da commenti che dichiarano gli argomenti. L'esempio seguente è un estratto del file sap_hana.tf per il deployment di un sistema con scale out SAP HANA senza nodi in standby:

#...
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
  # ...
}

Per utilizzare gli argomenti facoltativi, rimuovi il carattere del commento, # e specifica un valore per l'argomento. La maggior parte degli argomenti facoltativi ha un valore predefinito. Se non specifichi un argomento facoltativo, la configurazione di Terraform utilizza il valore predefinito di quell'argomento, se presente.

Per ulteriori informazioni sui file di configurazione, consulta la documentazione di Terraform Language.

Controllo delle versioni del modulo

I file di configurazione Terraform DEPLOYMENT_TYPE.tf scaricati dai deployment Google Cloud per SAP contengono due istanze dell'argomento source: una è attiva e l'altra inclusa come commento. Puoi controllare la versione del modulo utilizzata dalla tua configurazione rimuovendo il carattere di commento iniziale, #, dall'argomento source che ti serve e aggiungendolo all'argomento che non ti serve.

Per impostazione predefinita, quando scarichi un nuovo file di configurazione Terraform da Google Cloud per i deployment SAP, l'argomento source attivo specifica latest come versione del modulo. Ciò significa che, se Terraform aggiorna i file nella directory di lavoro quando inserisci il comando terraform init, la configurazione utilizza l'ultima versione disponibile del modulo Terraform fornita da Google Cloud per i deployment SAP.

La seconda istanza dell'argomento source, che per impostazione predefinita è disattivata da un carattere # iniziale, include il timestamp che identifica la versione del modulo fornita da Google Cloud. Ad esempio, nell'esempio seguente, 202309280828 è il timestamp che identifica la versione del modulo Terraform.

#...
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/202309280828/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

Se tutti i tuoi deployment devono utilizzare la stessa versione del modulo, in DEPLOYMENT_TYPE.tf rimuovi il carattere # principale dall'argomento source che include il timestamp della versione e aggiungilo all'argomento source che specifica latest come versione, come mostrato nell'esempio seguente:

#...
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/202309280828/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

Quando viene specificato un timestamp, tutti i deployment utilizzano la versione del modulo Terraform corrispondente al timestamp specificato.

Deployment di più sistemi con un solo file di configurazione

Puoi eseguire il deployment di più sistemi con un solo file di configurazione aggiungendo blocchi module al file di configurazione per ogni sistema aggiuntivo di cui devi eseguire il deployment.

Per i deployment SAP, copia il blocco module e incollalo di seguito per creare il nuovo sistema SAP.

In ogni blocco di modulo, assicurati di specificare valori univoci per ogni argomento specifico dell'istanza, ad esempio module o instance_name.

Applicazione delle configurazioni

Puoi applicare una configurazione Terraform utilizzando il comando terraform apply.

Se vuoi visualizzare l'anteprima dei risultati della configurazione prima di eseguire il deployment di qualsiasi risorsa Google Cloud, crea il piano di esecuzione Terraform utilizzando il comando terraform plan.

Per le procedure dettagliate dell'applicazione, consulta la guida al deployment per il tuo scenario.

Quando Terraform completa l'applicazione della configurazione, in Cloud Shell visualizza COMPLETED per ciascuna delle risorse create e passa il controllo allo script shell. Lo script shell viene richiamato come script di avvio sulle VM di cui è stato eseguito il deployment.

Lo script shell configura ulteriormente le risorse di cui è stato eseguito il deployment e ne registra l'avanzamento in Cloud Logging. Un deployment SAP non è completo finché gli script shell non completano l'elaborazione.

Script post-deployment

Puoi utilizzare uno script post-deployment per eseguire azioni aggiuntive, come attivare l'installazione dell'applicazione SAP NetWeaver, monitorare gli agenti e così via.

Gli script post-deployment sono il modo consigliato per personalizzare la configurazione perché ricevono il controllo solo dopo che l'infrastruttura di Google Cloud è stata configurata in base ai requisiti di supportabilità SAP.

Per visualizzare i messaggi di stato per gli script post-deployment, devi codificare gli script per scrivere i messaggi nei log. Per ulteriori informazioni, consulta la documentazione di Cloud Logging.

Lo stato degli script post-deployment non è incluso nei messaggi che Terraform scrive in Cloud Shell o in una sessione shell locale di Google Cloud CLI.

Ottenere assistenza per le configurazioni Terraform

Se hai bisogno di aiuto per risolvere un problema con le configurazioni Terraform fornite da Google Cloud per SAP, raccogli le informazioni di diagnostica richieste e contatta l'assistenza clienti Google Cloud.

Per ulteriori informazioni su come richiedere assistenza per i problemi relativi a Terraform, consulta Ricevere assistenza per problemi relativi a Terraform.