你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:部署 SAP 部署自动化框架以实现企业缩放

本教程介绍如何使用 SAP 部署自动化框架执行部署。 此示例使用 Azure Cloud Shell 部署控制平面基础结构。 Deployer 虚拟机 (VM) 创建其余的基础结构和 SAP HANA 配置。

将在本教程中执行以下任务:

  • 部署控制平面(部署基础设施和库)。
  • 部署工作负载区域(环境和系统)。
  • 下载/上传物料清单。
  • 配置标准和 SAP 特定的操作系统设置。
  • 安装 HANA 数据库。
  • 安装 SAP 中心服务 (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.

Deployer 是 SAP 自动化框架的执行引擎。 此预配置的 VM 用于执行 Terraform 和 Ansible 命令。

SAP 库为 Terraform 状态文件提供持久存储,为控制平面提供下载的 SAP 安装介质。

在 Terraform .tfvars 变量文件中配置 deployer 和库。 有关详细信息,请参阅配置控制平面

工作负载区域

SAP 应用程序通常具有多个部署层。 例如,可能具有开发层、质量保证层和生产层。 SAP 部署自动化框架将这些层称为工作负载区域。

Diagram that shows the workload zone.

SAP 工作负载区域包含 SAP VM 的网络和共享组件。 这些组件包括路由表、网络安全组以及虚拟网络。 环境提供了将部署划分到不同环境的机会。 有关详细信息,请参阅配置工作负载区域

系统部署由运行 SAP 应用程序的 VM 组成,包括 Web 层、应用层和数据库层。 有关详细信息,请参阅配置 SAP 系统

先决条件

SAP 部署自动化框架存储库在 GitHub 中提供。

需要部署 Azure Bastion 或使用 Secure Shell (SSH) 客户端连接到部署程序。 使用你觉得合适的任何 SSH 客户端。

查看 Azure 订阅配额

确保 Azure 订阅在所选区域具有针对 DdSV4 和 EdsV4 系列 SKU 的足够的核心报价。 每个 VM 系列大约有 50 个可用核心就足够了。

用于 SAP 软件下载的 S 用户帐户

下载 SAP 软件需要具有软件下载权限的有效 SAP 用户帐户(SAP 用户帐户或 S 用户帐户)。

设置 Cloud Shell

  1. 转到 Azure Cloud Shell

  2. 登录 Azure 帐户。

    az login
    

    对登录进行身份验证。 在收到提示之前请勿关闭窗口。

  3. 验证活动订阅并记录订阅 ID:

    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. (可选)验证 Terraform 的版本,以及 Cloud Shell 实例上可用的 Azure CLI。

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

    要运行自动化框架,请更新到以下版本:

创建服务主体

SAP 自动化部署框架使用服务主体进行部署。 为控制平面部署创建服务主体。 确保使用具有创建服务主体权限的帐户。

在选择服务主体的名称时,请确保该名称在 Azure 租户中是唯一的。

  1. 授予服务主体参与者和用户访问管理员权限。

    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. 复制输出详细信息。 确保保存 appIdpasswordTenant 的值。

    输出映射到以下参数。 可在后面的步骤中将这些参数与自动化命令一起使用。

    参数输入名称 输出名称
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. (可选)将“用户访问管理员”角色分配给服务主体。

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

重要

如果未将用户访问管理员角色分配给服务主体,则无法使用自动化来分配权限。

配置控制平面 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 IDApp registration password 的值。

输出映射到以下参数。 可在后面的步骤中将这些参数与自动化命令一起使用。

参数输入名称 输出名称
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 目录。 有六个子文件夹:CONFIGURATIONDEPLOYERLANDSCAPELIBRARYSYSTEMBOMS。 展开每个文件夹,查找区域部署配置文件。

  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 脚本来部署 deployer 和库。 这些部署部分构成了所选自动化区域的控制平面。

此部署将经历部署基础结构、刷新状态和将 Terraform 状态文件上传到库存储帐户的循环过程。 所有这些步骤都打包到单个部署脚本中。 脚本需要 Deployer 和库的配置文件的位置,以及一些其他参数。

例如,选择“欧洲西部”作为部署位置,如前面所述,其包含四字符名称 SECE。 示例 Deployer 配置文件 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

    Deployer 部署可能会运行大约 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 门户

    选择“资源组”。 查找 Deployer 基础结构和库的新资源组。 例如,你可能会看到 LAB-[region]-DEP05-INFRASTRUCTURELAB-[region]-SAP_LIBRARY

    部署程序和 SAP 库资源组的内容如下所示。

    Screenshot that shows deployer resources.

    Screenshot that shows library resources.

    Terraform 状态文件现在位于其名称包含 tfstate 的存储帐户中。 该存储帐户具有一个名为 tfstate 的容器,其中包含 Deployer 和库状态文件。 可在下面看到成功部署控制平面后 tfstate 容器的内容。

    Screenshot that shows the control plane Terraform state files.

常见问题和解决方案

下面提供了一些故障排除提示:

  • 如果在创建 Deployer 模块时出现以下错误,请确保在运行脚本时位于 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
    

连接到 Deployer VM

部署控制平面后,使用远程后端 azurerm 存储 Terraform 状态。 用于连接到 Deployer VM 的所有机密都可以在 Deployer 资源组的密钥保管库中获得。

连接到 Deployer VM:

  1. 登录 Azure 门户

  2. 选择或搜索“密钥保管库”。

  3. 在“密钥保管库”页上,找到 Deployer 密钥保管库。 该名称以 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 客户端(如 Visual Studio Code)连接到 Deployer VM。 使用之前记下的公共 IP 地址和下载的 SSH 密钥。 有关如何使用 Visual Studio Code 连接到 deployer 的说明,请参阅使用 Visual Studio Code 连接到 deployer。 如果使用的是 PuTTY,请首先使用 PuTTYGen 转换 SSH 密钥文件。

注意

默认用户名为 azureadm。

确保用于保存 SSH 密钥的文件可以使用正确的格式保存文件,即不使用回车符 (CR)。 使用 Visual Studio Code 或 Notepad++。

连接到 Deployer VM 后,可以使用物料清单 (BOM) 下载 SAP 软件。

在不使用公共 IP 时连接到 deployer VM

对于不使用公共 IP 连接的部署,不允许基于 Internet 的直接连接。 在这些情况下,可使用 Azure Bastion 跳转盒或从已连接到 Azure 虚拟网络的计算机执行下一步。

以下示例使用 Azure Bastion。

连接到 Deployer:

  1. 登录 Azure 门户

  2. 转到包含部署程序 VM 的资源组。

  3. 使用 Azure Bastion 连接到 VM。

  4. 默认用户名为 azureadm。

  5. 选择“来自 Azure Key Vault 的 SSH 私钥”。

  6. 选择包含控制平面的订阅。

  7. 选择部署程序密钥保管库。

  8. 从机密列表中选择以 -sshkey 结尾的机密。

  9. 连接到 VM。

其余任务必须在 Deployer 上执行。

保护控制平面的安全

控制平面是 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 库的存储帐户复制到部署程序 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. Deployer 资源组中密钥保管库的名称:

      • 根据前面的示例,资源组为 LAB-SECE-DEP05-INFRASTRUCTURE
      • 密钥保管库的名称包含 LABSECEDEP05user
    3. Deployer VM 的公共 IP 地址。 转到 Deployer 资源组,打开 Deployer 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}"
    

准备工作负载区域部署

连接到 Deployer VM 以执行以下步骤。 现在具有存储库副本。

部署工作负载区域

使用 install_workloadzone 脚本部署 SAP 工作负载区域。

  1. 在 Deployer VM 上,转到 Azure_SAP_Automated_Deployment 文件夹。

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/LAB-SECE-SAP04-INFRASTRUCTURE
    
  2. (可选)打开工作负载区域配置文件,根据需要更改网络逻辑名称以匹配网络名称。

  3. 开始部署工作负载区域。 此处需要你之前收集的详细信息:

    • Deployer tfstate 文件的名称(可在 tfstate 容器中找到)
    • tfstate 存储帐户的名称
    • Deployer 密钥保管库的名称

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 系统基础结构

连接到 Deployer VM 以执行以下步骤。 现在具有存储库副本。

转到 WORKSPACES/SYSTEM 文件夹,从存储库中复制要使用的示例配置文件。

部署 SAP 系统基础结构

工作负载区域完成后,可以部署 SAP 系统基础结构资源。 SAP 系统为 SAP 应用程序创建 VM 和支持组件。 使用 installer.sh 脚本部署 SAP 系统。

SAP 系统部署:

  • 数据库层,其部署数据库 VM 及其磁盘和 Azure 标准负载均衡器实例。 可在此层中运行 HANA 数据库或 AnyDB 数据库。
  • SCS 层,其部署客户定义数目的 VM 和 Azure 标准负载均衡器实例。
  • 应用层,其部署 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。 Deployer 密钥保管库名称将在名称中包含 LABSECEDEP05user。 可以使用此信息来配置 Deployer 的密钥保管库机密。

  1. 连接到 Deployer 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> 替换为 Deployer 密钥保管库名称,将 <sap-password> 替换为 SAP 密码。

    注意

    设置 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 playbook 下载 SAP 软件。 运行以下命令:

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    mkdir BOMS
    cd BOMS
    
    vi sap-parameters.yaml
    
  5. 使用名称 BOM 更新 bom_base_name。 将 <Deployer KeyVault Name> 替换为部署程序资源组 Azure 密钥保管库的名称。

    文件应类似于以下示例配置:

    
    bom_base_name:                 S42022SPS00_v0001ms
    deployer_kv_name:              <vaultName>
    BOM_directory:                 ${HOME}/Azure_SAP_Automated_Deployment/samples/SAP
    
    
  6. 运行 Ansible playbook 以下载软件。 运行 playbook 的一种方法是使用“下载器”菜单。 运行 download_menu 脚本。

    ${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/download_menu.sh
    
  7. 选择要运行的 playbook。

    1) BoM Downloader
    3) Quit
    Please select playbook:
    

    选择 playbook 1) BoM Downloader,将 BOM 文件中所述的 SAP 软件下载到存储帐户。 检查 sapbits 容器是否包含要安装的所有介质。

    可以使用配置菜单或直接从命令行运行 playbook。

    
    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 playbook 进行。

转到系统部署文件夹。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/

确保当前文件夹包含以下文件:sap-parameters.yamlL00_host.yaml

对于独立的 SAP S/4HANA 系统,有八个要按顺序运行的 playbook。 运行 playbook 的一种方法是使用配置菜单。

运行 configuration_menu 脚本。

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

Diagram that shows the SAP Deployment Automation Ansible configuration menu.

选择要执行的 playbook。

Playbook:配置基础操作系统

此 playbook 将在所有计算机上执行一般操作系统配置设置,包括配置软件存储库、包和服务。

可以使用配置菜单或从命令行运行 playbook。


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

Playbook:配置 SAP 特定操作系统

此 playbook 在所有计算机上执行 SAP 操作系统配置设置。 这些步骤包括创建卷组、文件系统、配置软件存储库、包和服务。

可以使用配置菜单或从命令行运行 playbook。


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

Playbook:BOM 处理

此 playbook 会将 SAP 软件下载到 SCS VM。

可以使用配置菜单或从命令行运行 playbook。


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

Playbook:SCS 安装

此 playbook 将安装 SAP 中心服务。 对于高可用性配置,playbook 还将安装 SAP ERS 实例并配置 Pacemaker。

可以使用配置菜单或从命令行运行 playbook。


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

Playbook:安装数据库实例

此 playbook 将安装数据库实例。

可以使用配置菜单或从命令行运行 playbook。


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

Playbook:加载数据库

此 playbook 将从主应用程序服务器调用数据库加载任务。

可以使用配置菜单或从命令行运行 playbook。


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

Playbook:设置数据库高可用性

此 playbook 配置数据库高可用性。 对于 HANA,HANA 数据库需要 HANA 系统复制和 Pacemaker。

可以使用配置菜单或从命令行运行 playbook。


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

Playbook:安装主应用程序服务器

此 playbook 将安装主应用程序服务器。 可以使用配置菜单或从命令行运行 playbook。


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

Playbook:安装应用程序服务器

此 playbook 将安装应用程序服务器。 可以使用配置菜单或从命令行运行 playbook。


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

Playbook:安装 Web Dispatcher

此 playbook 安装 Web 调度程序。 可以使用配置菜单或从命令行运行 playbook。

现已部署并配置独立的 HANA 系统。 如果需要配置高可用性 (HA) SAP HANA 数据库,请运行 HANA HA playbook。


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 系统基础结构资源。
  • 删除所有工作负载区域(环境)。
  • 删除控制平面。

从 Deployer VM 删除 SAP 基础结构资源和工作负载区域。 从 Cloud Shell 删除控制平面。

在开始之前,请登录 Azure 帐户。 然后,检查订阅是否正确。

删除 SAP 基础结构

转到 SYSTEM 文件夹中的 LAB-SECE-SAP01-L00 子文件夹。 然后运行以下命令:

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 工作负载区域

转到 LANDSCAPE 文件夹中的 LAB-XXXX-SAP01-INFRASTRUCTURE 子文件夹。 然后,运行以下命令:


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

验证所有资源是否都已清理。

下一步