Azure Center for SAP Solutions (ACSS) を使って SAP on Azure の展開
Azure Center for SAP Solutions (ACSS) は、SAP システムを Azure で展開するためのベストプラクティスを提供するサービスです。
SAP システムをマネージド化するものではないものの、SAP のワークロードを Azure で管理しやすくすることに特化したソリューションです。
- 新規作成時の OS/ディスクのセットアップ (OS 内の設定には Ansible を使用)
- SAP ワークロードに特化した管理エクスペリエンスの提供
ご利用いただくに当たり、このソリューション自体の追加費用は掛かりません (SLA についても設けられていません)。
また、現時点で日本国内では東日本リージョンでご利用いただけます。
ご参考; Azure Center for SAP solutions に関する一般的な質問
既存の SAP on Azure ワークロードも登録が行えますが、今回は以下の流れで新規構築していきたいと思います。
- ACSS の展開を行うネットワークインフラストラクチャーの構築
- ACSS インフラストラクチャーの展開
- SAP インストールメディアの準備
- SAP インストール
1. ACSS の展開を行うネットワークインフラストラクチャーの構築
マネージドサービスではないので、インフラストラクチャ-を構築していくところは、
仮想マシンを用いたサービスの構築と変わりありません。
まずは、仮想ネットワーク/サブネットを構築します。
リソース (リソース名) | リージョン | アドレス空間 |
---|---|---|
VNet (labacssvnet) | East Asia | 10.23.0.0/22 |
サブネット (app) | 10.23.0.0/24 | |
サブネット (db) | 10.23.1.0/24 |
また、後に ACSS の展開で "高可用性 (HA) を備えた分散" を選択しますが、内部 Standard ロードバランサーが用いられます。
内部 Standard ロードバランサーの背後にある仮想マシンはインターネットに対して外部通信が行えないため、NAT ゲートウェイを構築します。
構築時に上記2つのサブネットに紐づけます。
これでネットワークインフラストラクチャーの構築が完了です。
その他下記ドキュメントでは Azure Firewall を用いた構成例についてはドキュメントに記載がありますので、ご参考ください。
ご参考; ネットワーク構成の例 - インフラストラクチャのデプロイ用にネットワークを準備する
2. ACSS インフラストラクチャーの展開
ネットワークインフラストラクチャーが構築できたら、ACSS の展開を行います。
参考; Azure Center for SAP solutions を使用した S/4HANA インフラストラクチャのデプロイ
Azure ポータルの検索バーに "Azure Center for SAP solutions" と入力し、サービスを選択します。
次いで、"Create a new SAP system" を選択します。
ここで入力する SID (SAP System ID) は、システムを一意に識別するための ID です。
デプロイの種類として、単一サーバー (ASCS および AP / DB サーバーが一緒) か、分散 (ASCS および AP / DB サーバーが分離),高可用性 (ASCS, AP, DB サーバーがそれぞれ複数台) が選択できます。
ネットワークインフラストラクチャーの構築で作成した仮想ネットワークとサブネットを選択します。
全ての仮想マシンより参照されるトランスポートディレクトリとして、ストレージ アカウントを作成します。
これにより各仮想マシンからは Azure Files が NFS マウントされ参照されます。
次に仮想マシンの構成を行います。
仮想マシンサイズに用いられる指標が SAP のワークロードの評価に用いられる SAPS になります。
この値と、HANA データベースに用いるメモリサイズを入力し、推奨値を作成を選択いただくと、自動的に仮想マシンサイズを選択してくれます。
また、HANA データベースの仮想マシンについて、ディスクおよびディレクトリ構成を設定できます。
最後に、デプロイされるリソースのビューが表示されます。
現時点のところ、近接配置グループの構成は実施されていない状況になります。
これで仮想マシン/ロードバランサーの展開ができました。
なお、仮想マシンで実行された設定 (Ansible の実行ログ) は、ACSS の展開時に作られたストレージ アカウント (リソースグループ mrg-SID-xxxxxx に作成) に格納されています。
logs-os-configuration-xxxxxx.txt には、パッケージの更新や、
カーネルパラメータ、swap の設定など OS の設定に関するログが格納されています。
===============================================================================
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: SLES_SAP-15 - 155.75s
/tmp/82f6e6d3/ansible/roles-os/1.4-packages/tasks/main.yaml:166 ---------------
roles-os/1.1-swap : Swap reboot --------------------------------------- 111.53s
/tmp/82f6e6d3/ansible/roles-os/1.1-swap/tasks/main.yaml:70 --------------------
roles-os/1.9-kernelparameters : 1.9 Kernel parameters - Set relevant kernel parameters -- 27.51s
/tmp/82f6e6d3/ansible/roles-os/1.9-kernelparameters/tasks/main.yaml:72 --------
roles-os/1.16-services : 1.16 - Populate service facts : SLES_SAP-15 ---- 6.46s
/tmp/82f6e6d3/ansible/roles-os/1.16-services/tasks/main.yaml:26 ---------------
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: sles_sap15.4 --- 5.33s
/tmp/82f6e6d3/ansible/roles-os/1.4-packages/tasks/main.yaml:211 ---------------
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: SLES_SAP-15 hana --- 5.21s
/tmp/82f6e6d3/ansible/roles-os/1.4-packages/tasks/main.yaml:258 ---------------
roles-os/1.4-packages : 1.4 Packages - Activate public cloud extension (15) --- 4.32s
/tmp/82f6e6d3/ansible/roles-os/1.4-packages/tasks/main.yaml:87 ----------------
Gathering Facts --------------------------------------------------------- 3.63s
/tmp/82f6e6d3/ansible/playbook_01_os_base_config.yaml:46 ----------------------
roles-os/1.1-swap : 1.1 Swap: - Ensure waagent file is configured with proper parameters --- 3.41s
/tmp/82f6e6d3/ansible/roles-os/1.1-swap/tasks/main.yaml:45 --------------------
roles-os/1.7-chrony : 1.7 chrony: - Collect facts about installed packages --- 2.55s
/tmp/82f6e6d3/ansible/roles-os/1.7-chrony/tasks/main.yml:26 -------------------
roles-os/1.11-accounts : 1.11 Accounts - Create specified admin groups if needed tier: os --- 2.30s
/tmp/82f6e6d3/ansible/roles-os/1.11-accounts/tasks/main.yml:27 ----------------
roles-os/1.16-services : 1.16 - Disable Services : SLES_SAP-15 ---------- 2.01s
/tmp/82f6e6d3/ansible/roles-os/1.16-services/tasks/main.yaml:83 ---------------
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: sles_sap15.4 hana --- 1.82s
/tmp/82f6e6d3/ansible/roles-os/1.4-packages/tasks/main.yaml:304 ---------------
roles-os/1.13-MOTD : 1.13 MOTD: - Update motd banners ------------------- 1.70s
/tmp/82f6e6d3/ansible/roles-os/1.13-MOTD/tasks/main.yaml:43 -------------------
roles-os/1.7-chrony : 1.7 chrony: - Ensure chronyd service is enabled --- 1.43s
/tmp/82f6e6d3/ansible/roles-os/1.7-chrony/tasks/main.yml:187 ------------------
OS configuration playbook: - Ensure jmespath is installed in the playbook python --- 1.36s
/tmp/82f6e6d3/ansible/playbook_01_os_base_config.yaml:14 ----------------------
roles-os/1.3-repository : 1.3 Repository - Check connect to SUSE repos via SUSEConnect --- 1.35s
/tmp/82f6e6d3/ansible/roles-os/1.3-repository/tasks/main.yml:50 ---------------
roles-os/1.13-MOTD : 1.13 MOTD: - Update issue banners ------------------ 1.34s
/tmp/82f6e6d3/ansible/roles-os/1.13-MOTD/tasks/main.yaml:52 -------------------
roles-os/1.13-MOTD : 1.13 MOTD: - Update issue.net banners -------------- 1.32s
/tmp/82f6e6d3/ansible/roles-os/1.13-MOTD/tasks/main.yaml:61 -------------------
Gathering Facts --------------------------------------------------------- 1.27s
/tmp/82f6e6d3/ansible/playbook_01_os_base_config.yaml:7 -----------------------
logs-sap-os-configuration-xxxxxx.txt には、ディスク/ファイルシステムの構成や
先のトランスポートディレクトリの NFS マウントが行われています。
===============================================================================
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: SLES_SAP-15 --- 9.89s
/tmp/3995e180/ansible/roles-os/1.4-packages/tasks/main.yaml:166 ---------------
roles-os/1.5-disk-setup : 1.5 Disk setup - Filesystem creation ---------- 9.51s
/tmp/3995e180/ansible/roles-os/1.5-disk-setup/tasks/main.yml:148 --------------
roles-os/1.5-disk-setup : 1.5 Disk setup - Volume Group creation -------- 5.27s
/tmp/3995e180/ansible/roles-os/1.5-disk-setup/tasks/main.yml:89 ---------------
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: SLES_SAP-15 scs --- 5.10s
/tmp/3995e180/ansible/roles-os/1.4-packages/tasks/main.yaml:258 ---------------
roles-os/1.5-disk-setup : 1.5 Disk setup - Logical Volume creation ------ 4.55s
/tmp/3995e180/ansible/roles-os/1.5-disk-setup/tasks/main.yml:118 --------------
roles-os/1.16-services : 1.16 - Populate service facts : SLES_SAP-15 ---- 3.30s
/tmp/3995e180/ansible/roles-os/1.16-services/tasks/main.yaml:26 ---------------
roles-os/1.9-kernelparameters : 1.9 Kernel parameters - Set relevant kernel parameters --- 3.08s
/tmp/3995e180/ansible/roles-os/1.9-kernelparameters/tasks/main.yaml:72 --------
SAP OS configuration playbook: - Retrieve Subscription ID, Resource Group Name and Virtual Machine name --- 1.97s
/tmp/3995e180/ansible/playbook_02_os_sap_specific_config.yaml:100 -------------
Gathering Facts --------------------------------------------------------- 1.82s
/tmp/3995e180/ansible/playbook_02_os_sap_specific_config.yaml:55 --------------
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: sles_sap15.4 scs --- 1.66s
/tmp/3995e180/ansible/roles-os/1.4-packages/tasks/main.yaml:304 ---------------
roles-sap-os/2.6-sap-mounts : AFS Mount: sapmnt/YO1 HA ------------------ 1.65s
/tmp/3995e180/ansible/roles-sap-os/2.6-sap-mounts/tasks/2.6.0-afs-mounts.yaml:306
roles-os/1.4-packages : 1.4 Packages: - Update OS packages: sles_sap15.4 --- 1.65s
/tmp/3995e180/ansible/roles-os/1.4-packages/tasks/main.yaml:211 ---------------
roles-sap-os/2.6-sap-mounts : AFS Mount: Create SAP Directories (AFS) --- 1.62s
/tmp/3995e180/ansible/roles-sap-os/2.6-sap-mounts/tasks/2.6.0-afs-mounts.yaml:91
roles-sap-os/2.5-sap-users : 2.5 SAP Users: - Create SAP Groups --------- 1.60s
/tmp/3995e180/ansible/roles-sap-os/2.5-sap-users/tasks/main.yaml:34 -----------
roles-sap-os/2.6-sap-mounts : AFS Mount: Create SAP Directories (scs & ers) --- 1.57s
/tmp/3995e180/ansible/roles-sap-os/2.6-sap-mounts/tasks/2.6.0-afs-mounts.yaml:206
roles-sap-os/2.6-sap-mounts : AFS Mount: Delete locally created SAP Directories (sapmnt) --- 1.43s
/tmp/3995e180/ansible/roles-sap-os/2.6-sap-mounts/tasks/2.6.0-afs-mounts.yaml:119
roles-sap-os/2.4-hosts-file : 2.4 Hosts: - Write unique lines back to /etc/hosts --- 1.34s
/tmp/3995e180/ansible/roles-sap-os/2.4-hosts-file/tasks/main.yaml:161 ---------
roles-sap-os/2.3-sap-exports : 2.3 SAP Exports: - NFS Server Config on Suse (install) --- 1.25s
/tmp/3995e180/ansible/roles-sap-os/2.3-sap-exports/tasks/main.yaml:54 ---------
OS configuration playbook: - Ensure jmespath is installed in the playbook python --- 1.23s
/tmp/3995e180/ansible/playbook_02_os_sap_specific_config.yaml:16 --------------
roles-os/1.3-repository : 1.3 Repository - Check connect to SUSE repos via SUSEConnect --- 1.20s
/tmp/3995e180/ansible/roles-os/1.3-repository/tasks/main.yml:50 ---------------
3. SAP インストールメディアの準備
次に SAP インストールメディアの準備を行います。
参考; SAP HANA インストールメディアのダウンロード
上記ドキュメントでは、Ubuntu 仮想マシンを立て、ストレージ アカウントにソフトウェア等のダウンロードを行っていますが、
環境作れればどちらでも大丈夫です。
ドキュメントの通りですが、2点注意があります。
1つ目は、ansible-core
でドキュメントに指定されているバージョンでは後続のパッケージのインストールに失敗するため、
以下のようにバージョンの指定はせず、インストールしています。
(標準出力の結果などは割愛)
azureuser@installer:~$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
azureuser@installer:~$ az login
azureuser@installer:~$ sudo apt install python3-pip
azureuser@installer:~$ sudo pip3 install ansible-core
azureuser@installer:~$ sudo ansible-galaxy collection install ansible.netcommon:==5.0.0 -p /opt/ansible/collections
azureuser@installer:~$ sudo ansible-galaxy collection install ansible.posix:==1.5.1 -p /opt/ansible/collections
azureuser@installer:~$ sudo ansible-galaxy collection install ansible.utils:==2.9.0 -p /opt/ansible/collections
azureuser@installer:~$ sudo ansible-galaxy collection install ansible.windows:==1.13.0 -p /opt/ansible/collections
azureuser@installer:~$ sudo ansible-galaxy collection install community.general:==6.4.0 -p /opt/ansible/collections
azureuser@installer:~$ git clone https://github.com/Azure/SAP-automation-samples.git
azureuser@installer:~$ git clone https://github.com/Azure/sap-automation.git
もう1つは、BOM (部品表) 名がドキュメントの記載より更新されている可能性があるため、
SAP-automation-samples を参照して予め確認する必要があります (下記例では、S4HANA_2021_ISS_v0003ms
)。
azureuser@installer:~$ cd sap-automation/
azureuser@installer:~/sap-automation$ export bom_base_name="S4HANA_2021_ISS_v0003ms"
azureuser@installer:~/sap-automation$ export s_user="<S ユーザーアカウント>"
azureuser@installer:~/sap-automation$ export s_password='<S ユーザーパスワード'
azureuser@installer:~/sap-automation$ export storage_account_access_key="<ストレージ アカウントキー>"
azureuser@installer:~/sap-automation$ export sapbits_location_base_path="https://<ストレージ アカウント名>.blob.core.windows.net/sapbits"
azureuser@installer:~/sap-automation$ export BOM_directory="/home/azureuser/SAP-automation-samples/SAP"
azureuser@installer:~/sap-automation$ export orchestration_ansible_user="azureuser"
azureuser@installer:~/sap-automation$ export playbook_path="/home/azureuser/sap-automation/deploy/ansible/playbook_bom_downloader.yaml"
azureuser@installer:~/sap-automation$ sudo ansible-playbook ${playbook_path} -e "bom_base_name=${bom_base_name}" -e "deployer_kv_name=dummy_value" -e "s_user=${s_user}" -e "s_password=${s_password}" -e "sapbits_access_key=${storage_account_access_key}" -e "sapbits_location_base_path=${sapbits_location_base_path}" -e "BOM_directory=${BOM_directory}" -e "orchestration_ansible_user=${orchestration_ansible_user}"
… (省略)...
PLAY RECAP ****************************************************************************************************************************
localhost : ok=674 changed=25 unreachable=0 failed=0 skipped=2238 rescued=0 ignored=4
azureuser@installer:~$
タスクが完了すると、以下のように archives
には SAP のダウンロードサイトより取得したアーカイブファイル等が格納され、
boms
配下には、SAP-automation-samples より取得したインストール時のテンプレートファイルが格納されます。
まとめ
Azure Center for SAP Solutions (ACSS) を用いた SAP on Azure の展開について、以下の点をご紹介してみました。
- ACSS の展開を行うネットワークインフラストラクチャーの構築
- ACSS インフラストラクチャーの展開
- SAP インストールメディアの準備
次回、"4. SAP インストール" を確認していきます。
Discussion