開始使用手動部署

除了 自動化部署,您也可以 在 Azure 上手動部署 SAP deployment automation framework。 使用此範例設定和範例參數檔案開始使用。

提示

本指南僅涵蓋如何執行 手動 部署。 如果您想要快速開始使用,請改為參閱 自動化 部署指南

這些步驟會參考並使用 automation framework 的 預設命名慣例 。 範例值也用於在整個程式碼中進行命名。 例如,部署器名稱為 DEMO-EUS2-DEP00-INFRASTRUCTURE 。 在此範例中,環境是示範 (DEMO) 、區域是 美國東部 2 (EUS2) ,而部署器虛擬網路是 DEP00

必要條件

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

部署器設定

開始之前,請先 確認您處於正確的 Azure 訂用帳戶。 然後,設定您的部署程式:

  1. 下載並安裝 Terraform
  2. 複製並設定部署器上的 automation framework 存放庫
  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 $_
    

設定存放庫

複製並設定 automation framework 存放庫

  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] 功能表中,選取 [ Upload/Download> 檔案下載]。

服務主體設定

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

  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. 流覽至您複製 automation framework 儲存機制的位置。

    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若是,請使用資源群組的名稱,該資源群組中的儲存體帳戶 (.tfstate) 所在的 Terraform 狀態檔案。 若為,請將檔案的 SAP 程式庫部署 .tfstate 中的儲存體帳戶名稱取代 <tfstate_storage_account_name>storage_account_name 。 針對 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若是,請使用資源群組的名稱,該資源群組中的儲存體帳戶 (.tfstate) 所在的 Terraform 狀態檔案。 若為,請將檔案的 SAP 程式庫部署 .tfstate 中的儲存體帳戶名稱取代 <tfstate_storage_account_name>storage_account_name 。 針對 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若是,請使用資源群組的名稱,該資源群組中的儲存體帳戶 (.tfstate) 所在的 Terraform 狀態檔案。 若為,請將檔案的 SAP 程式庫部署 .tfstate 中的儲存體帳戶名稱取代 <tfstate_storage_account_name>storage_account_name 。 針對 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若是,請使用資源群組的名稱,該資源群組中的儲存體帳戶 (.tfstate) 所在的 Terraform 狀態檔案。 若為,請將檔案的 SAP 程式庫部署 .tfstate 中的儲存體帳戶名稱取代 <tfstate_storage_account_name>storage_account_name 。 針對 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 的 automation framework 存放庫。

檔案名稱 描述
playbook_01_os_base_config.yaml 基礎作業系統) 設定 (OS
playbook_02_os_sap_specific_config.yaml SAP 特定 OS 設定
playbook_03_bom_processing.yaml (BOM) 處理軟體下載的 SAP 物料教材
playbook_04a_sap_scs_install.yaml SAP central services (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

下一步