手動デプロイの概要
自動デプロイに加えて、SAP on Azure デプロイ自動化フレームワークを手動でデプロイすることもできます。 このサンプルの構成とサンプル パラメーター ファイルを使用して開始します。
ヒント
このガイドでは、手動によるデプロイを実行する方法についてのみ説明します。 すぐに開始する場合は、代わりに自動デプロイ ガイドに関する記事を参照してください。
これらの手順では、自動化フレームワークの既定の名前付け規則を参照して使用します。 コード全体での名前付けにも、値の例が使用されます。 たとえば、配置機能名は DEMO-EUS2-DEP00-INFRASTRUCTURE
です。 この例では、環境はデモ (DEMO
)、リージョンは米国東部 2 (EUS2
)、配置機能仮想ネットワークは DEP00
です。
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料のアカウントを作成できます。
- サービス プリンシパルを作成する権限を持つ Azure アカウント。
- Azure 環境に SAP ソフトウェアがダウンロードされている。
配置機能のセットアップ
開始する前に、正しい Azure サブスクリプションを使用していることを確認してください。 次に、配置機能をセットアップします。
- Terraform をダウンロードしてインストールします。
- 配置機能で自動化フレームワーク リポジトリを複製して構成します。
- Terraform を初期化します。
- デプロイの残りの部分で使用する SSH キーを取得します。
Azure サブスクリプションを確認する
適切な Azure サブスクリプションを使用していることを確認します。
Azure portal にサインインします。
使用するサブスクリプションがアクティブであることを確認します。
az account list --output=table | grep -i true
Terraform をダウンロードする
Terraform を環境にダウンロードします。
新しいディレクトリ
bin
を作成してそこに移動します。mkdir -p ~/bin; cd $_
適切な Terraform バイナリを取得します。 次に例を示します。
wget https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
Terraform バイナリを解凍します。 次に例を示します。
unzip terraform_0.14.7_linux_amd64.zip
Terraform のダウンロードを確認します。
hash terraform
SAP 自動デプロイ用のディレクトリを作成します。
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
リポジトリをセットアップする
自動化フレームワーク リポジトリを複製して構成します。
GitHub からリポジトリを複製します。
git clone https://github.com/Azure/sap-automation.git
sap-automation
フォルダーに移動しますcd ~/Azure_SAP_Automated_Deployment/sap-automation
必要に応じて、main ブランチとは別のブランチをチェックアウトします。 既定では、リポジトリの main ブランチが使用されます。
<branch>
を使用するブランチ名またはコミット ハッシュに置き換えます。git checkout <branch>
ブランチが想定されているリビジョンであることを確認します。
git rev-parse HEAD
Terraform を初期化する
作業ディレクトリを作成します。 ディレクトリ名は、既定の名前付け規則に従っている必要があります。 次に例を示します。
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
JSON パラメーター ファイルを作成します。
cat <<EOF > DEMO-EUS2-DEP00-INFRASTRUCTURE.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "management": { "name" : "DEP00", "address_space" : "10.0.0.0/25", "subnet_mgmt": { "prefix" : "10.0.0.64/28" }, "subnet_fw": { "prefix" : "10.0.0.0/26" } } } }, "options": { "enable_deployer_public_ip" : true }, "firewall_deployment" : true } EOF
Terraform を初期化します。
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
既定の名前付け規則に従って、Terraform 実行プランを作成します。
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Terraform 実行プランを適用して、リソースをデプロイします。
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
出力をメモします。
SSH キーを取得する
Terraform のデプロイからの出力を使用して、次のフィールドの値を確認します。
パブリック IP アドレス:
deployer_public_ip_address
。キー コンテナーのユーザー名:
deployer_kv_user_name
。秘密キー コンテナーの名前:
deployer_kv_prvt_name
。公開キーの名前:
deployer_public_key_secret_name
。秘密キーの名前:
deployer_private_key_secret_name
。
後処理スクリプトを実行します。
./post_deployment.sh
秘密 SSH キーを抽出します。
az keyvault secret show \ --vault-name DEMOEUS2DEP00userE27 \ --name DEMO-EUS2-DEP00-sshkey | \ jq -r .value > sshkey
公開 SSH キーを抽出します。
az keyvault secret show \ --vault-name DEMOEUS2DEP00userF6A \ --name DEMO-EUS2-DEP00-sshkey-pub | \ jq -r .value > sshkey.pub
秘密キーと公開キーのペアをダウンロードします。 Cloud Shell のメニューで、[ファイルのアップロード/ダウンロード]>[ダウンロード] を選択します。
サービス プリンシパルの構成
配置機能では、サービス プリンシパルを使用して、サブスクリプションにリソースをデプロイします。
Azure CLI にサインインします。
az login
サービス プリンシパルを作成する。
<subscription-id>
は、実際の Azure サブスクリプション ID に置き換えてください。 また、<sp-name>
をサービス プリンシパルの名前に置き換えます。az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
サービス プリンシパルに関する情報が含まれている出力を確認します。 次のフィールドの値をメモします。
アプリケーション ID:
appId
。パスワード:
password
。テナント ID:
tenant
。
サービス プリンシパルに対するロール割り当てを作成します。
<appId>
を前の手順でメモしたアプリケーション ID に置き換えてください。az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
次のように、サービス プリンシパルのキーをキー コンテナーに追加します。 プレースホルダーの値を前の手順でメモした情報に置き換えてください。
<environment>
を環境の名前 (DEMO
など) に置き換えます。az keyvault secret set --name "<environment>-subscription-id" --vault-name "<deployer_kv_user_name>" --value "<subscription-id>"; az keyvault secret set --name "<environment>-tenant-id" --vault-name "<deployer_kv_user_name>" --value "<tenant>"; az keyvault secret set --name "<environment>-client-id" --vault-name "<deployer_kv_user_name>" --value "<appId>"; az keyvault secret set --name "<environment>-client-secret" --vault-name "<deployer_kv_user_name>" --value "<password>";
ライブラリの構成
SSH クライアントと配置機能のセットアップ中に取得した SSH キーを使用して、配置機能にサインインします。 SSH クライアントとして PuTTY を使用する場合は、使用する前に、SSH キーを
.ppk
形式に変換します。自動化フレームワーク リポジトリを複製した場所に移動します。
cd ~/Azure_SAP_Automated_Deployment/sap-automation
必要に応じて、main ブランチとは別のブランチをチェックアウトします。 既定では、リポジトリの main ブランチが使用されます。
<branch>
を使用するブランチ名またはコミット ハッシュに置き換えます。git checkout <branch>
ブランチが想定されているリビジョンであることを確認します。
git rev-parse HEAD
作業ディレクトリを作成します。
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
JSON 構成ファイルを作成します。
cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2" }, "deployer": { "environment" : "DEMO", "region" : "eastus2", "vnet" : "DEP00" } } EOF
Terraform を初期化します。
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
既定の名前付け規則に従って、Terraform 実行プランを作成します。
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library
Terraform 実行プランを適用して、リソースをデプロイします。
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
デプロイを再初期化する
配置機能を再初期化する
SSH クライアントで配置機能にサインインしたままにします。 または、もう一度サインインします。
作成した作業ディレクトリに移動します。
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
backend
という名前の別のパラメーター ファイルを作成します。 ここでも、既定の名前付け規則に従います。resource_group_name
には、Terraform 状態ファイル (.tfstate
) を持つストレージ アカウントが配置されているリソース グループの名前を使用します。storage_account_name
では、<tfstate_storage_account_name>
を.tfstate
ファイルの SAP ライブラリ デプロイのストレージ アカウントの名前に置き換えます。key
では、配置機能のリソース グループ名と拡張子.terraform.tfstate
を組み合わせます。 次に例を示します。cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate" EOF
Terraform を再度初期化します。
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
「既存の状態を新しいバックエンドにコピーしますか」というメッセージが表示されたら、
yes
と入力します。ローカルの状態ファイルを削除します。
rm terraform.tfstate*
Terraform 実行プランを作成します。 ここでも、既定の名前付け規則に従います。 次に例を示します。
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Terraform 実行プランを適用します。 次に例を示します。
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
SAP ライブラリを再初期化する
SSH クライアントで配置機能にサインインしたままにします。 または、もう一度サインインします。
作成した作業ディレクトリに移動します。
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
backend
という名前の別のパラメーター ファイルを作成します。 ここでも、既定の名前付け規則に従います。resource_group_name
には、Terraform 状態ファイル (.tfstate
) を持つストレージ アカウントが配置されているリソース グループの名前を使用します。storage_account_name
では、<tfstate_storage_account_name>
を.tfstate
ファイルの SAP ライブラリ デプロイのストレージ アカウントの名前に置き換えます。key
では、配置機能のリソース グループ名と拡張子.terraform.tfstate
を組み合わせます。 次に例を示します。cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP_LIBRARY.terraform.tfstate" EOF
パラメーター ファイル
backend
の左波かっこ ({
) の直後に、新しいキーと値のペアを追加します。tfstate_resource_id
には、Terraform 状態ファイルのストレージ アカウントのリソース ID を使用します。deployer_tfstate_key
には、配置機能状態ファイルのキー名を使用します。 次に例を示します。{ "tfstate_resource_id" : "<identifier>", "deployer_tfstate_key" : "<key>", "infrastructure": { ... }
Terraform を再度初期化します。
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_library/
「既存の状態を新しいバックエンドにコピーしますか」というメッセージが表示されたら、
yes
と入力します。ローカルの状態ファイルを削除します。
rm terraform.tfstate*
Terraform 実行プランを作成します。 ここでも、既定の名前付け規則に従います。 次に例を示します。
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
Terraform 実行プランを適用します。 次に例を示します。
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
ワークロード仮想ネットワークをデプロイする
次に、SAP ワークロード仮想ネットワークをデプロイします。
SSH クライアントで配置機能にサインインしたままにします。 または、もう一度サインインします。
作業ディレクトリを作成します。 既定の名前付け規則に従います。
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
backend
というパラメーター ファイルを作成します。resource_group_name
には、Terraform 状態ファイル (.tfstate
) を持つストレージ アカウントが配置されているリソース グループの名前を使用します。storage_account_name
では、<tfstate_storage_account_name>
を.tfstate
ファイルの SAP ライブラリ デプロイのストレージ アカウントの名前に置き換えます。key
では、配置機能のリソース グループ名と拡張子.terraform.tfstate
を組み合わせます。 次に例を示します。cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate" EOF
Terraform を再度初期化します。
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Terraform 実行プランを作成します。 ここでも、既定の名前付け規則に従います。 次に例を示します。
terraform plan \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Terraform 実行プランを適用します。 次に例を示します。
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
SAP の展開単位
次に、SAP 展開単位を設定します。
SSH クライアントで配置機能にサインインしたままにします。 または、もう一度サインインします。
作業ディレクトリを作成します。 既定の名前付け規則に従います。
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
backend
という名前の別のパラメーター ファイルを作成します。resource_group_name
には、Terraform 状態ファイル (.tfstate
) を持つストレージ アカウントが配置されているリソース グループの名前を使用します。storage_account_name
では、<tfstate_storage_account_name>
を.tfstate
ファイルの SAP ライブラリ デプロイのストレージ アカウントの名前に置き換えます。key
では、配置機能のリソース グループ名と拡張子.terraform.tfstate
を組み合わせます。 次に例を示します。cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-X00.terraform.tfstate" EOF
次のように入力パラメーターを含む JSON パラメーター ファイルを作成します。 サンプルの値は必ず実際の値に置き換えてください。
cat <<EOF > DEMO-EUS2-SAP00-X00.json { "tfstate_resource_id" : "<resource-id>", "deployer_tfstate_key" : "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate", "landscape_tfstate_key" : "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate", "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "sap": { "name" : "SAP00", "subnet_db": { "prefix" : "0.0.0.0/28" }, "subnet_web": { "prefix" : "0.0.0.0/28" }, "subnet_app": { "prefix" : "0.0.0.0/27" }, "subnet_admin": { "prefix" : "0.0.0.0/27" } } } }, "databases": [ { "platform" : "HANA", "high_availability" : false, "size" : "S4Demo", "os": { "publisher" : "SUSE", "offer" : "sles-sap-12-sp5", "sku" : "gen2", "version" : "latest" } } ], "application": { "enable_deployment" : true, "sid" : "X00", "scs_instance_number" : "00", "ers_instance_number" : "10", "scs_high_availability" : false, "application_server_count" : 3, "webdispatcher_count" : 1, "authentication": { "type" : "key", "username" : "azureadm" } } } EOF
Terraform を再度初期化します。
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_system/
Terraform 実行プランを作成します。 ここでも、既定の名前付け規則に従います。 次に例を示します。
terraform plan \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Terraform 実行プランを適用します。 次に例を示します。
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Ansible の構成
Ansible プレイブックを実行してセットアップを構成します。 これらのプレイブックは、/sap-automation/deploy/ansible
内の自動化フレームワーク リポジトリにあります。
ファイル名 | 説明 |
---|---|
playbook_01_os_base_config.yaml |
基本オペレーティング システム (OS) の構成 |
playbook_02_os_sap_specific_config.yaml |
SAP 固有の OS 構成 |
playbook_03_bom_processing.yaml |
SAP 部品表 (BOM) 処理ソフトウェアのダウンロード |
playbook_04a_sap_scs_install.yaml |
SAP セントラル サービス (SCS) のインストール |
playbook_05a_hana_db_install.yaml |
SAP HANA データベースのインストール |
playbook_06a_sap_dbload.yaml |
データベース ローダー |
playbook_06b_sap_pas_install.yaml |
SAP プライマリ アプリケーション サーバー (PAS) のインストール |
playbook_06c_sap_app_install.yaml |
SAP アプリケーション サーバー のインストール |
playbook_06d_sap_web_install.yaml |
SAP Web Dispatcher のインストール |
playbook_06_00_00_pacemaker.yaml |
Pacemaker クラスターの構成 |
playbook_06_00_01_pacemaker_scs.yaml |
SCS 用の Pacemaker の構成 |
playbook_06_00_03_pacemaker_hana.yaml |
SAP HANA データベース用の Pacemaker の構成 |
1 つのプレイブックまたは複数のプレイブックを実行するには、次のように ansible-playbook
コマンドを使用します。 すべてのプレースホルダーの値を実際の情報に変更してください。
<your-sapbits-path>
の値を SAP ライブラリのストレージ アカウントsapbits
へのパスに変更します。<azure-admin>
を Azure 管理者のユーザー名に変更します。<ssh-key
> を使用する秘密 SSH キーに変更します。- 設定の必要に応じて、
--extra-vars
の他の値を変更します。
問題が発生した場合は、Azure 環境に SAP ソフトウェアをダウンロード済みであることを確認してください。
export ANSIBLE_HOST_KEY_CHECKING=False
# export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=Yes
# export ANSIBLE_KEEP_REMOTE_FILES=1
ansible-playbook \
--inventory new-hosts.yaml \
--user <azure-admin> \
--private-key <ssh-key> \
--extra-vars="{ \
\"bom_base_name\": \"HANA_2_00_053_v001\", \
\"download_templates\": \"false\", \
\"sapbits_location_base_path\": \"<your-sapbits-path>", \
\"target_media_location\": \"/usr/sap/install\", \
\"sap_sid\": \"X00\", \
\"hdb_sid\": \"HDB\" \
}" \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_00_transition_start_for_sap_install_refactor.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_01_os_base_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04a_sap_scs_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05a_hana_db_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06a_sap_dbload.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06b_sap_pas_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06c_sap_app_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06d_sap_web_install.yaml