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

为企业规模部署 SAP 部署自动化框架

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

使用自动化框架在Azure上部署 SAP 部署有三个主要步骤:

  1. 准备该区域。 部署组件以支持指定Azure区域中的 SAP 自动化框架。 在此步骤中,你将:

    1. 创建部署环境。
    2. 为 Terraform 状态文件创建共享存储。
    3. 为 SAP 安装媒体创建共享存储。
  2. 配置工作负荷区域。 部署工作负荷区域组件,例如虚拟网络和密钥保管库。

  3. 部署系统。 你部署 SAP 系统的基础结构。

部署自动化过程中有多个工作流。 本文重点介绍一个工作流,方便部署。 可以使用 Bash 部署此工作流(SAP S4 HANA 独立环境)。 以下部分介绍部署的一般层次结构和不同阶段。

先决条件

  • 一个Azure订阅。 如果没有帐户,请创建一个免费帐户
  • Azure CLI 2.5.0 或更高版本。
  • Terraform 1.5 或更高版本。
  • 用于克隆自动化框架存储库的 Git
  • 用于连接到部署程序 VM 的 SSH 客户端或 Azure Bastion
  • 有权创建服务主体并在目标订阅上分配角色(参与者和用户访问管理员)的Azure帐户。
  • 为所选区域中的 DdSV4 和 EdsV4 系列 SKU 提供足够的Azure订阅核心配额。 每个 VM 系列可用的大约 50 个核心应该足够。
  • 具有软件下载权限的有效 SAP 用户帐户(SAP-User 或 S-User 帐户),用于下载 SAP 软件。
  • GitHub上的 SAP 部署自动化框架存储库
  • (可选) 如果计划部署配置 Web 应用程序,.NET SDK

环境概述

SAP 部署自动化框架有两个主要组件:

  • 部署基础结构(控制平面)
  • SAP 基础结构 (SAP 工作负载)

下图显示了控制平面与应用程序平面之间的依赖关系。

显示基础结构设计的示意图。

该框架使用 Terraform 进行基础结构部署,Ansible 用于操作系统和应用程序配置。 下图显示了控制平面和工作负荷区域的逻辑分离。

显示 SAP 部署自动化框架环境的示意图。

管理区域

管理区域包含用于部署其他环境的控制平面基础设施。 部署管理区域后,很少需要重新部署。

显示控制平面的示意图。

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

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

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

工作负荷区域

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

用于显示工作负荷区域的图表。

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

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

设置 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 应用程序,以帮助创建所需的配置文件。

显示 Web 应用首页的屏幕截图。

创建应用注册

如果要使用 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目录。 有六个子文件夹:CONFIGURATION、、DEPLOYERLANDSCAPELIBRARYSYSTEMBOMS。 展开其中每个文件夹以查找区域部署配置文件。

  3. 在相应的子文件夹中查找 Terraform 变量文件。 例如, DEPLOYER Terraform 变量文件可能如以下示例所示:

    # The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
    environment = "LAB"
    # The location/region value is a mandatory field, it is used to control where the resources are deployed
    location = "swedencentral"
    
    # management_network_address_space is the address space for management virtual network
    management_network_address_space = "10.10.20.0/25"
    # management_subnet_address_prefix is the address prefix for the management subnet
    management_subnet_address_prefix = "10.10.20.64/28"
    
    # management_firewall_subnet_address_prefix is the address prefix for the firewall subnet
    management_firewall_subnet_address_prefix = "10.10.20.0/26"
    firewall_deployment = true
    
    # management_bastion_subnet_address_prefix is the address prefix for the bastion subnet
    management_bastion_subnet_address_prefix = "10.10.20.128/26"
    bastion_deployment = true
    
    # deployer_enable_public_ip controls if the deployer Virtual machines will have Public IPs
    deployer_enable_public_ip = true
    
    # deployer_count defines how many deployer VMs will be deployed
    deployer_count = 1
    
    # use_service_endpoint defines that the management subnets have service endpoints enabled
    use_service_endpoint = true
    
    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = false
    
    # enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
    enable_firewall_for_keyvaults_and_storage = false
    
    # public_network_access_enabled controls if storage account and key vaults have public network access enabled
    public_network_access_enabled = true
    
    

    请注意 Terraform 变量文件位置,以便在部署期间进行将来的编辑。

  4. 在相应的子文件夹中查找 SAP 库的 Terraform 变量文件。 例如, LIBRARY Terraform 变量文件可能如以下示例所示:

    # The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
    environment = "LAB"
    # The location/region value is a mandatory field, it is used to control where the resources are deployed
    location = "swedencentral"
    
    #Defines the DNS suffix for the resources
    dns_label = "lab.sdaf.contoso.net"
    
    # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
    use_private_endpoint = false
    

    请注意 Terraform 变量文件位置,以便在部署期间进行将来的编辑。

    重要

    确保 dns_label与Azure 专用 DNS实例匹配。

部署控制平面

使用 deploy_controlplane.sh 脚本部署部署器和库。 这些部署部分构成了所选自动化区域的控制平面。

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

例如,选择 西欧 作为部署位置,其名称 SECE为四个字符,如前所述。 示例部署程序配置文件 LAB-SECE-DEP05-INFRASTRUCTURE.tfvars 位于 ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/LAB-SECE-DEP05-INFRASTRUCTURE 文件夹中。

示例 SAP 库配置文件 LAB-SECE-SAP_LIBRARY.tfvars 位于 ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/LAB-SECE-SAP_LIBRARY 文件夹中。

  1. 设置服务主体的环境变量:

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appId>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenantId>"
    

    如果要从不属于部署网络的工作站或从Cloud Shell运行脚本,则可以使用以下命令设置环境变量,以便允许从 IP 地址进行连接:

    export TF_VAR_Agent_IP=<your-public-ip-address>
    

    如果要部署配置 Web 应用程序,还需要设置以下环境变量:

    export TF_VAR_app_registration_app_id=<appRegistrationId>
    export    TF_VAR_webapp_client_secret=<appRegistrationPassword>
    export                  TF_use_webapp=true
    
  2. 使用以下脚本创建部署器和 SAP 库,并将服务主体详细信息添加到部署密钥保管库:

    export            env_code="LAB"
    export           vnet_code="DEP05"
    export         region_code="SECE"
    
    export     DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    cd $CONFIG_REPO_PATH
    
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
        --deployer_parameter_file "${deployer_parameter_file}"         \
        --library_parameter_file "${library_parameter_file}"           \
        --subscription "${ARM_SUBSCRIPTION_ID}"                        \
        --spn_id "${ARM_CLIENT_ID}"                                    \
        --spn_secret "${ARM_CLIENT_SECRET}"                            \
        --tenant_id "${ARM_TENANT_ID}"
    

    如果遇上身份验证问题,请运行az logout以注销并清除token-cache。 然后运行 az login 以重新进行身份验证。

    等待自动化框架运行 Terraform 操作 planapply

    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 库资源组的内容。

    显示部署器资源的屏幕截图。

    显示库资源的屏幕截图。

    Terraform 状态文件现在放置在名称包含 tfstate的存储帐户中。 存储帐户具有一个名为部署器和库状态文件的容器 tfstate 。 成功部署控制平面后,tfstate 容器的内容如下所示。

    显示控制平面 Terraform 状态文件的屏幕截图。

常见问题和解决方案

下面是一些疑难解答提示:

  • 如果在创建部署器模块时收到以下错误,请确保在运行脚本时位于 WORKSPACES 目录中:

    Incorrect parameter file.
    The file must contain the environment attribute!!
    
  • 以下错误是暂时性的。 重新运行相同的命令。 deploy_controlplane.sh

    Error: file provisioner error
    ..
    timeout - last error: dial tcp
    
  • 如果在运行脚本 deploy_controlplane.sh后直接遇到身份验证问题,请运行以下命令:

    az logout
    
    az login
    

连接到部署程序 VM

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

若要连接到部署程序 VM,请执行以下操作:

  1. 登录到 Azure 门户

  2. 选择或搜索 Key Vaults

  3. “密钥保管库 ”页上,找到部署程序密钥保管库。 名称以 LAB[REGION]DEP05user. 开头。 如有必要,按 资源组位置进行筛选。

  4. 在左窗格中的 “设置” 部分,选择“ 机密”。

  5. 查找并选择包含 sshkey 的机密。 看起来可能很像 LAB-[REGION]-DEP05-sshkey

  6. 在密钥页面上,选择当前版本。 然后,复制机密值。

  7. 打开纯文本编辑器。 复制机密值。

  8. 保存保存 SSH 密钥的文件。 例如,使用 C:\\Users\\<your-username>\\.ssh

  9. 保存文件。 如果系统提示“ 另存为类型”,则选择“ 所有文件 ”(如果 SSH 不是选项)。 例如,使用 deployer.ssh

  10. 通过任何 SSH 客户端(例如Visual Studio Code)连接到部署程序 VM。 使用前面记录的公共 IP 地址和下载的 SSH 密钥。 有关如何使用 Visual Studio Code 连接到部署程序的说明,请参阅使用 Visual Studio Code0 连接到部署程序。 如果使用 PuTTY,请先使用 PuTTYGen 转换 SSH 密钥文件。

注释

默认用户名为 azureadm

确保用于保存 SSH 密钥的文件可以使用正确的格式(即不使用回车符(CR)字符保存文件。 使用Visual Studio Code或基本文本编辑器。

连接到部署程序 VM 后,可以使用材料清单(BOM)下载 SAP 软件。

请在不使用公共 IP 时连接到部署虚拟机

对于没有公共 IP 连接的部署,不允许通过 Internet 进行直接连接。 在这些情况下,可以使用Azure Bastion跳转框,也可以从连接到Azure虚拟网络的计算机执行下一步。

以下示例使用 Azure Bastion。

要连接到部署程序,请执行以下操作:

  1. 登录到 Azure 门户

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

  3. 使用Azure Bastion连接到 VM。

  4. 默认用户名为 azureadm

  5. 从 Azure 密钥保管库 中选择 SSH 私钥。

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

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

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

  9. 连接到 VM。

其余任务必须在部署器上执行。

保护控制平面

控制平面是 SAP 自动化框架中最重要的部分。 保护控制平面非常重要。 以下步骤可帮助你保护控制平面。

应更新控制平面 tfvars 文件以启用专用终结点,并阻止对存储帐户和密钥保管库的公共访问。

  1. 若要将控制平面配置文件复制到部署器 VM,可以使用脚本 sync_deployer.sh 。 登录进入部署程序 VM,并更新以下命令以使用您的 Terraform 状态存储帐户名称。 然后,运行以下脚本:

    terraform_state_storage_account=labsecetfstate###
    
    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    
    ../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname $terraform_state_storage_account --state_subscription $ARM_SUBSCRIPTION_ID
    

    此命令将 tfvars SAP 库的存储帐户中的配置文件复制到部署器 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 状态文件存储帐户的名称:

      1. 在前面的示例中,资源组为 LAB-SECE-SAP_LIBRARY.

      2. 存储帐户的名称包含 labsecetfstate

    2. 部署器资源组中密钥保管库的名称:

      1. 在前面的示例中,资源组为 LAB-SECE-DEP05-INFRASTRUCTURE.

      2. 密钥保管库的名称包含 LABSECEDEP05user

    3. 部署程序 VM 的公共 IP 地址。 转到部署者的资源组,打开部署器 VM,并复制公共 IP 地址。

  2. 需要收集以下信息:

    1. 部署程序状态文件的名称位于库资源组下:

      1. 选择 “库资源组>状态存储帐户>容器>tfstate”。 复制部署程序状态文件的名称。

      2. 在前面的示例中,Blob 的名称为 LAB-SECE-DEP05-INFRASTRUCTURE.terraform.tfstate.

  3. 如有必要,请注册服务主体。 对于此示例,不需要此步骤。

    首次实例化环境时,必须注册服务主体。 在此示例中,控制平面位于 LAB 环境中,工作负荷区域也位于 LAB该环境中。 因此,必须为 LAB 环境注册服务主体。

    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appID>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenant>"
    export           key_vault="<vaultName>"
    export            env_code="LAB"
    export         region_code="SECE"
    
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    export         CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    
    ${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/set_secrets.sh \
        --environment "${env_code}"                           \
        --region "${region_code}"                             \
        --vault "${key_vault}"                                \
        --subscription "${ARM_SUBSCRIPTION_ID}"               \
        --spn_id "${ARM_CLIENT_ID}"                           \
        --spn_secret "${ARM_CLIENT_SECRET}"                   \
        --tenant_id "${ARM_TENANT_ID}"
    

准备工作负荷区域部署

按照以下步骤连接到部署器 VM。 存储库的副本现在已存在。

部署工作负载区域

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

  1. 在部署程序 VM 上,转到 Azure_SAP_Automated_Deployment 该文件夹。

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

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

    • 部署程序tfstate 文件的名称(在tfstate 容器中找到)
    • tfstate存储帐户的名称
    • 部署程序密钥保管库的名称
    export     ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export           ARM_CLIENT_ID="<appId>"
    export       ARM_CLIENT_SECRET="<password>"
    export           ARM_TENANT_ID="<tenantId>"
    
    export       deployer_env_code="LAB"
    export            sap_env_code="LAB"
    export             region_code="SECE"
    
    export      deployer_vnet_code="DEP05"
    export               vnet_code="SAP04"
    
    export tfstate_storage_account="<storageaccountName>"
    export               key_vault="<vaultName>"
    
    export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
    export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
    
    az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
    
    cd "${CONFIG_REPO_PATH}/LANDSCAPE/${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE"
    
    parameterFile="${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
    deployerState="${deployer_env_code}-${region_code}-${deployer_vnet_code}-INFRASTRUCTURE.terraform.tfstate"
    
    $SAP_AUTOMATION_REPO_PATH/deploy/scripts/install_workloadzone.sh  \
        --parameterfile "${parameterFile}"                            \
        --deployer_environment "${deployer_env_code}"                 \
        --deployer_tfstate_key  "${deployerState}"                    \
        --keyvault "${key_vault}"                                     \
        --storageaccountname "${tfstate_storage_account}"             \
        --subscription "${ARM_SUBSCRIPTION_ID}"                       \
        --spn_id "${ARM_CLIENT_ID}"                                   \
        --spn_secret "${ARM_CLIENT_SECRET}"                           \
        --tenant_id "${ARM_TENANT_ID}"
    

    工作负荷区域部署应自动启动。

    等待部署完成。 新资源组将显示在Azure门户中。

准备部署 SAP 系统基础结构

按照以下步骤连接到部署器 VM。 存储库的副本现在已存在。

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

部署 SAP 系统基础结构

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

SAP 系统部署:

  • 数据库层,用于部署数据库 VM 及其磁盘及其Azure 标准负载均衡器实例。 可以在此层中运行 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. 部署程序密钥保管库名称包含在 LABSECEDEP05user 名称中。 使用此信息来配置部署者的密钥库机密。

  1. 按照以下步骤连接到部署器 VM。 存储库的副本现在已存在。

  2. 使用 SAP 用户帐户的用户名添加机密。 使用您的部署程序密钥保管库的名称替换 <vaultName> 。 此外,请将 <sap-username> 替换为您的 SAP 用户名。

    export key_vault=<vaultName>
    export sap_username=<sap-username>
    
    az keyvault secret set --name "S-Username" --vault-name $key_vault --value "${sap_username}";
    
  3. 使用 SAP 用户帐户的密码添加机密。 将 <vaultName> 替换为您的部署者密钥保管库名称,并将 <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_base_name 更新为名称 BOM。 将 <Deployer KeyVault Name> 替换为部署器资源组Azure 密钥保管库的名称。

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

    bom_base_name:                 S42022SPS00_v0001ms
    deployer_kv_name:              <vaultName>
    BOM_directory:                 ${HOME}/Azure_SAP_Automated_Deployment/samples/SAP
    
  6. 若要下载软件,请运行 Ansible 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 系统,有八个操作手册按顺序运行。 运行剧本的一种方法是使用配置菜单。

运行configuration_menu脚本。

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

显示 SAP 部署自动化 Ansible 配置菜单的关系图。

选择要执行的 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 专用操作系统配置

此配置脚本在所有计算机上进行 SAP 相关操作系统的配置设置。 这些步骤包括创建卷组和文件系统以及软件存储库、包和服务的配置。

可以使用配置菜单或命令行界面运行剧本。

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

export                            sap_sid=L00
export           ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to perform the SAP Specific Operating System configuration
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml

操作手册:物料清单 (BOM) 处理

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

可以使用配置菜单或命令行界面运行剧本。

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

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml

Playbook:SCS 安装指南

此操作指南安装 SAP Central Services。 对于高可用配置,playbook 还会安装 SAP ERS 实例并配置 Pacemaker。

可以使用配置菜单或命令行界面运行剧本。

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

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_00_00_sap_scs_install.yaml

操作手册:数据库实例安装

此 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

运行手册:数据库负载

此操作手册从主应用程序服务器触发数据库加载任务。

可以使用配置菜单或命令行界面运行剧本。

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。

可以使用配置菜单或命令行界面运行剧本。

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 将安装主应用程序服务器。 可以使用配置菜单或命令行界面运行剧本。

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:应用程序服务器安装

此部署指南安装应用服务器。 可以使用配置菜单或命令行界面运行剧本。

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

export                   sap_sid=L00
export  ANSIBLE_PRIVATE_KEY_FILE=sshkey

playbook_options=(
        --inventory-file="${sap_sid}_hosts.yaml"
        --private-key=${ANSIBLE_PRIVATE_KEY_FILE}
        --extra-vars="_workspace_directory=`pwd`"
        --extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
        --extra-vars="@sap-parameters.yaml"
        "${@}"
)

# Run the playbook to retrieve the ssh key from the Azure Key Vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml

# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_02_sap_app_install.yaml

操作手册:Web 调度程序安装步骤

此运行手册安装 Web 调度程序。 可以使用配置菜单或命令行界面运行剧本。

现已部署并配置独立的 HANA 系统。 如果需要配置高可用性(HA)SAP HANA数据库,请运行 HANA HA 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 基础结构,需要:

  1. 删除 SAP 系统基础结构资源。
  2. 删除所有工作负荷区域(环境)。
  3. 删除控制平面。

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

在开始之前,请登录到Azure帐户。 然后,检查你是否位于正确的订阅中。

删除 SAP 基础结构

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

export  sap_env_code="LAB"
export   region_code="SECE"
export sap_vnet_code="SAP04"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/${sap_env_code}-${region_code}-${sap_vnet_code}-L00

${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh                   \
  --parameterfile "${sap_env_code}-${region_code}-${sap_vnet_code}-L00.tfvars" \
  --type sap_system

删除 SAP 工作负荷区域

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

export  sap_env_code="LAB"
export   region_code="SECE"
export sap_vnet_code="SAP01"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE

${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh                                       \
      --parameterfile ${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE.tfvars \
      --type sap_landscape

删除控制平面

登录到 Cloud Shell

转到 WORKSPACES 文件夹。

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/

导出以下两个环境变量:

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export ARM_SUBSCRIPTION_ID="<subscriptionId>"

运行下面的命令:

export region_code="SECE"
export    env_code="LAB"
export   vnet_code="DEP05"

cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
${DEPLOYMENT_REPO_PATH}/deploy/scripts/remove_controlplane.sh                                                                                                \
    --deployer_parameter_file DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars  \
    --library_parameter_file LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars

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