Deployment Manager を使用した Google Cloud での SAP デプロイの自動化

Google Cloud インフラストラクチャのデプロイは、Google Cloud リソースの作成と管理を自動化する Cloud Deployment Manager サービスを使用して自動化できます。

SAP HANA などの一部の SAP ソリューションやサポートされているデータベースの場合、Google Cloud では事前定義された Cloud Deployment Manager 構成テンプレートを使用できます。これらを使用して、SAP サポート要件を満たし、ベスト プラクティスを実現できる Google Cloud インフラストラクチャをデプロイできます。

サポートされている SAP ソリューション

Google Cloud では、次の SAP ソリューションに Cloud Deployment Manager の構成を使用できます。

  • SAP NetWeaver
  • SAP HANA
  • SAP ASE
  • SAP MaxDB
  • IBM Db2
    • Linux の場合:テンプレートは以下からダウンロードできます。
      https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_db2/template.yaml
      Linux 用 Db2 テンプレートの使用手順は記載されていませんが、ASE と MaxDB の Linux 用テンプレートの使用手順とよく似ています。
    • Linux 上の HA クラスタの Linux の場合
    • Windows の場合: テンプレートは以下からダウンロードできます。
      https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_db2-win/template.yaml
      Windows 用 Db2 テンプレートの使用手順は記載されていませんが、ASE と MaxDB の Windows 用テンプレートの使用手順とよく似ています。

テンプレートによるデプロイ対象

SAP デプロイ用に Google Cloud によって提供されるすべての Deployment Manager テンプレートは、次の要素を構成またはデプロイします。

  • 1 つ以上の Compute Engine 仮想マシン(VM)
  • 指定する OS イメージ
  • 1 つ以上の永続ディスク
  • 必要に応じて、VM で使用するために指定する Identity and Access Management(IAM)のサービス アカウント
  • SAP のデプロイに必要な Google Cloud APIs
  • 必要に応じて、各 VM インスタンスのネットワーク タグ
  • 必要に応じて、各 VM インスタンスのパブリック IP アドレス
  • Google Cloud の SAP 用エージェントの最新バージョン

SAP HANA の場合、Deployment Manager テンプレートは次のデプロイも行います。

  • /hana/shared/hanabackup のストレージ ボリューム
  • 必要に応じて、SAP HANA システム自体
  • ホスト自動フェイルオーバーを使用する SAP HANA スケールアウト システムの場合、マスターホスト、最大 15 個のワーカーホスト、最大 3 個のスタンバイ ホスト
  • SAP HANA スケールアップ システムの場合、Linux 高可用性クラスタ

SAP NetWeaver の場合、Deployment Manager テンプレートは次のデプロイも行います。

  • /sapmnt/usr/sap、スワップ ボリューム用のストレージ ボリューム

各 SAP デプロイ用の Deployment Manager ファイル

SAP 用に事前定義された各 Deployment Manager 構成には、次のファイルセットが含まれています。

  • YAML 構成ファイル、template.yaml
  • Python テンプレート ファイル、deployment-type.pysap_hana.pysap_hana_scaleout.py,sap_nw.py など)。
  • Python スキーマ ファイル、deployment-type.py.schemasap_hana.py.schemasap_hana_scaleout.py.schema,sap_nw.py.schema など)。
  • 少なくとも 1 つのシェル スクリプト、startup.sh、または startup.ps1

Google Cloud リソースのプロパティは template.yaml 構成ファイルに指定します。

template.yaml 構成ファイルの完成

SAP デプロイ用に提供されている template.yaml 構成ファイルは、Deployment Manager によって定義されている標準に準拠しています。

SAP 用に提供されている構成ファイルには、プライマリ リソース定義が含まれており、その後に、あまり一般的には使用されない詳細プロパティが含まれたコメント セクションが続きます。次の例は、SAP HANA 用の template.yaml ファイルからの抜粋です。

resources:
- name: sap_hana
  type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py
  #
  # By default, this configuration file uses the latest release of the deployment
  # scripts for SAP on Google Cloud.  To fix your deployments to a specific release
  # of the scripts, comment out the type property above and uncomment the type property below.
  #
  # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202103111102/dm-templates/sap_hana/sap_hana.py
  #
  properties:
    instanceName: [VM_NAME]
    instanceType: [MACHINE_TYPE]
    zone: [ZONE]
    subnetwork: [SUBNETWORK]
    linuxImage: family/[IMAGE_FAMILY]
    linuxImageProject: [IMAGE_PROJECT]
    sap_hana_deployment_bucket: [MEDIA_BUCKET]
    sap_hana_sid: [SID]
    sap_hana_instance_number: [INSTANCE_NUMBER]
    sap_hana_sidadm_password: [PASSWORD]
    sap_hana_system_password: [PASSWORD]
    sap_hana_scaleout_nodes: [NUMBER_OF_WORKER_NODES]
    #
    # --- Advanced Options ---
    # The following advanced options are not usually needed. To use an advanced option, remove
    # the comment indicator, #, before the parameter name and specify an appropriate value.
    #
    # networkTag: [TAG]
    #    Adds network tags to your instance. This is useful if you do routing or define
    #    firewall rules by tags. By default, no tags are added to your VM. Multiple tags
    #    can be assigned by separating them with commas
    #
     ...

詳細プロパティを使用するには、コメント文字 # を削除して、プロパティの値を指定します。

構成ファイルの詳細については、Deployment Manager の基礎知識をご覧ください。

テンプレートのバージョニング

YAML 構成ファイルの type プロパティでバージョン タイムスタンプを指定することで、SAP デプロイで使用する Deployment Manager テンプレートのバージョンを制御できます。

デフォルトでは、新しい template.yaml 構成ファイルをダウンロードすると、type プロパティは、latest をバージョンとして指定します。これは、デプロイでは常に、Deployment Manager テンプレートの最新のバージョンが使用されることを意味します。

type プロパティに続くコメントは、template.yaml ファイルをダウンロードした時点で利用できる最新のバージョンのタイムスタンプを含む、代替の type プロパティの仕様です。例:

resources:
- name: sap_hana
  type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py
  #
  # By default, this configuration file uses the latest release of the deployment
  # scripts for SAP on Google Cloud.  To fix your deployments to a specific release
  # of the scripts, comment out the type property above and uncomment the type property below.
  #
  # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202103111102/dm-templates/sap_hana/sap_hana.py
  #
  properties:
  ...

すべてのデプロイで同じテンプレート バージョンを使用する必要がある場合は、latest を含む type プロパティの仕様を、タイムスタンプを含む type プロパティ指定に置き換えます。例:

resources:
- name: sap_hana
  type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202103111102/dm-templates/sap_hana/sap_hana.py
  properties:
  ...

タイムスタンプを指定すると、すべてのデプロイで指定したタイムスタンプに対応する Deployment Manager テンプレートのバージョンが使用されます。

Google Cloud Console で SAP デプロイに Deployment Manager のどのテンプレート バージョンが使用されたかを確認するには、[デプロイ] ページでデプロイ名をクリックしてから、[デプロイ プロパティ] の下にある [展開された構成ビュー] をクリックします。次の例に示すように、バージョンのタイムスタンプが metadata セクションの startup-script の後に表示されます。

metadata:
  items:
  - key: startup-script
    value: curl -s https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202103111102/dm-templates/sap_hana/startup.sh
      | bash -s https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202103111102/dm-templates

1 つの構成ファイルで複数のリソースをデプロイする

複数のリソースを 1 つの構成ファイルでデプロイするには、リソース定義をファイルに追加します。

SAP デプロイの場合は、事前定義されたリソースの -nametypeproperties: セクションをコピーして、下に貼り付けて、新しいリソース定義を作成します。

各リソース定義で、次の項目に一意の値を指定してください。

  • name
  • instanceName

デプロイの実行

デプロイを開始するには、次のコマンドを実行します。

gcloud deployment-manager deployments create [DEPLOYMENT-NAME] --config [TEMPLATE-NAME].yaml

実際に Google Cloud リソースをデプロイする前にデプロイ結果をプレビューするには、--preview フラグをコマンドに追加します。

デプロイを開始すると、Deployment Manager は、deployment-type.py.schema ファイルに含まれている定義と比較して、template.yaml ファイルの指定を検証します。検証に成功すると、Deployment Manager は template.yaml ファイルと deployment-type.py ファイルのリソース定義を使用して Google Cloud リソースを作成します。

Deployment Manager の処理が完了すると、Cloud Shell で、Deployment Manager は作成するリソースごとに COMPLETED を表示し、シェル スクリプトに制御を渡します。

シェル スクリプトは、デプロイされたリソースをさらに構成し、その進行状況を Cloud Logging に記録します。SAP デプロイは、シェル スクリプトの処理が終わるまで完了しません。

Deployment Manager は Google Cloud コンソールの [デプロイ] ページでもエントリを作成します。ここで、デプロイの詳細情報を確認できます。

テンプレートの高度なカスタマイズ

上級ユーザーであれば、YAML 構成ファイルに VM 定義やそのほかの軽微な変更を加えるだけではなく、他の方法で Google Cloud によって提供されている Deployment Manager テンプレートをカスタマイズできますが、これを行うにはリスクが伴います。

テンプレートを変更する場合、そのテンプレートが最新のものであり、Deployment Manager がそれを処理できることを確認する作業を含め、変更されたテンプレートに対する責任を負うことになります。また、変更されたテンプレートによってデプロイされる Google Cloud インフラストラクチャと SAP システムが、SAP と Google Cloud のサポート要件(SAP の要件を含む)を満たすことを確認する責務も負います。

また、Deployment Manager テンプレートを変更すると、Google Cloud でデプロイをサポートすることが難しくなります。Cloud カスタマーケアの SAP スペシャリストは、変更されていないテンプレートと、それらによってデプロイされた構成には精通していますが、独自のカスタマイズには精通していません。カスタマイズされたテンプレートを使用するデプロイまたは構成で Google Cloud のサポートが必要な場合は、カスタマイズについて説明できるように準備し、サポートケースが解決されるまで通常よりも長時間待つ心構えをしておいてください。

SAP 用に Google Cloud が提供している Deployment Manager テンプレートを変更する前に、変更に関するアドバイス、システムのパフォーマンスに対する変更による影響の評価、後で生じる可能性のある問題のトラブルシューティングを行える適切なスキルを持つ技術チームを確保してください。このようなチームがない場合、実装パートナーまたは Google Cloud プロフェッショナル サービスのスペシャリストから支援を受けることができます。

変更するには、次のことを理解する必要があります。

  • SAP プロダクトに適用される SAP ドキュメントと SAP ノートに定義されている SAP サポート要件。
  • Deployment Manager、およびデプロイ、構成、テンプレートの処理方法。Deployment Manager のドキュメントをご覧ください。
  • 変更の種類に応じて、Python またはシェル スクリプト言語を使用します。

高度なカスタマイズの種類

高度なカスタマイズと見なされる変更は次のとおりです。

  • デプロイ後のスクリプトでのカスタム処理またはアクション。これは、高度なカスタマイズをデプロイに含めるために推奨される方法です。
  • サポートされているバージョンの Red Hat Enterprise Linux for SAP または SUSE Linux Enterprise Server for SAP 以外のオペレーティング システム タイプの使用。
  • テンプレートの一部として提供されているバックエンド スクリプトに対する変更。
    • シェル スクリプト(bash または powershell)。
    • Python 動的構成ファイルとスキーマ ファイル。
  • 高可用性デプロイの場合:
    • Pacemaker 構成設定のカスタマイズ。特定の関数が見つからない場合は、ドキュメント ページでフィードバックをお送りください。
    • スタンバイ ノードを使用した HANA スケールアウト デプロイ用のデフォルト テンプレートへの変更。

変更の種類に関係なく、システムに該当する SAP プロダクト ドキュメントと SAP ノートによって定義されているサポート範囲内の SAP システムで変更を行ってください。

カスタマイズ可能なテンプレート ファイル

Google Cloud では、カスタマイズを .yaml 構成ファイルに限定することが推奨されますが、結果として得られる SAP システムが SAP サポート要件を満たしていれば、その他の Deployment Manager ファイルも変更できます。

変更が必要なファイルは、変更の種類によって異なります。

環境に固有のプロパティ値に対する検証チェックをさらに追加するには、プロパティ定義を deployment-type.py.schema ファイルに追加します。

deployment-type.py ファイルで、次のような変更を加えることができます。

  • IP 範囲やディスクサイズなど、構成ファイルの値に対してさらに計算を追加する。特に SAP HANA の場合、ディスクサイズを変更すると、SAP サポートの要件を満たさない構成になる可能性があります。
  • VM インスタンスのメタデータを追加する。
  • ディスク名を調整する。

テンプレート ファイルのダウンロード

ファイルをダウンロードするには、赤い斜体のテキストを必要なテンプレートの値に置き換えてから、次のコマンドを使用します。

wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/template-directory/file-name.py
wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/template-directory/file-name.py.schema
wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/template-directory/startup.sh
wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/template-directory/template.yaml

たとえば、SAP HANA スケールアップ デプロイ用のテンプレート ファイルをダウンロードする必要がある場合は、次のコマンドを使用します。

wget https://storage.cloud.google.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py
wget https://storage.cloud.google.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/sap_hana.py.schema
wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/startup.sh
wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_hana/template.yaml

変更されたテンプレート ファイルの使用

テンプレート ファイルの変更が完了したら、ファイルを Cloud Storage バケットまたはウェブサーバーにアップロードし、template.yaml やその他のファイルで URL をファイルの場所に更新します。

デプロイ後のスクリプト

デプロイ後のスクリプトを使用して、SAP NetWeaver アプリケーションやモニタリング エージェントなどのインストールのトリガーなど、追加のアクションを実行できます。

デプロイ後のスクリプトは、Google Cloud インフラストラクチャが SAP のサポート要件に従って構成された後にのみ制御されるため、デプロイをカスタマイズする場合は、この方法を使用することをおすすめします。

デプロイ後のスクリプトのステータス メッセージを表示するには、ログにメッセージが書き込まれるようにスクリプトをコーディングする必要があります。詳細については、Cloud Logging のドキュメントをご覧ください。

デプロイ後のスクリプトのステータスは、Deployment Manager が Cloud Shell またはローカルの Google Cloud CLI シェル セッションに書き込むメッセージには含まれません。

SAP 用 Deployment Manager テンプレートのサポートの利用

SAP 用 Deployment Manager テンプレートの問題を解決するには、必要な診断情報を収集し、Cloud カスタマーケアまでお問い合わせください。必要な診断情報の一覧については、SAP 用 Deployment Manager テンプレートの診断情報をご覧ください。