Google Cloud에서 Terraform을 사용하여 SAP 배포 자동화

Google Cloud 리소스의 생성 및 관리를 자동화할 수 있는 오픈소스 도구인 Terraform을 사용하여 Google Cloud 인프라 배포를 자동화할 수 있습니다. Terraform에 대한 자세한 내용은 Google Cloud와의 Terraform을 참조하세요.

SAP HANA와 같은 일부 SAP 솔루션 및 지원 데이터베이스를 위해 Google Cloud는 사전 정의된 Terraform 구성 파일을 제공하며, 사용자는 이 파일을 사용하여 SAP 지원 요구사항 및 권장사항을 충족하는 Google Cloud 인프라를 배포할 수 있습니다.

지원되는 SAP 솔루션

Google Cloud는 다음 SAP 솔루션을 위한 Terraform 구성 파일을 제공합니다.

구성 파일 배포 항목

Google Cloud가 SAP 배포를 위해 제공하는 모든 Terraform 구성 파일은 다음 요소를 구성하거나 배포합니다.

  • 하나 이상의 Compute Engine 가상 머신(VM)
  • 사용자가 지정한 OS 이미지
  • 하나 이상의 영구 디스크 또는 하이퍼디스크
  • (선택사항) VM에서 사용하도록 지정하는 Identity and Access Management(IAM) 서비스 계정
  • SAP 배포에 필요한 Google Cloud API
  • (선택사항) 각 VM 인스턴스를 위한 네트워크 태그
  • (선택사항) 각 VM 인스턴스에 대한 공개 IP 주소
  • SAP용 Google Cloud 에이전트 최신 버전

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, 스왑 볼륨을 위한 스토리지 볼륨
  • (선택사항) SLES의 Linux 고가용성 클러스터

고가용성(HA) 클러스터의 경우 Terraform 구성 파일은 내부 부하 분산기, 인스턴스 그룹, 전달 규칙과 같은 추가 함수 및 기능도 배포합니다. 자세한 내용은 HA 시나리오 배포 가이드를 참조하세요.

각 SAP 배포를 위한 Terraform 구성

SAP용으로 사전 정의된 각 Terraform 구성에는 선언적 구성 파일 DEPLOYMENT_TYPE.tf가 있습니다.

구성 파일 이름 또는 다운로드 방법에 대한 상세 설명은 시나리오 배포 가이드를 참조하세요.

Terraform 구성 파일 완료

SAP 배포용으로 제공되는 Terraform 구성 파일은 Terraform에서 정의된 표준을 따릅니다.

SAP용으로 제공되는 구성 파일에는 기본 모듈 정의와 인수 선언 주석이 포함되어 있습니다. 다음 예시는 대기 노드 없이 SAP HANA 수평 확장 시스템을 배포하기 위한 sap_hana.tf 파일에서 가져온 일부입니다.

#...
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 언어 문서를 참조하세요.

모듈 버전 관리

SAP용 Google Cloud 배포에서 다운로드하는 DEPLOYMENT_TYPE.tf Terraform 구성 파일에는 source 인수의 두 인스턴스가 포함됩니다. 인스턴스 하나는 활성 인스턴스이고, 다른 하나는 주석으로 포함됩니다. 필요로 하는 source 인수에서 선행 주석 문자인 #을 삭제하고 필요하지 않은 인수에 추가하여 구성에서 사용하는 모듈의 버전을 제어할 수 있습니다.

기본적으로 SAP 배포용 Google Cloud에서 새 Terraform 구성 파일을 다운로드할 때 활성 source 인수는 latest을 모듈 버전으로 지정합니다. 즉, terraform init 명령어를 입력할 때 Terraform이 작업 디렉터리의 파일을 새로고침하면 구성은 Google Cloud에서 SAP 배포를 위해 제공하는 Terraform 모듈의 이용 가능한 최신 버전을 사용합니다.

기본적으로 앞에 오는 # 문자에 의해 비활성화되는 source 인수의 두 번째 인스턴스에는 Google Cloud에서 제공하는 모듈 버전을 식별하는 타임스탬프가 포함됩니다. 예를 들어 다음 샘플에서 202309280828은 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...
  #...

모든 배포에서 동일한 모듈 버전을 사용해야 하는 경우 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/202309280828/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

타임스탬프가 지정되면 모든 배포는 지정된 타임스탬프에 해당하는 Terraform 모듈 버전을 사용합니다.

단일 구성 파일로 여러 리소스 배포

배포해야 하는 각 추가 시스템의 구성 파일에 module 블록을 추가하여 단일 구성 파일로 여러 시스템을 배포할 수 있습니다.

SAP 배포의 경우 module 블록을 복사하고 아래에 붙여넣어 새 SAP 시스템을 만듭니다.

각 모듈 블록에서 module 또는 instance_name과 같은 모든 인스턴스별 인수에 고유한 값을 지정해야 합니다.

구성 적용

terraform apply 명령어를 사용하여 Terraform 구성을 적용합니다.

Google Cloud 리소스를 실제로 배포하기 전에 구성 결과를 미리보려면 terraform plan 명령어를 사용하여 Terraform 실행 계획을 만드세요.

자세한 적용 절차는 시나리오 배포 가이드를 참조하세요.

Terraform에서 구성 적용을 완료하면 Cloud Shell에서 Terraform은 만들고 제어를 셸 스크립트로 전달하는 각 리소스에 대해 COMPLETED를 표시합니다. 셸 스크립트는 배포된 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 문제에 대한 지원 받기를 참조하세요.