開始使用手動部署

除了 自動化部署 ,您也可以在 Azure 部署自動化架構 上手動部署 SAP。 使用此範例組態和範例參數檔案來開始使用。

提示

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

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

必要條件

部署程式設定

開始之前, 請檢查您位於正確的 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. 擷取私密金鑰:

    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 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
    
  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 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
    
  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 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
    
  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 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
    
  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 特定的 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

下一步