エンタープライズ 規模の SAP Deployment Automation Framework をデプロイする

この記事では、 SAP Deployment Automation Framework を使用してデプロイを実行する方法について説明します。 この例では、Azure Cloud Shellを使用してコントロール プレーン インフラストラクチャをデプロイします。 デプロイ元仮想マシン (VM) は、残りのインフラストラクチャとSAP HANA構成を作成します。

自動化フレームワークを使用したAzureでの SAP デプロイには、主に次の 3 つの手順があります。

  1. リージョンを準備します。 指定した Azure リージョンで SAP オートメーション フレームワークをサポートするコンポーネントをデプロイします。 この手順では、次の操作を行います。

    1. デプロイ環境を作成します。
    2. Terraform 状態ファイルの共有ストレージを作成します。
    3. SAP インストール メディア用の共有ストレージを作成します。
  2. ワークロード ゾーンを準備します。 仮想ネットワークやキー ボールトなどのワークロード ゾーン コンポーネントをデプロイします。

  3. システムをデプロイします。 SAP システムのインフラストラクチャをデプロイします。

デプロイ自動化プロセスには、いくつかのワークフローがあります。 この記事では、デプロイを容易にする 1 つのワークフローに焦点を当てます。 Bash を使用して、このワークフローである SAP S4 HANA スタンドアロン環境をデプロイできます。 次のセクションでは、デプロイの一般的な階層とさまざまなフェーズについて説明します。

前提条件

  • Azure サブスクリプション。 アカウントがない場合は、無料アカウントを作成してください。
  • Azure CLI バージョン 2.5.0 以降。
  • Terraform バージョン 1.5 以降。
  • 自動化フレームワーク リポジトリを複製するための Git
  • デプロイ元 VM に接続するための SSH クライアントまたは Azure Bastion
  • サービス プリンシパルを作成し、ターゲット サブスクリプションにロール (共同作成者とユーザー アクセス管理者) を割り当てるアクセス許可を持つAzure アカウント。
  • 選択したリージョンにおける Azure DdSV4 および EdsV4 ファミリ SKU のコア クォータが十分であること。 各 VM ファミリで使用できるコアは約 50 個で十分です。
  • SAP ソフトウェアをダウンロードするためのソフトウェア ダウンロード特権を持つ有効な SAP ユーザー アカウント (SAP-User または S ユーザー アカウント)。
  • GitHubの SAP Deployment Automation Framework リポジトリ
  • (省略可能) .NET SDK 構成 Web アプリケーションをデプロイする場合。

環境の概要

SAP Deployment Automation Framework には、次の 2 つの主要コンポーネントがあります。

  • デプロイ インフラストラクチャ (コントロール プレーン)
  • SAP インフラストラクチャ (SAP ワークロード)

次の図は、コントロール プレーンとアプリケーション プレーンの間の依存関係を示しています。

インフラストラクチャの設計を示す図。

フレームワークでは、インフラストラクチャのデプロイに Terraform を使用し、オペレーティング システムとアプリケーションの構成に Ansible を使用します。 次の図は、コントロール プレーンとワークロード ゾーンの論理的な分離を示しています。

SAP Deployment Automation Framework 環境を示す図。

管理ゾーン

管理ゾーンには、他の環境のデプロイ元となるコントロール プレーン インフラストラクチャが含まれています。 管理ゾーンがデプロイされた後、再デプロイが必要になることはほとんどありません。

コントロール プレーンを示す図。

配置者は、SAP オートメーション フレームワークの実行エンジンです。 この構成済み VM は、Terraform および Ansible コマンドの実行に使用されます。

SAP ライブラリには、Terraform 状態ファイル用の永続ストレージと、コントロール プレーン用にダウンロードされた SAP インストール メディアが用意されています。

デプロイツールとライブラリは、Terraform .tfvars 変数ファイルで構成します。 詳細については、「 コントロール プレーンの構成」を参照してください。

ワークロード ゾーン

通常、SAP アプリケーションには複数のデプロイ層があります。 たとえば、開発、品質保証、運用レベルがあるとします。 SAP Deployment Automation Framework では、これらのレベルのワークロード ゾーンが呼び出されます。

ワークロード ゾーンを示す図。

SAP ワークロード ゾーンには、SAP VM のネットワークコンポーネントと共有コンポーネントが含まれています。 これらのコンポーネントには、ルート テーブル、ネットワーク セキュリティ グループ、仮想ネットワークが含まれます。 このランドスケープは、デプロイを異なる環境に分割する機会を提供します。 詳細については、「 ワークロード ゾーンの構成」を参照してください。

システムデプロイは、SAP アプリケーションを実行するための VM (Web、アプリ、データベース層など) で構成されます。 詳細については、 SAP システムの構成を参照してください。

Cloud Shellを設定する

  1. Azure Cloud Shell に移動します。

  2. Azure アカウントにサインインします。

    az login
    

    サインインを認証します。 メッセージが表示されるまでウィンドウを閉じないでください。

  3. アクティブなサブスクリプションを検証し、サブスクリプション ID を記録します。

    az account list --query "[?isDefault].{Name: name, CloudName: cloudName, SubscriptionId: id, State: state, IsDefault: isDefault}" --output=table
    

    または

    az account list --output=table | grep True
    
  4. 必要に応じて、アクティブなサブスクリプションを変更します。

    az account set --subscription <Subscription ID>
    

    アクティブなサブスクリプションが変更されたことを検証します。

    az account list --query "[?isDefault].{Name: name, CloudName: cloudName, SubscriptionId: id, State: state, IsDefault: isDefault}" --output=table
    
  5. 必要に応じて、すべてのデプロイ成果物を削除します。 以前のデプロイ成果物のすべての残りの部分を削除する場合は、このコマンドを使用します。

    cd ~
    rm -rf Azure_SAP_Automated_Deployment .sap_deployment_automation .terraform.d
    
  6. デプロイ フォルダーを作成し、リポジトリを複製します。

    mkdir -p ${HOME}/Azure_SAP_Automated_Deployment; cd $_
    git clone https://github.com/Azure/sap-automation-bootstrap.git config
    git clone https://github.com/Azure/sap-automation.git sap-automation
    git clone https://github.com/Azure/sap-automation-samples.git samples
    cp -Rp samples/Terraform/WORKSPACES ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    
  7. 必要に応じて、Terraform のバージョンと、Cloud Shellのインスタンスで使用可能なAzure CLIを検証します。

    ./sap-automation/deploy/scripts/helpers/check_workstation.sh
    

    オートメーション フレームワークを実行するには、次のバージョンに更新します。

サービス プリンシパルを作成する

SAP Automation デプロイ フレームワークでは、デプロイにサービス プリンシパルが使用されます。 コントロール プレーンのデプロイ用のサービス プリンシパルを作成します。 サービス プリンシパルを作成するには、適切なアクセス許可を持つアカウントを使用してください。

サービス プリンシパルの名前を選択するときは、その名前がAzure テナント内で一意であることを確認します。

  1. サービス プリンシパルの共同作成者とユーザー アクセス管理者のアクセス許可を付与します。

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az ad sp create-for-rbac --role="Contributor"           \
      --scopes="/subscriptions/${ARM_SUBSCRIPTION_ID}"      \
      --name="${control_plane_env_code}-Deployment-Account"
    

    出力結果を確認します。 例えば次が挙げられます。

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. 出力の詳細を下にコピーします。 appIdpasswordTenant の値を必ず保存してください。

    出力は次のパラメーターにマップされます。 これらのパラメーターは、後の手順でオートメーション コマンドと一緒に使用します。

    パラメーターの入力名 出力名
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. 必要に応じて、サービス プリンシパルにユーザー アクセス管理者ロールを割り当てます。

    export appId="<appId>"
    
    az role assignment create --assignee ${appId}   \
      --role "User Access Administrator"            \
      --scope /subscriptions/${ARM_SUBSCRIPTION_ID}
    

Important

ユーザー アクセス管理者ロールをサービス プリンシパルに割り当てない場合は、自動化を使用してアクセス許可を割り当てることはできません。

コントロール プレーン Web アプリケーションの資格情報を構成する

SAP オートメーション フレームワーク コントロール プレーンの一部として、必要な構成ファイルの作成を支援する対話型 Web アプリケーションを必要に応じて作成できます。

Web アプリのフロント ページを示すスクリーンショット。

アプリ登録を作成する

この Web アプリを使用する場合は、最初に認証のためにアプリ登録を作成する必要があります。 Cloud Shellを開き、次のコマンドを実行します。

必要に応じて、「LAB」という箇所をあなたの環境に置き換えてください。

export            env_code="LAB"

echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json

export TF_VAR_app_registration_app_id=$(az ad app create \
    --display-name ${env_code}-webapp-registration       \
    --enable-id-token-issuance true                      \
    --sign-in-audience AzureADMyOrg                      \
    --required-resource-access @manifest.json            \
    --query "appId" --output tsv )

#remove the placeholder manifest.json
rm manifest.json

export TF_VAR_webapp_client_secret=$(az ad app credential reset \
    --id $TF_VAR_app_registration_app_id --append               \
    --query "password" --output tsv )

export TF_use_webapp=true

echo "App registration ID:  ${TF_VAR_app_registration_app_id}"
echo "App registration password:  ${TF_VAR_webapp_client_secret}"

アプリケーションの登録を作成するために必要なアクセス許可を持つユーザー アカウントを使用してログオンしていることを確認します。 アプリの登録の詳細については、「アプリの 登録を作成する」を参照してください。

出力の詳細を下にコピーします。 App registration IDApp registration passwordの値を保存してください。

出力は次のパラメーターにマップされます。 これらのパラメーターは、後の手順でオートメーション コマンドと一緒に使用します。

パラメーターの入力名 出力名
app_registration_app_id App registration ID
webapp_client_secret App registration password

構成ファイルを表示する

  1. Cloud ShellからVisual Studio Codeを開きます。

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    code .
    
  2. WORKSPACES ディレクトリを展開します。 CONFIGURATIONDEPLOYERLANDSCAPELIBRARYSYSTEMBOMSの 6 つのサブフォルダーがあります。 これらの各フォルダーを展開して、リージョン展開構成ファイルを見つけます。

  3. Terraform 変数ファイルを適切なサブフォルダーで見つけます。 たとえば、 DEPLOYER Terraform 変数ファイルは次の例のようになります。

    # The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
    environment = "LAB"
    # The location/region value is a mandatory field, it is used to control where the resources are deployed
    location = "swedencentral"
    
    # management_network_address_space is the address space for management virtual network
    management_network_address_space = "10.10.20.0/25"
    # management_subnet_address_prefix is the address prefix for the management subnet
    management_subnet_address_prefix = "10.10.20.64/28"
    
    # management_firewall_subnet_address_prefix is the address prefix for the firewall subnet
    management_firewall_subnet_address_prefix = "10.10.20.0/26"
    firewall_deployment = true
    
    # management_bastion_subnet_address_prefix is the address prefix for the bastion subnet
    management_bastion_subnet_address_prefix = "10.10.20.128/26"
    bastion_deployment = true
    
    # deployer_enable_public_ip controls if the deployer Virtual machines will have Public IPs
    deployer_enable_public_ip = true
    
    # deployer_count defines how many deployer VMs will be deployed
    deployer_count = 1
    
    # use_service_endpoint defines that the management subnets have service endpoints enabled
    use_service_endpoint = true
    
    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = false
    
    # enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
    enable_firewall_for_keyvaults_and_storage = false
    
    # public_network_access_enabled controls if storage account and key vaults have public network access enabled
    public_network_access_enabled = true
    
    

    デプロイ中の今後の編集のために、Terraform 変数ファイルの場所に注意してください。

  4. SAP ライブラリの Terraform 変数ファイルを適切なサブフォルダーで見つけます。 たとえば、 LIBRARY Terraform 変数ファイルは次の例のようになります。

    # The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
    environment = "LAB"
    # The location/region value is a mandatory field, it is used to control where the resources are deployed
    location = "swedencentral"
    
    #Defines the DNS suffix for the resources
    dns_label = "lab.sdaf.contoso.net"
    
    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = false
    

    デプロイ中の今後の編集のために、Terraform 変数ファイルの場所に注意してください。

    Important

    dns_labelがAzure プライベート DNSのインスタンスと一致していることを確認します。

コントロール プレーンをデプロイする

deploy_controlplane.sh スクリプトを使用して、配置ツールとライブラリをデプロイします。 これらのデプロイ部分は、選択した自動化領域のコントロール プレーンを構成します。

デプロイは、インフラストラクチャのデプロイ、状態の更新、Terraform 状態ファイルのライブラリ ストレージ アカウントへのアップロードのサイクルを経ます。 これらの手順はすべて、1 つのデプロイ スクリプトにパッケージ化されます。 スクリプトには、配置者とライブラリの構成ファイルの場所と、その他のパラメーターが必要です。

たとえば、前に説明したように、4 文字の名前をして、展開場所としてSECEを選択します。 サンプルの deployer 構成ファイル LAB-SECE-DEP05-INFRASTRUCTURE.tfvars は、 ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/LAB-SECE-DEP05-INFRASTRUCTURE フォルダーにあります。

サンプルの SAP ライブラリ構成ファイル LAB-SECE-SAP_LIBRARY.tfvars は、 ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/LAB-SECE-SAP_LIBRARY フォルダーにあります。

  1. サービス プリンシパルの環境変数を設定します。

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appId>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenantId>"
    

    デプロイ ネットワークの一部ではないワークステーションまたは Cloud Shell からスクリプトを実行している場合は、次のコマンドを使用して、IP アドレスからの接続を許可するための環境変数を設定できます。

    export TF_VAR_Agent_IP=<your-public-ip-address>
    

    構成 Web アプリケーションをデプロイする場合は、次の環境変数も設定する必要があります。

    export TF_VAR_app_registration_app_id=<appRegistrationId>
    export    TF_VAR_webapp_client_secret=<appRegistrationPassword>
    export                  TF_use_webapp=true
    
  2. 次のスクリプトを使用して、デプロイ 元と SAP ライブラリを作成し、サービス プリンシパルの詳細をデプロイ キー コンテナーに追加します。

    export            env_code="LAB"
    export           vnet_code="DEP05"
    export         region_code="SECE"
    
    export     DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    cd $CONFIG_REPO_PATH
    
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
        --deployer_parameter_file "${deployer_parameter_file}"         \
        --library_parameter_file "${library_parameter_file}"           \
        --subscription "${ARM_SUBSCRIPTION_ID}"                        \
        --spn_id "${ARM_CLIENT_ID}"                                    \
        --spn_secret "${ARM_CLIENT_SECRET}"                            \
        --tenant_id "${ARM_TENANT_ID}"
    

    認証の問題が発生した場合は、 az logout を実行してサインアウトし、 token-cacheをクリアします。 次に、 az login を実行して再認証します。

    オートメーション フレームワークが Terraform 操作を実行するまで待つ planapply

    配置者のデプロイは、約 15 ~ 20 分間実行される場合があります。

    今後の手順では、いくつかの値をメモする必要があります。 出力で次のテキスト ブロックを探します。

    #########################################################################################
    #                                                                                       #
    #  Please save these values:                                                            #
    #     - Key Vault: LABSECEDEP05user39B                                                  #
    #     - Deployer IP: x.x.x.x                                                            #
    #     - Storage Account: labsecetfstate53e                                              #
    #     - Web Application Name: lab-sece-sapdeployment39B                                 #
    #     - App registration Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx                       #
    #                                                                                       #
    #########################################################################################
    
  3. Azure ポータルに移動します。

    [リソース グループ] を選択します。 デプロイ元のインフラストラクチャとライブラリの新しいリソース グループを探します。 たとえば、 LAB-[region]-DEP05-INFRASTRUCTURELAB-[region]-SAP_LIBRARYが表示される場合があります。

    デプロイ元と SAP ライブラリ リソース グループの内容を次に示します。

    デプロイ 元のリソースを示すスクリーンショット。

    ライブラリ リソースを示すスクリーンショット。

    これで、Terraform 状態ファイルは、 tfstateを含む名前のストレージ アカウントに配置されます。 ストレージ アカウントには、デプロイ元とライブラリの状態ファイルを含む tfstate という名前のコンテナーがあります。 コントロール プレーンのデプロイが成功した後の tfstate コンテナーの内容を次に示します。

    コントロール プレーンの Terraform 状態ファイルを示すスクリーンショット。

一般的な問題と解決策

以下はいくつかのトラブルシューティングのヒントです:

  • deployer モジュールの作成で次のエラーが発生する場合は、スクリプトの実行時に WORKSPACES ディレクトリにいることを確認してください。

    Incorrect parameter file.
    The file must contain the environment attribute!!
    
  • 次のエラーは一時的なものです。 同じコマンド ( deploy_controlplane.sh) を再実行します。

    Error: file provisioner error
    ..
    timeout - last error: dial tcp
    
  • スクリプト deploy_controlplane.shを実行した直後に認証の問題が発生した場合は、次のコマンドを実行します。

    az logout
    
    az login
    

デプロイ元 VM に接続する

コントロール プレーンがデプロイされると、リモート バックエンド azurermを使用して Terraform 状態が格納されます。 デプロイ元 VM に接続するためのすべてのシークレットは、デプロイ元のリソース グループ内のキー コンテナーで使用できます。

Deployer VM に接続するには:

  1. Azure ポータルにサインインします。

  2. [キー コンテナー] を選択または検索します。

  3. [ キー コンテナー ] ページで、デプロイ元のキー コンテナーを見つけます。 名前は LAB[REGION]DEP05userで始まります。 必要に応じて、 リソース グループ または 場所でフィルター処理します。

  4. 左側のウィンドウの [設定] セクションで、[ シークレット] を選択します。

  5. sshkey を含むシークレットを見つけて選択します。 LAB-[REGION]-DEP05-sshkeyのようになります。

  6. シークレットのページで、現在のバージョンを選択します。 次に、シークレット値をコピーします。

  7. プレーンテキスト エディターを開きます。 シークレット値をコピーします。

  8. SSH キーを保持するファイルを保存します。 たとえば、 C:\\Users\\<your-username>\\.sshを使用します。

  9. ファイルを保存します。 [種類として保存] を求めるメッセージが表示されたら、SSH がオプションでない場合は [すべてのファイル] を選択します。 たとえば、 deployer.sshを使用します。

  10. Visual Studio Codeなど、任意の SSH クライアントを介してデプロイ元 VM に接続します。 前にメモしたパブリック IP アドレスと、ダウンロードした SSH キーを使用します。 Visual Studio Codeを使用して配置者に接続する方法については、「 Visual Studio Codeを参照してください。 PuTTY を使用している場合は、まず PuTTYGen を使用して SSH キー ファイルを変換します。

既定のユーザー名は azureadm です。

ファイルが SSH キーを保存する際に、改行 (CR) 文字を含まない正しい形式でファイルを保存できることを確認してください。 Visual Studio Codeまたは基本的なテキスト エディターを使用します。

デプロイ元 VM に接続したら、部品表 (BOM) を使用して SAP ソフトウェアをダウンロードできます。

パブリック IP を使用していない場合は、デプロイ元 VM に接続する

パブリック IP 接続のないデプロイの場合、インターネット経由の直接接続は許可されません。 このような場合は、Azure Bastionジャンプ ボックスを使用することも、Azure仮想ネットワークに接続しているコンピューターから次の手順を実行することもできます。

次の例では、Azure Bastionを使用します。

デプロイ機能に接続するには:

  1. Azure ポータルにサインインします。

  2. デプロイ元 VM を含むリソース グループに移動します。

  3. Azure Bastionを使用して VM に接続します。

  4. 既定のユーザー名は azureadm です。

  5. Azure Key Vault から SSH 秘密キーを選択します。

  6. コントロール プレーンを含むサブスクリプションを選択します。

  7. デプロイ機能キー コンテナーを選択します。

  8. シークレットの一覧から、-sshkey で終わるシークレットを選択します。

  9. VM に接続します。

残りのタスクは、配置者で実行する必要があります。

コントロール プレーンをセキュリティで保護する

コントロール プレーンは、SAP オートメーション フレームワークの最も重要な部分です。 コントロール プレーンをセキュリティで保護することが重要です。 次の手順は、コントロール プレーンをセキュリティで保護するのに役立ちます。

プライベート エンドポイントを有効にし、ストレージ アカウントとキー コンテナーへのパブリック アクセスをブロックするには、コントロール プレーンの tfvars ファイルを更新する必要があります。

  1. コントロール プレーン構成ファイルを配置者 VM にコピーするには、 sync_deployer.sh スクリプトを使用できます。 デプロイ元 VM にサインインし、Terraform 状態ストレージ アカウント名を使用するように次のコマンドを更新します。 次に、次のスクリプトを実行します。

    terraform_state_storage_account=labsecetfstate###
    
    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    
    ../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname $terraform_state_storage_account --state_subscription $ARM_SUBSCRIPTION_ID
    

    このコマンドは、 tfvars 構成ファイルを SAP ライブラリのストレージ アカウントからデプロイ元 VM にコピーします。

  2. コントロール プレーンの構成ファイルを次に変更します。

    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = true
    
    # enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
    enable_firewall_for_keyvaults_and_storage = true
    
    # public_network_access_enabled controls if storage account and key vaults have public network access enabled
    public_network_access_enabled = false
    
    # if you want to use the webapp
    use_webapp = true
    
  3. デプロイを再実行して変更を適用します。 スクリプト内のストレージ アカウント名とキー コンテナー名を更新します。

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appId>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenantId>"
    
  4. 配置者と SAP ライブラリを作成します。

    export            env_code="LAB"
    export           vnet_code="DEP05"
    export         region_code="SECE"
    
    terraform_state_storage_account=labsecetfstate###
                         vault_name="LABSECEDEP05user###"
    
    export     DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    cd $CONFIG_REPO_PATH
    
    deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"
    
    az logout
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
        --deployer_parameter_file "${deployer_parameter_file}"         \
        --library_parameter_file "${library_parameter_file}"           \
        --subscription "${ARM_SUBSCRIPTION_ID}"                        \
        --storageaccountname "${terraform_state_storage_account}"      \
        --vault "${vault_name}"
    

Web アプリケーションをデプロイする

次のスクリプトを使用して、Web アプリケーションをデプロイできます。

export            env_code="LAB"
export           vnet_code="DEP05"
export         region_code="SECE"
export         webapp_name="<webAppName>"
export              app_id="<appRegistrationId>"
export           webapp_id="<webAppId>"

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

cd $DEPLOYMENT_REPO_PATH
cd Webapp/SDAF

dotnet build SDAFWebApp.csproj
dotnet publish SDAFWebApp.csproj --output publish
cd publish

zip -r SDAF.zip .

az webapp deploy --resource-group ${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE --name $webapp_name --src-path SDAF.zip --type zip

az ad app update --id $app_id --web-home-page-url https://$webapp_name.azurewebsites.net --web-redirect-uris https://$webapp_name.azurewebsites.net/ https://$webapp_name.azurewebsites.net/.auth/login/aad/callback
az role assignment create --assignee $webapp_id --role reader --subscription $ARM_SUBSCRIPTION_ID --scope /subscriptions/$ARM_SUBSCRIPTION_ID
az webapp restart --resource-group ${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE --name $webapp_name

ワークロード ゾーン情報の収集

  1. テキスト エディターで次の情報を収集します。 この情報は、"コントロール プレーンのデプロイ" フェーズの最後に収集されました。

    1. ライブラリ リソース グループ内の Terraform 状態ファイル ストレージ アカウントの名前。

      1. 前の例に従って、リソース グループは LAB-SECE-SAP_LIBRARY

      2. ストレージ アカウントの名前に labsecetfstateが含まれています。

    2. デプロイ機能リソース グループのキーコンテナーの名前:

      1. 前の例に従って、リソース グループは LAB-SECE-DEP05-INFRASTRUCTURE

      2. キー コンテナーの名前に LABSECEDEP05userが含まれています。

    3. デプロイ元 VM のパブリック IP アドレス。 デプロイ担当者のリソース グループに移動し、デプロイ元 VM を開き、パブリック IP アドレスをコピーします。

  2. 次の情報を収集する必要があります。

    1. デプロイ元の状態ファイルの名前は、ライブラリ リソース グループの下にあります。

      1. ライブラリ リソース グループ>状態ストレージアカウント>コンテナ>tfstate を選択します。 配置元の状態ファイルの名前をコピーします。

      2. 前の例に続いて、BLOB の名前は LAB-SECE-DEP05-INFRASTRUCTURE.terraform.tfstate

  3. 必要に応じて、サービス プリンシパルを登録します。 この例では、この手順は必要ありません。

    環境を初めてインスタンス化するときは、サービス プリンシパルを登録する必要があります。 この例では、コントロール プレーンは LAB 環境にあり、ワークロード ゾーンも LAB。 このため、 LAB 環境にサービス プリンシパルを登録する必要があります。

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appID>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenant>"
    export           key_vault="<vaultName>"
    export            env_code="LAB"
    export         region_code="SECE"
    
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/set_secrets.sh \
        --environment "${env_code}"                           \
        --region "${region_code}"                             \
        --vault "${key_vault}"                                \
        --subscription "${ARM_SUBSCRIPTION_ID}"               \
        --spn_id "${ARM_CLIENT_ID}"                           \
        --spn_secret "${ARM_CLIENT_SECRET}"                   \
        --tenant_id "${ARM_TENANT_ID}"
    

ワークロード ゾーンのデプロイ準備を行う

次の手順に従って、デプロイ元 VM に接続します。 リポジトリのコピーがそこにあります。

ワークロード ゾーンをデプロイする

install_workloadzone スクリプトを使用して、SAP ワークロード ゾーンをデプロイします。

  1. デプロイ元 VM で、 Azure_SAP_Automated_Deployment フォルダーに移動します。

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/LAB-SECE-SAP04-INFRASTRUCTURE
    
  2. 必要に応じて、ワークロード ゾーン構成ファイルを開き、必要に応じて、ネットワーク名と一致するようにネットワーク論理名を変更します。

  3. ワークロード ゾーンのデプロイを開始します。 前に収集した詳細は、ここで必要です。

    • deployer tfstate ファイルの名前 ( tfstate コンテナーにあります)
    • tfstate ストレージ アカウントの名前
    • デプロイ機能キー コンテナーの名前
    export     ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export           ARM_CLIENT_ID="<appId>"
    export       ARM_CLIENT_SECRET="<password>"
    export           ARM_TENANT_ID="<tenantId>"
    
    export       deployer_env_code="LAB"
    export            sap_env_code="LAB"
    export             region_code="SECE"
    
    export      deployer_vnet_code="DEP05"
    export               vnet_code="SAP04"
    
    export tfstate_storage_account="<storageaccountName>"
    export               key_vault="<vaultName>"
    
    export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    cd "${CONFIG_REPO_PATH}/LANDSCAPE/${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE"
    
    parameterFile="${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    deployerState="${deployer_env_code}-${region_code}-${deployer_vnet_code}-INFRASTRUCTURE.terraform.tfstate"
    
    $SAP_AUTOMATION_REPO_PATH/deploy/scripts/install_workloadzone.sh  \
        --parameterfile "${parameterFile}"                            \
        --deployer_environment "${deployer_env_code}"                 \
        --deployer_tfstate_key  "${deployerState}"                    \
        --keyvault "${key_vault}"                                     \
        --storageaccountname "${tfstate_storage_account}"             \
        --subscription "${ARM_SUBSCRIPTION_ID}"                       \
        --spn_id "${ARM_CLIENT_ID}"                                   \
        --spn_secret "${ARM_CLIENT_SECRET}"                           \
        --tenant_id "${ARM_TENANT_ID}"
    

    ワークロード ゾーンのデプロイが自動的に開始されます。

    デプロイが完了するまで待ちます。 Azure ポータルに新しいリソース グループが表示されます。

SAP システム インフラストラクチャのデプロイを準備する

次の手順に従って、デプロイ元 VM に接続します。 リポジトリのコピーがそこにあります。

WORKSPACES/SYSTEM フォルダーに移動し、リポジトリから使用するサンプル構成ファイルをコピーします。

SAP システム インフラストラクチャをデプロイする

ワークロード ゾーンが完了したら、SAP システム インフラストラクチャ リソースをデプロイできます。 SAP システムは、お使いの SAP アプリケーションの VM とサポート コンポーネントを作成します。 installer.sh スクリプトを使用して SAP システムをデプロイします。

SAP システムは次をデプロイします。

  • データベース層。データベース VM とそのディスクとAzure Standard Load Balancer インスタンスをデプロイします。 このレベルでは、HANA データベースまたは AnyDB データベースを実行できます。
  • 顧客が定義した数の VM と Azure Standard Load Balancer インスタンスをデプロイする SCS レベル。
  • VM とそのディスクをデプロイするアプリケーション層。
  • Web ディスパッチャー層。

SAP システムをデプロイします。

export             sap_env_code="LAB"
export              region_code="SECE"
export                vnet_code="SAP04"
export                      SID="L00"

export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

cd ${CONFIG_REPO_PATH}/SYSTEM/${sap_env_code}-${region_code}-${vnet_code}-${SID}

${DEPLOYMENT_REPO_PATH}/deploy/scripts/installer.sh                             \
    --parameterfile "${sap_env_code}-${region_code}-${vnet_code}-${SID}.tfvars" \
    --type sap_system

システム リソース グループが Azure ポータルに表示されていることを確認します。

部品表を使用して SAP ソフトウェアを入手する

自動化フレームワークでは、SAP BOM を使用して SAP からソフトウェアをダウンロードするためのツールが提供されます。 ソフトウェアは SAP ライブラリにダウンロードされます。SAP ライブラリは、SAP のデプロイに必要なすべてのメディアのアーカイブとして機能します。

SAP BOM は、SAP メンテナンス プランナーを模倣します。 関連する製品識別子と一連のダウンロード URL があります。

BOM ファイルのサンプル抽出は、次の例のようになります。


---
name:    'S41909SPS03_v0010'
target:  'S/4 HANA 1909 SPS 03'
version: 7

product_ids:
  dbl:       NW_ABAP_DB:S4HANA1909.CORE.HDB.ABAP
  scs:       NW_ABAP_ASCS:S4HANA1909.CORE.HDB.ABAP
  scs_ha:    NW_ABAP_ASCS:S4HANA1909.CORE.HDB.ABAPHA
  pas:       NW_ABAP_CI:S4HANA1909.CORE.HDB.ABAP
  pas_ha:    NW_ABAP_CI:S4HANA1909.CORE.HDB.ABAPHA
  app:       NW_DI:S4HANA1909.CORE.HDB.PD
  app_ha:    NW_DI:S4HANA1909.CORE.HDB.ABAPHA
  web:       NW_Webdispatcher:NW750.IND.PD
  ers:       NW_ERS:S4HANA1909.CORE.HDB.ABAP
  ers_ha:    NW_ERS:S4HANA1909.CORE.HDB.ABAPHA

materials:
  dependencies:
    - name:     HANA_2_00_055_v0005ms

  media:
    # SAPCAR 7.22
    - name:         SAPCAR
      archive:      SAPCAR_1010-70006178.EXE
      checksum:     dff45f8df953ef09dc560ea2689e53d46a14788d5d184834bb56544d342d7b
      filename:     SAPCAR
      permissions:  '0755'
      url:          https://softwaredownloads.sap.com/file/0020000002208852020

    # Kernel
    - name:         "Kernel Part I ; OS: Linux on x86_64 64bit ; DB: Database independent"

この構成例では、リソース グループは LAB-SECE-DEP05-INFRASTRUCTURE。 デプロイ 元のキー コンテナー名には、その名前に LABSECEDEP05user が含まれています。 この情報を使用して、デプロイ者のキー コンテナー シークレットを構成します。

  1. 次の手順に従って、デプロイ元 VM に接続します。 リポジトリのコピーがそこにあります。

  2. SAP ユーザー アカウントのユーザー名を含むシークレットを追加します。 <vaultName>を展開者キー コンテナーの名前に置き換えます。 また、 <sap-username> を SAP ユーザー名に置き換えます。

    export key_vault=<vaultName>
    export sap_username=<sap-username>
    
    az keyvault secret set --name "S-Username" --vault-name $key_vault --value "${sap_username}";
    
  3. SAP ユーザー アカウントのパスワードを使用してシークレットを追加します。 <vaultName>をデプロイ元のキー コンテナー名に置き換え、<sap-password>を SAP パスワードに置き換えます。

    sap_user_passwordを設定する場合は、単一引用符を使用することが重要です。 パスワードに特殊文字を使用すると、予期しない結果が生じる可能性があります。

    sap_user_password='<sap-password>'
    
    az keyvault secret set --name "S-Password" --vault-name "${key_vault}" --value="${sap_user_password}";
    
  4. ダウンロード プロセス用に SAP パラメーター ファイルを構成します。 次に、Ansible プレイブックを使用して SAP ソフトウェアをダウンロードします。 次のコマンドを実行してください:

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    mkdir BOMS
    cd BOMS
    
    vi sap-parameters.yaml
    
  5. bom_base_nameをBOMという名前で更新します。 <Deployer KeyVault Name> を、デプロイ 元リソース グループのAzure Key Vaultの名前に置き換えます。

    ファイルは、次の構成例のようになります。

    bom_base_name:                 S42022SPS00_v0001ms
    deployer_kv_name:              <vaultName>
    BOM_directory:                 ${HOME}/Azure_SAP_Automated_Deployment/samples/SAP
    
  6. ソフトウェアをダウンロードするには、Ansible プレイブックを実行します。 プレイブックを実行する方法の 1 つは、[ ダウンローダー ] メニューを使用することです。 download_menu スクリプトを実行します。

    ${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/download_menu.sh
    
  7. 実行するプレイブックを選択します。

    1) BoM Downloader
    3) Quit
    Please select playbook:
    

    プレイブック 1) BoM Downloader を選択して、BOM ファイルで説明されている SAP ソフトウェアをストレージ アカウントにダウンロードします。 sapbits コンテナーにインストール用のすべてのメディアがあることを確認します。

    プレイブックは、構成メニューを使用するか、コマンド ラインから直接実行できます。

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/BOMS/
    
    export           ANSIBLE_PRIVATE_KEY_FILE=sshkey
    
    playbook_options=(
            --inventory-file="${sap_sid}_hosts.yaml"
            --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
            --extra-vars="_workspace_directory=`pwd`"
            --extra-vars="@sap-parameters.yaml"
            --extra-vars="bom_processing=true"
            "${@}"
    )
    
    # Run the playbook to retrieve the ssh key from the Azure Key Vault
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
    
    # Run the playbook to perform the Operating System configuration
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_bom_downloader.yaml
    

    必要に応じて、SAP ユーザー資格情報をパラメーターとして渡すこともできます。

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/BOMS/
    
    sap_username=<sap-username>
    sap_user_password='<sap-password>'
    
    export           ANSIBLE_PRIVATE_KEY_FILE=sshkey
    
    playbook_options=(
            --inventory-file="${sap_sid}_hosts.yaml"
            --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
            --extra-vars="_workspace_directory=`pwd`"
            --extra-vars="@sap-parameters.yaml"
            --extra-vars="s_user=${sap_username}"
            --extra-vars="s_password=${sap_user_password}"
            --extra-vars="bom_processing=true"
            "${@}"
    )
    
    # Run the playbook to retrieve the ssh key from the Azure Key Vault
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
    
    # Run the playbook to perform the Operating System configuration
    ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_bom_downloader.yaml
    

SAP アプリケーションをインストールする

SAP アプリケーションのインストールは、Ansible プレイブックを通じて行われます。

システム展開フォルダーに移動します。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

現在のフォルダーに次のファイルがあることを確認します: sap-parameters.yamlL00_host.yaml

スタンドアロンの SAP S/4HANA システムでは、8 つのプレイブックを順番に実行できます。 プレイブックを実行する方法の 1 つは、構成メニューを使用することです。

configuration_menu スクリプトを実行します。

${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/configuration_menu.sh

SAP Deployment Automation Ansible 構成メニューを示す図。

実行するプレイブックを選択します。

プレイブック: 基本オペレーティング システムの構成

このプレイブックは、ソフトウェア リポジトリ、パッケージ、およびサービスの構成を含むすべてのマシンで汎用オペレーティング システム構成のセットアップを実行します。

プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                            sap_sid=L00
export           ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to perform the Operating System configuration
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_01_os_base_config.yaml

プレイブック: SAP 固有のオペレーティング システムの構成

このプレイブックは、すべてのマシンで SAP オペレーティング システム構成のセットアップを実行します。 手順には、ボリューム グループとファイル システムの作成、ソフトウェア リポジトリ、パッケージ、およびサービスの構成が含まれます。

プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                            sap_sid=L00
export           ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to perform the SAP Specific Operating System configuration
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml

プレイブック: BOM 処理

このプレイブックは、SAP ソフトウェアを SCS VM にダウンロードします。

プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml

プレイブック: SCS のインストール

このプレイブックでは、SAP セントラル サービスがインストールされます。 高可用性構成の場合、プレイブックでは SAP ERS インスタンスもインストールされ、Pacemaker が構成されます。

プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_00_00_sap_scs_install.yaml

プレイブック: データベース インスタンスのインストール

このプレイブックでは、データベース インスタンスがインストールされます。

プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04_00_00_db_install.yaml

プレイブック: データベースの読み込み

このプレイブックは、プライマリ アプリケーション サーバーからデータベース読み込みタスクを呼び出します。

プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_01_sap_dbload.yaml

プレイブック: データベースの高可用性のセットアップ

このプレイブックは、データベースの高可用性を構成します。 HANA の場合、HANA データベースの HANA システム レプリケーションと Pacemaker が必要です。

プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04_00_01_db_ha.yaml

プレイブック: プライマリ アプリケーション サーバーのインストール

このプレイブックでは、プライマリ アプリケーション サーバーがインストールされます。 プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_02_sap_pas_install.yaml

プレイブック: アプリケーション サーバーのインストール

このプレイブックでは、アプリケーション サーバーがインストールされます。 プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_02_sap_app_install.yaml

プレイブック: Web Dispatcher のインストール手順

このプレイブックでは、Web ディスパッチャーがインストールされます。 プレイブックは、構成メニューまたはコマンド ラインを使用して実行できます。

これで、スタンドアロン HANA システムをデプロイして構成しました。 高可用性 (HA) SAP HANAデータベースを構成する必要がある場合は、HANA HA プレイブックを実行します。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_04_sap_web_install.yaml

リソースをクリーンアップする

完了したら、SAP インストールをクリーンアップすることが重要です。 それ以外の場合は、リソースに関連するコストが引き続き発生します。

デプロイした SAP インフラストラクチャ全体を削除するには、次の手順を実行する必要があります。

  1. SAP システム インフラストラクチャ リソースを削除します。
  2. すべてのワークロード ゾーン (ランドスケープ) を削除します。
  3. コントロール プレーンを削除します。

デプロイ元 VM から SAP インフラストラクチャ リソースとワークロード ゾーンの削除を実行します。 Cloud Shellからコントロール プレーンの削除を実行します。

開始する前に、Azure アカウントにサインインします。 次に、正しいサブスクリプションに登録されていることを確認します。

SAP インフラストラクチャを削除する

LAB-SECE-SAP01-L00 フォルダー内の SYSTEM サブフォルダーに移動します。 次に、次のコマンドを実行します。

export  sap_env_code="LAB"
export   region_code="SECE"
export sap_vnet_code="SAP04"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/${sap_env_code}-${region_code}-${sap_vnet_code}-L00

${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh                   \
  --parameterfile "${sap_env_code}-${region_code}-${sap_vnet_code}-L00.tfvars" \
  --type sap_system

SAP ワークロード ゾーンを削除する

LAB-XXXX-SAP01-INFRASTRUCTURE フォルダー内の LANDSCAPE サブフォルダーに移動します。 次に、次のコマンドを実行します。

export  sap_env_code="LAB"
export   region_code="SECE"
export sap_vnet_code="SAP01"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE

${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh                                       \
      --parameterfile ${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE.tfvars \
      --type sap_landscape

コントロール プレーンを削除する

Cloud Shell にサインインします。

WORKSPACES フォルダーに移動します。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/

次の 2 つの環境変数をエクスポートします。

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export ARM_SUBSCRIPTION_ID="<subscriptionId>"

次のコマンドを実行します。

export region_code="SECE"
export    env_code="LAB"
export   vnet_code="DEP05"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
${DEPLOYMENT_REPO_PATH}/deploy/scripts/remove_controlplane.sh                                                                                                \
    --deployer_parameter_file DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars  \
    --library_parameter_file LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars

すべてのリソースがクリーンアップされていることを確認します。