Automatizzare i deployment SAP su Google Cloud con Terraform

Puoi automatizzare il deployment dell'infrastruttura Google Cloud utilizzando Terraform, uno strumento open source che 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 Google Cloud in modo che soddisfi le best practice e i requisiti di supportabilità di SAP.

Soluzioni SAP supportate

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

Che cosa viene eseguito nei file di configurazione

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

  • Una o più macchine virtuali (VM) Compute Engine
  • Un'immagine del sistema operativo specificata
  • Uno o più volumi Persistent Disk o Hyperdisk
  • Facoltativamente, un account di servizio Identity and Access Management (IAM) da specificare per l'utilizzo da parte delle VM
  • Le API Google Cloud richieste dal deployment SAP
  • Facoltativamente, i tag di rete per ogni istanza VM
  • Facoltativamente, un indirizzo IP esterno per ogni istanza VM
  • La versione più recente dell'agente di Google Cloud per SAP

Per SAP HANA, i file di configurazione Terraform eseguono il deployment anche di:

  • Volumi di archiviazione per /hana/data, /hana/log, /hana/shared, /usr/sap e /hanabackup
  • Se vuoi, il sistema SAP HANA stesso
  • Per i sistemi SAP HANA scalabili orizzontalmente con failover automatico dell'host, un host master, fino a 15 host worker e fino a 3 host di riserva
  • Un cluster Linux ad alta disponibilità
  • Facoltativamente, per i sistemi SAP HANA con scalabilità verticale, indirizzi IP statici per le istanze principali e secondarie
  • Facoltativamente, per i sistemi SAP HANA scalabili orizzontalmente, indirizzi IP statici per i nodi master, worker e di standby

Per SAP NetWeaver, i file di configurazione Terraform eseguono il deployment anche di:

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

Per i cluster ad alta disponibilità (HA), i file di configurazione di Terraform implementano anche funzioni e funzionalità aggiuntive come il bilanciatore del carico interno, il gruppo di istanze e le regole di inoltro. Per ulteriori informazioni, consulta la guida all'implementazione per lo scenario di HA.

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 all'implementazione per il tuo scenario.

Compilare il file di configurazione Terraform

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

I file di configurazione forniti per SAP includono la definizione del modulo principale followed by comments that declare arguments. L'esempio seguente è un estratto del file sap_hana.tf per il deployment di un sistema SAP HANA scalabile orizzontalmente senza nodi di riserva:

#...
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 di 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 dell'argomento, se esistente.

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

Controllo delle versioni dei moduli

I file di configurazione Terraform DEPLOYMENT_TYPE.tf che scarichi da Google Cloud per i deployment SAP contengono due istanze dell'argomento source: una attiva e una inclusa come commento. Puoi controllare la versione del modulo utilizzata dalla configurazionerimuovendo il carattere di commento iniziale, #, dall'argomento sourcedi cui hai bisogno e aggiungendolo a quello 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, il che significa che se Terraform aggiorna i file nella tua directory di lavoro quando inserisci il comando terraform init, la configurazione utilizza la versione più recente 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,1.3.674800406 è 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/1.3.674800406/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

Se vuoi che tutti i tuoi deployment utilizzino la stessa versione del modulo, in DEPLOYMENT_TYPE.tf rimuovi il carattere # iniziale 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/1.3.674800406/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.

Eseguire il deployment di più sistemi con un unico file di configurazione

Puoi eseguire il deployment di più sistemi utilizzando un unico file di configurazione Terraform. Per farlo, aggiungi blocchi module al file di configurazione per ogni sistema aggiuntivo di cui devi eseguire il deployment.

Per i deployment SAP, copia la definizione del blocco module fornita da Google Cloud e incollala nell'ordine appropriato nel file di configurazione.

In ogni blocco del modulo, assicurati di specificare valori univoci per eventuali argomenti specifici dell'istanza come module o instance_name.

Applicazione delle configurazioni

Applica una configurazione Terraform utilizzando il comando terraform apply.

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

Per procedure dettagliate per la richiesta, consulta la guida all'implementazione per il tuo scenario.

Quando Terraform completa l'applicazione della configurazione, in Cloud Shell viene visualizzato COMPLETED per ogni risorsa creata e viene passato 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 registra il relativo avanzamento in Cloud Logging. Un deployment SAP non è completo finché gli script shell non completano l'elaborazione.

Script di post-deployment

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

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

Per visualizzare i messaggi di stato per gli script di post-deployment, devi codificare gli script in modo che scrivano i messaggi nei log. Per saperne di più, consulta la documentazione di Cloud Logging.

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

Ricevere 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 ricevere assistenza per i problemi di Terraform, consulta Ricevere assistenza per i problemi di Terraform.