Share via


教學課程:部署適用於企業規模的SAP部署自動化架構

本教學課程說明如何使用SAP部署自動化架構來執行部署。 此範例會使用 Azure Cloud Shell 來部署控制平面基礎結構。 部署者虛擬機 (VM) 會建立其餘的基礎結構和 SAP HANA 組態。

在本教學課程中,您會執行下列工作:

  • 部署控制平面(部署器基礎結構和連結庫)。
  • 部署工作負載區域(橫向和系統)。
  • 下載/上傳材料帳單。
  • 設定標準和 SAP 特定的作業系統設定。
  • 安裝 HANA 資料庫。
  • 安裝 SAP Central Services (SCS) 伺服器。
  • 載入 HANA 資料庫。
  • 安裝主要應用程式伺服器。

使用自動化架構在 Azure 上部署 SAP 有三個主要步驟:

  1. 準備區域。 您可以部署元件以支援指定 Azure 區域中的 SAP 自動化架構。 在此步驟中,您會:

    1. 建立部署環境。
    2. 建立 Terraform 狀態檔案的共享記憶體。
    3. 建立 SAP 安裝媒體的共享記憶體。
  2. 準備工作負載區域。 您可以部署工作負載區域元件,例如虛擬網路和金鑰保存庫。

  3. 部署系統。 您可以部署 SAP 系統的基礎結構。

部署自動化程式中有數個工作流程。 本教學課程著重於一個工作流程,以方便部署。 您可以使用 Bash 來部署此工作流程 SAP S4 HANA 獨立環境。 本教學課程說明部署的一般階層和不同階段。

環境概觀

SAP 部署自動化架構有兩個主要元件:

  • 部署基礎結構(控制平面)
  • SAP 基礎結構 (SAP 工作負載)

下圖顯示控制平面與應用平面之間的相依性。

Diagram that shows the DevOps tutorial infrastructure design.

架構會使用 Terraform 進行基礎結構部署,並使用 Ansible 進行作業系統和應用程式設定。 下圖顯示控制平面和工作負載區域的邏輯分隔。

Diagram that shows the SAP Deployment Automation Framework environment.

管理區域

管理區域包含部署其他環境的控制平面基礎結構。 部署管理區域之後,您很少需要重新部署。

Diagram that shows the control plane.

部署者是SAP自動化架構的執行引擎。 此預先設定的 VM 用於執行 Terraform 和 Ansible 命令。

SAP 連結 提供 Terraform 狀態檔案的永續性記憶體,以及控制平面下載的 SAP 安裝媒體。

您可以在 Terraform .tfvars 變數檔案中設定部署器和連結庫。 如需詳細資訊,請參閱 設定控制平面

工作負載區域

SAP 應用程式通常具有多個部署層。 例如,您可能有開發、品質保證和生產層。 SAP 部署自動化架構會呼叫這些層工作負載區域。

Diagram that shows the workload zone.

SAP 工作負載區域包含 SAP VM 的網路和共用元件。 這些元件包括路由表、網路安全組和虛擬網路。 環境可讓您將部署分成不同的環境。 如需詳細資訊,請參閱 設定工作負載區域

系統部署包含要執行 SAP 應用程式的 VM,包括 Web、應用程式和資料庫層。 如需詳細資訊,請參閱 設定 SAP 系統

必要條件

SAP 部署自動化架構存放庫可在 GitHub 上取得。

您必須部署 Azure Bastion,或使用安全殼層 (SSH) 用戶端來連線到部署者。 使用任何您熟悉的 SSH 用戶端。

檢閱 Azure 訂用帳戶配額

請確定您的 Azure 訂用帳戶在選取區域中有足夠的 DdSV4 和 EdsV4 系列 SKU 核心報價。 每個 VM 系列可用的大約 50 個核心應該就足夠了。

SAP 軟體下載的 S-用戶帳戶

需要具有軟體下載許可權的有效 SAP 用戶帳戶(SAP-User 或 S-User 帳戶),才能下載 SAP 軟體。

設定 Cloud Shell

  1. 前往 Azure Cloud Shell

  2. 登入您的 Azure 帳戶。

    az login
    

    驗證您的登入。 除非您收到提示,否則請勿關閉視窗。

  3. 驗證作用中的訂用帳戶,並記錄您的訂用帳戶標識碼:

    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. 您可以選擇性地驗證 Cloud Shell 實例上可用的 Terraform 和 Azure CLI 版本。

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

    若要執行自動化架構,請更新為下列版本:

建立服務主體

SAP 自動化部署架構會使用服務主體進行部署。 建立控制平面部署的服務主體。 請務必使用具有許可權的帳戶來建立服務主體。

當您為服務主體選擇名稱時,請確定該名稱在您的 Azure 租使用者中是唯一的。

  1. 提供服務主體參與者和使用者存取 管理員 istrator 許可權。

    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. 複製輸出詳細數據。 請務必儲存、 passwordTenant的值appId

    輸出會對應至下列參數。 您可以在後續步驟中使用這些參數,並搭配自動化命令。

    參數輸入名稱 輸出名稱
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. 或者,將使用者存取 管理員 istrator 角色指派給服務主體。

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

重要

如果您未將使用者存取 管理員 istrator 角色指派給服務主體,則無法使用自動化來指派許可權。

設定控制平面 Web 應用程式認證

在 SAP 自動化架構控制平面中,您可以選擇性地建立互動式 Web 應用程式,以協助您建立必要的組態檔。

Screenshot that shows the web app front page.

建立應用程式註冊

如果您想要使用 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 password的值App registration ID

輸出會對應至下列參數。 您可以在後續步驟中使用這些參數,並搭配自動化命令。

參數輸入名稱 輸出名稱
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展開目錄。 有六個子資料夾:CONFIGURATION、、DEPLOYERLANDSCAPELIBRARY、、 SYSTEMBOMS。 展開每個資料夾,以尋找區域部署組態檔。

  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 變數檔案位置,以供未來在部署期間編輯。

重要

請確定 符合dns_label您的 Azure 實例 私用 DNS。

部署控制平面

使用deploy_controlplane.sh腳本來部署部署器和連結庫。 這些部署部分組成所選自動化區域的控制平面。

部署會經歷部署基礎結構、重新整理狀態,以及將 Terraform 狀態檔案上傳至連結庫記憶體帳戶的迴圈。 這些步驟全都封裝成單一部署腳本。 腳本需要部署者和連結庫的組態檔位置,以及其他一些參數。

例如,選擇 [西歐 ] 作為部署位置,其名稱為四個字元 SECE,如先前所述。 範例部署程式組態檔 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 連結庫資源群組的內容如下所示。

    Screenshot that shows deployer resources.

    Screenshot that shows library resources.

    Terraform 狀態檔案現在會放在名稱包含 tfstate的記憶體帳戶中。 記憶體帳戶具有名為 tfstate 的容器,其中包含部署器和連結庫狀態檔案。 成功部署控制平面之後,容器的內容 tfstate 如下所示。

    Screenshot that shows the control plane Terraform state files.

常見問題與解決方案

以下是一些疑難排解提示:

  • 如果您在建立部署程式模組時收到下列錯誤,請確定您在執行文稿時位於 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 的所有秘密都可在部署者資源群組的密鑰保存庫中取得。

若要連線到您的部署者 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. 連線 透過任何 SSH 用戶端傳送至部署者 VM,例如 Visual Studio Code。 使用您稍早注意到的公用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 金鑰保存庫 選取 [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 Library 的記憶體帳戶複製到部署者 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 狀態檔案記憶體帳戶的名稱:

      • 在上述範例中,資源群組是 LAB-SECE-SAP_LIBRARY
      • 儲存器帳戶的名稱包含 labsecetfstate
    2. 部署者資源群組中的金鑰儲存庫名稱:

      • 在上述範例中,資源群組是 LAB-SECE-DEP05-INFRASTRUCTURE
      • 金鑰儲存庫的名稱包含 LABSECEDEP05user
    3. 部署者 VM 的公用 IP 位址。 移至部署者的資源群組,開啟部署者 VM,然後複製公用 IP 位址。

  2. 您需要收集下列資訊:

    1. 部署者狀態檔案的名稱位於連結庫資源群組底下:
      • 選取 [連結庫資源群組>狀態記憶體帳戶>容器]。>tfstate 複製部署者狀態檔的名稱。
      • 在上述範例中,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. 開始部署工作負載區域。 這裡需要您先前收集的詳細資料:

    • 部署程式 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 資料庫。
  • SCS 層,其會部署客戶定義的 VM 數目和 Azure Standard Load Balancer 實例。
  • 應用層,其會部署 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 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>
        sap_username=<sap-username>
    
    az keyvault secret set --name "S-Username" --vault-name $key_vault --value "${sap_username}";
    
  3. 使用 SAP 使用者帳戶的密碼新增秘密。 <vaultName>取代為您的部署者金鑰儲存庫名稱,並以您的 SAP 密碼取代 <sap-password>

    注意

    當您設定 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 金鑰保存庫名稱。

    您的檔案看起來應該類似下列範例組態:

    
    bom_base_name:                 S42022SPS00_v0001ms
    deployer_kv_name:              <vaultName>
    BOM_directory:                 ${HOME}/Azure_SAP_Automated_Deployment/samples/SAP
    
    
  6. 執行 Ansible 劇本以下載軟體。 您可以執行劇本的其中一種方式是使用下載 程式 功能表。 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 系統,有八個劇本可以依序執行。 您可以執行劇本的其中一種方式是使用組態功能表。

configuration_menu執行腳本。

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

Diagram that shows the SAP Deployment Automation Ansible configuration menu.

選擇要執行的劇本。

劇本:基本操作系統設定

此劇本會在所有計算機上執行一般操作系統元件設定,包括軟體存放庫、套件和服務設定。

您可以使用組態功能表或命令行來執行劇本。


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 Central Services。 針對高可用性組態,劇本也會安裝 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 發送器安裝

此劇本會安裝 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 基礎結構,您需要:

  • 拿掉 SAP 系統基礎結構資源。
  • 拿掉所有工作負載區域(橫向)。
  • 拿掉控制平面。

從部署者 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/

匯出下列兩個環境變數:

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

確認已清除所有資源。

後續步驟