使用开源工具自动安装 SAP 系统 - AWS 规范指引

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用开源工具自动安装 SAP 系统

Guilherme Sesterheim,Amazon Web Services

Summary

此模式介绍了如何使用开源工具创建以下资源,以自动安装 SAP 系统:

  • SAP S/4HANA 1909 数据库

  • 一个 SAP ABAP 中央服务 (ASCS) 实例

  • 一个 SAP 主应用程序服务器 (PAS) 实例

HashiCorp Terraform 创建 SAP 系统的基础架构,Ansible 配置操作系统 (OS) 并安装 SAP 应用程序。Jenkins 运行安装。

这种设置将 SAP 系统的安装变成了可重复的过程,有助于提高部署效率和质量。

注意

此模式中提供的示例代码适用于高可用性(HA)系统和非高可用性系统。

先决条件和限制

先决条件

限制

  • 仅 SAP S/4HANA 1909 针对此特定场景进行了全面测试。如果您使用其他版本的 SAP HANA,则需要修改此模式中的示例 Ansible 代码。

  • 此模式中的示例程序适用于 Mac OS 和 Linux 操作系统。部分命令只能在基于 Unix 的终端中运行。但是,您可通过使用不同的命令和 Windows 操作系统,以获得类似的结果。

产品版本

  • SAP S/4HANA 1909

  • Red Hat Enterprise Linux (RHEL) 8.2 或更高版本

架构

下图介绍了使用开源工具在 Amazon Web Services account 中自动安装 SAP 系统的示例工作流:

使用开源工具在 AWS 账户中自动安装 SAP 系统的示例工作流。

下图显示了如下工作流:

  1. Jenkins 通过运行 Terraform 和 Ansible 代码编排 SAP 系统安装的运行。

  2. Terraform 代码构建 SAP 系统基础设施。

  3. Ansible 代码配置操作系统和安装 SAP 应用程序。

  4. Amazon 实例上安装了 SAP S/4HANA 1909 数据库、ASCS 实例和包含所有已定义先决条件的 PAS 实例。 EC2

注意

此模式中的示例设置会自动在您的 AWS 账户中创建 Amazon S3 存储桶,以存储 Terraform 状态文件。

技术堆栈

  • Terraform

  • Ansible

  • Jenkins

  • SAP S/4HANA 1909 数据库

  • SAP ASCS 实例

  • SAP PAS 实例

  • Amazon EC2 

工具

AWS 服务

其他工具

  • HashiCorp Terraform 是一款命令行界面应用程序,可帮助您使用代码来配置和管理云基础架构和资源。

  • Ansible 是一款开源配置即代码 (CaC) 工具,可帮助实现应用程序、配置和 IT 基础设施的自动化。

  • Jenkins 是一款开源自动化服务器,它使开发人员能够构建、测试和部署其软件。

代码

此模式的代码可在 GitHub aws-install-sap-with-jenkins- ansible 存储库中找到。

操作说明

Task说明所需技能

将您的 SAP 媒体文件添加至 Amazon S3 存储桶。

创建包含所有 SAP 媒体文件的 Amazon S3 存储桶

重要

请务必遵守 Launch Wizard 文档S/4HANA 的 AWS Launch Wizard 文件夹层次结构。

云管理员

安装 VirtualBox。

VirtualBox由 Oracle 安装和配置。

DevOps 工程师

安装 Vagrant。

通过以下方式安装和配置 Vagrant。 HashiCorp

DevOps 工程师

配置 Amazon Web Services account。

  1. 确认您的 IAM 主体拥有访问密钥和私有密钥,并具有以下访问权限:

    • 只读权限:Amazon Route 53、AWS Key Management Service (AWS KMS)

    • 读写权限:亚马逊 S3、亚马逊弹性计算云(亚马逊)、亚马逊弹性文件系统(亚马逊 EFS EC2)、IAM、亚马逊、亚马逊 CloudWatch、亚马逊 DynamoDB

  2. 保存 IAM 主体访问密钥和私有密钥以供日后参考。

  3. 如果您还没有 Route 53 私有托管区域,请创建一个。保存区域名称(例如 sapteam.net)以供日后参考。

  4. 在Amazon Marketplace 上订阅 Red Hat Enterprise Linux for SAP with HA and Update Services 8.2. 保存 AMI ID(例如 ami-0000000以供日后参考。

  5. 创建 AWS KMS 客户托管密钥。保存 KMS 密钥的 Amazon 资源名称(ARN),以备日后参考。

    注意

    以下是 AWS KMS 客户托管式密钥 ARN 的示例:arn:aws:kms:us-east-1:123412341234:key/uuid

  6. 创建 SSH 密钥对。保存密钥对的名称和 .pem 文件,以供日后参考。

  7. 创建一个 Amazon EC2 安全组,允许从你安装 Jenkins 的主机名在端口 22 上进行 SSH 连接。保存安全组 ID,以供日后参考。

    注意

    主机名很有可能是 localhost

常规 AWS
Task说明所需技能

从中克隆代码存储库 GitHub。

在上克隆 aws-install-sap-with-jenkins-an sible 存储库。 GitHub

DevOps 工程师

启动 Jenkins 服务。

打开 Linux 终端。然后,导航至包含克隆代码存储库文件夹的本地文件夹,并运行以下命令:

sudo vagrant up
注意

Jenkins 启动大约需要 20 分钟。成功后,该命令会返回服务已启动并正在运行消息。

DevOps 工程师

在 Web 浏览器中打开并登录 Jenkins。

  1. 在 Web 浏览器中输入 http://localhost:5555。打开 Jenkins。

  2. 登录 Jenkins 时,使用 admin 作为用户名,使用 my_secret_pass_from_vault 作为密码。

DevOps 工程师

配置 SAP 系统安装参数。

  1. 在 Jenkins 中,选择管理 Jenkins。然后,选择管理凭证。将显示您可配置的凭证变量列表。

  2. 配置以下所有凭证变量:

  • 对于 AWS_ACCOUNT_CRED ENTIALS,请输入您的 IAM 委托人的访问密钥 ID 和私有访问密钥 ID。

  • 对于 AMI_ID,请输入 Red Hat Enterprise Linux for SAP with HA and Update Services 8.2 AMI 的 AMI ID。

  • 对于 KMS_KEY_ARN,请输入您的 AWS KMS 客户托管密钥 ARN。

  • SSH_KEYPAIR_NAME,请输入 SSH 密钥对名称,而不必输入 .pem 文件类型。

  • 对于 SSH_KEYPAIR_FILE,请输入密钥对的 .pem 文件(例如mykeypair.pem)的全名。请务必将密钥对的 .pem 文件上传至 Jenkins。

  • 对于 S3_ROOT_FOLDER_INSTALL_FILES,输入包含 SAP 媒体文件的 Amazon S3 存储桶的名称和文件夹(如果适用)(例如 s3: //S4H1909)。my-media-bucket

  • 对于 PRIVATE_DNS_ZONE_NAME,请输入 Route 53 私有托管区的名称(例如 myprivatecompanyurl.net)。

  • 对于 VPC_ID,请输入您要在其中创建 SAP 资源的 Amazon VPC 的 VPC ID (例如 vpc-12345)。

  • 对于 SUBNET_IDS, IDs 如果您在测试环境中工作,请输入两个公有子网(用于未来的 HA 功能)。如果您在生产环境中工作,最佳实践是在堡垒主机上使用两个私有子网。

  • SECURITY_GROUP_ID 中,输入允许从你安装 Jenkins 的主机名在端口 22 上进行 SSH 连接的亚马逊 EC2 安全组的 ID。

注意

您可根据您的使用案例按需配置其他非必需参数。例如,您可以更改实例的 SAP 系统 ID (SID)、SAP 系统的默认密码、名称和标签。所有必需变量的名称开头都有(必填)

AWS 系统管理员、 DevOps 工程师

运行您的 SAP 系统安装。

  1. 在 Jenkins 中,选择 Jenkins Home。然后选择 SAP hana+ascs+Pas 3 实例

  2. 选择启动并安装。然后,选择 IAM

  3. 选择立即构建

有关管道操作步骤的信息,请参阅 AWS Blog 上的使用开源工具自动化 SAP 安装中的了解管道操作步骤部分。

注意

如果发生错误,请将光标移至所示红色错误框,然后选择日志。显示错误管道操作步骤日志。大多数错误的原因是参数设置不正确。

DevOps 工程师,AWS 系统管理员

相关资源