開始使用手動部署
除了 自動化部署 ,您也可以在 Azure 部署自動化架構 上手動部署 SAP。 使用此範例組態和範例參數檔案來開始使用。
提示
本指南僅涵蓋如何執行 手動 部署。 如果您想要快速開始使用,請參閱 自動化 部署指南 。
這些步驟會參考並使用 自動化架構的預設命名慣例 。 範例值也用於在整個程式碼中命名。 例如,部署器名稱為 DEMO-EUS2-DEP00-INFRASTRUCTURE
。 在此範例中,環境是示範 ( DEMO
),區域是 美國東部 2 ( EUS2
),而部署者虛擬網路為 DEP00
。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶。
- 具有建立服務主體許可權的 Azure 帳戶。
- 下載 Azure 環境中的 SAP 軟體 。
部署程式設定
開始之前, 請檢查您位於正確的 Azure 訂用帳戶 中。 然後,設定您的部署者:
- 下載並安裝 Terraform 。
- 在部署者上複製及設定自動化架構存放庫 。
- 初始化 Terraform
- 取得您的 SSH 金鑰 ,以用於部署的其餘部分。
檢查 Azure 訂用帳戶
確認您使用的是適當的 Azure 訂用帳戶:
登入 Azure 入口網站。
確認您位於您想要使用的訂用帳戶中:
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
您可以選擇性地簽出與主要分支不同的分支。 存放庫的主要分支是預設值。
將 取代
<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
擷取私密金鑰:
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 訂用帳戶識別碼。 也請以服務主體的名稱取代<sp-name>
。az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
請注意輸出,其中包含服務主體的相關資訊。 複製下欄欄位的值:
應用程式識別碼:
appId
。密碼:
password
。租使用者識別碼:
tenant
。
建立服務主體的角色指派。 請務必將 取代
<appId>
為您在上一個步驟中記下的應用程式識別碼。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 金鑰來登入部署者。 如果您使用 PuTTY 作為 SSH 用戶端,請先將 SSH 金鑰轉換成
.ppk
格式,然後再使用。流覽至您複製自動化架構存放庫的位置。
cd ~/Azure_SAP_Automated_Deployment/sap-automation
您可以選擇性地簽出與主要分支不同的分支。 存放庫的主要分支是預設值。
將 取代
<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>
為檔案之 SAP Library 部署.tfstate
中的儲存體帳戶名稱。 針對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>
為檔案之 SAP Library 部署.tfstate
中的儲存體帳戶名稱。 針對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 狀態檔案儲存體帳戶的資源識別碼。 針對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>
為檔案之 SAP Library 部署.tfstate
中的儲存體帳戶名稱。 針對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>
為檔案之 SAP Library 部署.tfstate
中的儲存體帳戶名稱。 針對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 發送器安裝 |
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 設定 |
若要執行劇本或多個劇本,請使用 命令 ansible-playbook
,如下所示。 請務必將所有預留位置值變更為您自己的資訊:
- 變更
<your-sapbits-path>
為 SAP 程式庫儲存體帳戶sapbits
的路徑。 - 變更
<azure-admin>
為您的 Azure 系統管理員使用者名稱。 - 變更
<ssh-key
> 為您想要使用的私密金鑰。 - 視需要變更設定底下
--extra-vars
的其他值。
如果您遇到問題,請確定您已 將 SAP 軟體 下載到 Azure 環境。
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