共用方式為


開始手動部署

除了自動部署之外,您也可以在 Azure Deployment Automation Framework 手動部署 SAP。 使用這個範例設定和樣本參數檔案,開始手動部署。

提示

本指南僅說明如何執行手動部署。 若想快速入門,請參閱自動化部署指南

這些步驟會參考並使用自動化架構的預設命名慣例。 範例值也用於整個程式碼的命名。 舉例而言,部署器名稱是 DEMO-EUS2-DEP00-INFRASTRUCTURE。 在這個範例中,環境是示範 (DEMO),區域是 [美國東部 2] (EUS2),部署器虛擬網路是 DEP00

必要條件

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶
  • 擁有建立服務主體權限的 Azure 帳戶。
  • 在 Azure 環境中下載 SAP 軟體

部署器設定

開始之前,請檢查您是否處於正確的 Azure 訂用帳戶。 然後設定您的部署器:

  1. 下載並安裝 Terraform
  2. 在部署器上複製並設定自動化架構存放庫
  3. 初始化 Terraform
  4. 取得 SSH 金鑰,以在部署的其餘部分中使用。

檢查 Azure 訂用帳戶

確認您使用的是正確的 Azure 訂用帳戶:

  1. 登入 Azure 入口網站

  2. 開啟 Azure Cloud Shell

  3. 請檢查您是否處於要使用的訂用帳戶中:

    az account list --output=table | grep -i true
    
  4. 如有必要,請將使用中的訂用帳戶變更為您要使用的訂用帳戶。

下載 Terraform

將 Terraform 下載到您的環境:

  1. 建立並瀏覽到新的目錄 bin

    mkdir -p ~/bin; cd $_
    
  2. 擷取適當的 Terraform 二進位。 例如:

    wget  https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
    
  3. 將 Terraform 二進位解壓縮。 例如:

    unzip terraform_0.14.7_linux_amd64.zip
    
  4. 確認您的 Terraform 下載:

    hash terraform
    
  5. 為 SAP 自動化部署建立一個目錄。

    mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
    

設定存放庫

複製並設定自動化架構存放庫

  1. 從 GitHub 複製存放庫:

    git clone https://github.com/Azure/sap-automation.git
    
  2. 瀏覽至 sap-automation 資料夾。

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. 您可以選擇性地簽出與主要分支不同的分支。 預設是存放庫的主分支。

    1. 請將 <branch> 取代成分支名稱,或認可您要使用的雜湊。

      git checkout <branch>
      
    2. 請檢查分支是否為所需的修訂版。

      git rev-parse HEAD
      

初始化 Terraform

  1. 建立工作目錄。 目錄名稱必須遵守預設命名慣例。 例如:

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
    
  2. 建立 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
    
  3. 初始化 Terraform。

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  4. 建立遵守預設命名慣例的 Terraform 執行計畫。

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                    \
                    ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  5. 套用 Terraform 執行計畫以部署資源。

    terraform apply --auto-approve                                                    \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                    \
                    ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  6. 注意輸出。

取得 SSH 金鑰

  1. 使用 Terraform 部署的輸出,並記下以下欄位的值。

    1. 公開 IP 位址:deployer_public_ip_address

    2. 金鑰保存庫的使用者名稱:deployer_kv_user_name

    3. 私密金鑰保存庫的名稱:deployer_kv_prvt_name

    4. 公開金鑰的名稱:deployer_public_key_secret_name

    5. 私密金鑰的名稱:deployer_private_key_secret_name

  2. 執行後置處理指令碼。

    ./post_deployment.sh
    
  3. 擷取私密 SSH 金鑰:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userE27   \
      --name DEMO-EUS2-DEP00-sshkey     | \
      jq -r .value > sshkey
    
    
  4. 擷取公開 SSH 金鑰:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userF6A   \
      --name DEMO-EUS2-DEP00-sshkey-pub | \
      jq -r .value > sshkey.pub
    
    
  5. 下載私密和公開金鑰組。 在 Cloud Shell 選單中,選取 [上傳/下載檔案]>[下載]

服務主體設定

部署器使用服務主體將資源部署到訂用帳戶。

  1. 登入 Azure CLI。

    az login
    
  2. 建立服務主體。 請務必將 <subscription-id> 取代成您的 Azure 訂用帳戶識別碼。 亦請將 <sp-name> 取代成服務主體的名稱。

    az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
    
  3. 請注意,輸出包含服務主體的相關資訊。 複製以下欄位的值:

    1. 應用程式識別碼:appId

    2. 密碼:password

    3. 租用戶識別碼:tenant

  4. 為服務主體建立角色指派。 請務必將 <appId> 取代成上一個步驟中提供的應用程式識別碼。

    az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
    
  5. 將服務主體的金鑰新增至金鑰保存庫,如下所示。 請務必將預留位置值取代成上一個步驟中提供的資訊。 請將 <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>";
    

程式庫設定

  1. 使用您的 SSH 用戶端以及您在部署器設定期間擷取到的 SSH 金鑰來登入部署器。 若使用 PuTTY 做為 SSH 用戶端,請在使用之前,將 SSH 金鑰轉換成 .ppk 格式。

  2. 瀏覽到您複製自動化架構存放庫的位置。

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. 您可以選擇性地簽出與主要分支不同的分支。 預設是存放庫的主分支。

    1. 請將 <branch> 取代成分支名稱,或認可您要使用的雜湊。

      git checkout <branch>
      
    2. 請檢查分支是否為所需的修訂版。

      git rev-parse HEAD
      
  4. 建立工作目錄。

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
    
  5. 建立 JSON 設定檔。

    cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json
    {
      "infrastructure": {
        "environment"                         : "DEMO",
        "region"                              : "eastus2"
      },
      "deployer": {
        "environment"                         : "DEMO",
        "region"                              : "eastus2",
        "vnet"                                : "DEP00"
      }
    }
    EOF
    
  6. 初始化 Terraform。

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
    
  7. 建立遵守預設命名慣例的 Terraform 執行計畫。

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP_LIBRARY.json                           \
                ../../../sap-automation/deploy/terraform/bootstrap/sap_library
    
    
  8. 套用 Terraform 執行計畫以部署資源。

    terraform apply --auto-approve                                                  \
                --var-file=DEMO-EUS2-SAP_LIBRARY.json                           \
                ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
    
    

重新初始化部署

重新初始化部署器SAP 程式庫

重新初始化部署器

  1. 在 SSH 用戶端中,讓部署器保持登入。 或者重新登入。

  2. 瀏覽到您已建立的工作目錄。

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
    
  3. 建立另一個名為 backend 的參數檔案。 同樣地,請遵循預設命名慣例。 對於 resource_group_name,請使用包含 Terraform 狀態檔案 (.tfstate) 的儲存體帳戶所在資源群組的名稱。 對於 storage_account_name,請將 <tfstate_storage_account_name> 取代成 SAP 程式庫部署中 .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
    
  4. 再次初始化 Terraform。

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  5. 若出現提示您是否要將現有狀態複製到新的後端?,請輸入 yes

  6. 移除本機狀態檔案。

    rm terraform.tfstate*
    
  7. 建立 Terraform 執行計畫。 同樣地,請遵循預設命名慣例。 例如:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  8. 套用 Terraform 執行計畫。 例如:

    terraform apply --auto-approve                                                  \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    

重新初始化 SAP 程式庫

  1. 在 SSH 用戶端中,讓部署器保持登入。 或者重新登入。

  2. 瀏覽到您已建立的工作目錄。

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
    
  3. 建立另一個名為 backend 的參數檔案。 同樣地,請遵循預設命名慣例。 對於 resource_group_name,請使用包含 Terraform 狀態檔案 (.tfstate) 的儲存體帳戶所在資源群組的名稱。 對於 storage_account_name,請將 <tfstate_storage_account_name> 取代成 SAP 程式庫部署中 .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
    
  4. 在參數檔案 backend 的左括弧 ({) 之後,立即新增機碼值組。 對於 tfstate_resource_id,請使用 Terraform 狀態檔案儲存體帳戶的資源識別碼。 對於 deployer_tfstate_key,請使用部署器狀態檔案的金鑰名稱。 例如:

    {
        "tfstate_resource_id"                   : "<identifier>",
        "deployer_tfstate_key"                  : "<key>",
        "infrastructure": {
            ...
    }
    
  5. 再次初始化 Terraform。

    terraform init  --backend-config backend                                          \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  6. 若出現提示您是否要將現有狀態複製到新的後端?,請輸入 yes

  7. 移除本機狀態檔案。

    rm terraform.tfstate*
    
  8. 建立 Terraform 執行計畫。 同樣地,請遵循預設命名慣例。 例如:

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-SAP_LIBRARY.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  9. 套用 Terraform 執行計畫。 例如:

    terraform apply --auto-approve                                                    \
                    --var-file=DEMO-EUS2-SAP_LIBRARY.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    

部署工作負載虛擬網路

接著部署 SAP 工作負載虛擬網路。

  1. 在 SSH 用戶端中,讓部署器保持登入。 或者重新登入。

  2. 建立工作目錄。 遵循預設命名慣例。

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
    
  3. 建立名為 backend 的參數檔案。 對於 resource_group_name,請使用包含 Terraform 狀態檔案 (.tfstate) 的儲存體帳戶所在資源群組的名稱。 對於 storage_account_name,請將 <tfstate_storage_account_name> 取代成 SAP 程式庫部署中 .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
    
  4. 再次初始化 Terraform。

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  5. 建立 Terraform 執行計畫。 同樣地,請遵循預設命名慣例。 例如:

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json                  \
                ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  6. 套用 Terraform 執行計畫。 例如:

    terraform apply --auto-approve                                                  \
                    --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_landscape/
    

SAP 部署單位

接著設定 SAP 部署單位。

  1. 在 SSH 用戶端中,讓部署器保持登入。 或者重新登入

  2. 建立工作目錄。 遵循預設命名慣例。

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
    
  3. 建立另一個名為 backend 的參數檔案。 對於 resource_group_name,請使用包含 Terraform 狀態檔案 (.tfstate) 的儲存體帳戶所在資源群組的名稱。 對於 storage_account_name,請將 <tfstate_storage_account_name> 取代成 SAP 程式庫部署中 .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
    
  4. 使用輸入參數建立 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
    
  5. 再次初始化 Terraform。

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
    
  6. 建立 Terraform 執行計畫。 同樣地,請遵循預設命名慣例。 例如:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-SAP00-X00.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
  7. 套用 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-Specific 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> 變更為您要使用的私密 SSH 金鑰。
  • 視需要在 --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

下一步