您可以使用 Terraform 自動部署 Google Cloud 基礎架構,這項開放原始碼工具可讓您自動建立及管理 Google Cloud 資源。如要瞭解 Terraform,請參閱「Terraform 搭配 Google Cloud」。
針對特定 SAP 解決方案和支援資料庫 (例如 SAP HANA),Google Cloud 提供預先定義的 Terraform 設定檔,可用於部署符合 SAP 支援需求和最佳做法的 Google Cloud基礎架構。
支援的 SAP 解決方案
Google Cloud 為下列 SAP 解決方案提供 Terraform 設定檔:
設定檔部署的內容
Google Cloud 為 SAP 部署作業提供的所有 Terraform 設定檔,會設定或部署下列元素:
- 一或多個 Compute Engine 虛擬機器 (VM)
- 您指定的 OS 映像檔
- 一或多個 Persistent Disk 或 Hyperdisk 磁碟區
- 您指定供 VM 使用的身分與存取權管理 (IAM) 服務帳戶 (選用)
- SAP 部署作業所需的 Google Cloud API
- 選用:每個 VM 執行個體的網路標記
- 每個 VM 執行個體的外部 IP 位址 (選用)
- 最新版的 Google Cloud代理程式 for SAP
針對 SAP HANA,Terraform 設定檔也會部署:
/hana/data
、/hana/log
、/hana/shared
、/usr/sap
和/hanabackup
的儲存空間磁碟區- 視情況而定,SAP HANA 系統本身
- 針對具有主機自動容錯移轉功能的 SAP HANA 向外擴充系統,主機、最多 15 個工作站主機,以及最多 3 個待命主機
- Linux 高可用性叢集
- 選用:針對 SAP HANA 向上擴充系統,主要和次要執行個體的靜態 IP 位址
- 選用:針對 SAP HANA 向外擴充系統,主要、工作和待命節點的靜態 IP 位址
- 或者指定單一用戶群節點。
針對 SAP NetWeaver,Terraform 設定檔也會部署:
/sapmnt
、/usr/sap
和 Swap 磁碟區的儲存空間磁碟區- 選用:SLES 上的 Linux 高可用性叢集
對於高可用性 (HA) 叢集,Terraform 設定檔也會部署其他函式和功能,例如內部負載平衡器、執行個體群組和轉送規則。詳情請參閱HA 情境的部署指南。
每個 SAP 部署作業的 Terraform 設定
每個 SAP 的預先定義 Terraform 設定都包含宣告式設定檔 DEPLOYMENT_TYPE.tf
。
如要瞭解設定檔名稱或如何下載設定檔,請參閱適用於您情境的部署指南。
完成 Terraform 設定檔
為 SAP 部署作業提供的 Terraform 設定檔,必須符合 Terraform 定義的標準。
為 SAP 提供的設定檔包含主要模組定義,後面接著宣告引數的註解。以下範例是 sap_hana.tf
檔案的摘錄,用於部署不含待命節點的 SAP HANA 向外擴充系統:
#... 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 # ... }
如要使用選用引數,請移除註解字元 #
,並指定引數的值。大多數選用引數都有預設值。如果您未指定選用引數,Terraform 設定會使用該引數的預設值 (如有)。
如要進一步瞭解設定檔,請參閱 Terraform 語言說明文件。
模組版本管理
您從 Google Cloud 下載的 DEPLOYMENT_TYPE.tf
Terraform 設定檔 (適用於 SAP 部署) 包含兩個 source
引數例項:一個是有效的,另一個則是做為註解加入。您可以控制設定要使用的模組版本,方法是在所需的 source
引數中移除開頭的註解字元 #
,並將其新增至不需的引數。
根據預設,當您從Google Cloud 下載新的 Terraform 設定檔以供 SAP 部署時,有效的 source
引數會將 latest
指定為模組版本,也就是說,如果 Terraform 在您輸入 terraform init
指令時重新整理工作目錄中的檔案,您的設定就會使用 Google Cloud 為 SAP 部署提供的最新可用版本 Terraform 模組。
source
引數的第二個例項預設會由開頭的 #
字元停用,其中包含時間戳記,可識別 Google Cloud提供的模組版本。舉例來說,在以下範例中,1.3.730053050
是用於識別 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.730053050/terraform/sap_hana/sap_hana_module.zip" #... # arguments... #...}
如果您需要所有部署作業都使用相同的模組版本,請在 DEPLOYMENT_TYPE.tf
中,從包含版本時間戳記的 source
引數中移除開頭的 #
字元,並將其新增至指定 latest
為版本的 source
引數,如以下範例所示:
#... 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.730053050/terraform/sap_hana/sap_hana_module.zip" #... # arguments... #...}
指定時間戳記後,所有部署作業都會使用與指定時間戳記相對應的 Terraform 模組版本。
使用單一設定檔部署多個系統
您可以使用單一 Terraform 設定檔部署多個系統。如要執行這項操作,請為每個需要部署的額外系統,在設定檔中加入 module
區塊。
針對 SAP 部署作業,請複製Google Cloud 提供的 module
區塊定義,並依適當順序貼到設定檔中。
在每個模組區塊中,請務必為任何例項專屬引數 (例如 module
或 instance_name
) 指定不重複的值。
套用設定
您可以使用 terraform apply
指令套用 Terraform 設定。
如果您想在實際部署任何 Google Cloud 資源之前預覽設定結果,請使用 terraform plan
指令建立 Terraform 執行計畫。
如需詳細申請程序,請參閱適用情境的部署指南。
Terraform 完成套用設定後,會在 Cloud Shell 中針對所建立的每個資源顯示 COMPLETED
,並將控制權傳遞給 Shell 指令碼。系統會在已部署的 VM 上,以開機指令碼的形式叫用殼層指令碼。
殼層指令碼會進一步設定已部署的資源,並在 Cloud Logging 中記錄進度。殼層指令碼完成處理作業後,SAP 部署作業才算完成。
部署後指令碼
您可以使用部署後指令碼執行其他動作,例如觸發 SAP NetWeaver 應用程式和監控代理程式的安裝作業等等。
建議您使用部署後指令碼來自訂設定,因為這些指令碼只會在基礎架構依 SAP 支援性需求設定後才會取得控制權。 Google Cloud
如要顯示部署後指令碼的狀態訊息,您必須編寫指令碼,才能將訊息寫入記錄。詳情請參閱 Cloud Logging 說明文件。
Terraform 寫入 Cloud Shell 或本機 Google Cloud CLI 殼層工作階段的訊息中,不會包含部署後指令碼的狀態。
取得 Terraform 設定支援
如果您需要協助解決 Google Cloud 為 SAP 提供的 Terraform 設定問題,請收集必要的診斷資訊,然後與 Cloud Customer Care 團隊聯絡。
如要進一步瞭解如何取得 Terraform 問題的支援,請參閱「取得 Terraform 問題的支援」。