最后审核时间:2026年5月
使用原生 Terraform 构建 AZ-120 考试中的 AWS 服务——每次构建一个代码块,并紧扣考试领域。相同的代码可在 OpenTofu 上运行。
完成本实验后,您将使用纯 Terraform 预置 Azure SAP 参考架构的支架——包含应用和数据库子网的 VNet、一个邻近放置组用于锚定共置资源以实现低延迟 SAP <-> HANA 流量、一个用于应用层故障域的可用性集、一种用于 HANA 存储需求的高级 SSD 托管磁盘形态,以及一个用于 SAP 主机名的私有 DNS 区域。
我们有意不预置经 SAP 认证的大型虚拟机(Mv2 / E 系列,每月轻松超过 1000 美元)。一旦此支架存在,SAP 虚拟机就可以通过标准 azurerm_linux_virtual_machine 资源(适当调整大小)连接到可用性集 + 邻近放置组 + 磁盘形态。
将这些代码片段放入一个 main.tf 文件中,运行 terraform init,然后逐步 terraform apply。
>= 1.5 或 OpenTofu >= 1.6。az login)。实验室支架基本免费(无虚拟机):
仅磁盘闲置每月约 20 美元。如果您实际部署经 SAP 认证的虚拟机(Mv2 系列拥有 2-12 TB 内存,E 系列拥有 64+ GB 内存),预计每台虚拟机每月费用为 1,000–15,000 美元。除非您已签署真实的 Azure 预算承诺,否则请勿在实验室订阅中预置 SAP 虚拟机。
标准 Azure 开场。AZ-120 要求您选择一个经 SAP 认证并支持您所需的 M 系列虚拟机的区域——eastus2、westeurope、northeurope 是最安全的选择。
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
}
}
provider "azurerm" {
features {}
}
locals {
tags = {
Project = "certlabpro-az-120"
ManagedBy = "terraform"
Workload = "SAP"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-120-rg"
location = "eastus2"
tags = local.tags
}Azure 上的 SAP 架构将应用服务器(中等 CPU、适度内存)与 HANA 数据库(超大内存)分离到不同的子网中——通常在数据库层有更严格的 NSG。AZ-120 测试这种层分离:应用子网向用户(或负载均衡器)暴露 SAP 服务;数据库子网是内部专用,只能从应用层访问。
我们从一个 /16 VNet 中划分出 app 和 db 子网。NSG 超出本实验范围(添加起来会很简单——与 AZ-104 步骤 2 模式相同)。
resource "azurerm_virtual_network" "sap" {
name = "vnet-sap"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
address_space = ["10.0.0.0/16"]
tags = local.tags
}
resource "azurerm_subnet" "app" {
name = "app"
resource_group_name = azurerm_resource_group.main.name
virtual_network_name = azurerm_virtual_network.sap.name
address_prefixes = ["10.0.1.0/24"]
}
resource "azurerm_subnet" "db" {
name = "db"
resource_group_name = azurerm_resource_group.main.name
virtual_network_name = azurerm_virtual_network.sap.name
address_prefixes = ["10.0.2.0/24"]
}邻近放置组 (PPG) 是 AZ-120 设计和实施支持 SAP 的基础设施 中针对 SAP 应用服务器和 HANA 之间超低延迟的解决方案。PPG 共置的虚拟机位于同一数据中心(字面意思就是同一机架),提供 < 1ms 的虚拟机间延迟——这是 SAP HANA 应用通信所必需的。
可用性集 将虚拟机分组到单个数据中心内的不同故障域(独立的电源/网络线路)。PPG 用于延迟,可用性集用于容错——这种组合是 SAP 应用层的 AZ-120 参考形态。(对于区域可用性,Azure 现在还支持通过 PPG + 区域将所有虚拟机放置在同一可用性区域中——这是更现代的模式。)
resource "azurerm_proximity_placement_group" "sap" {
name = "ppg-sap"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
tags = local.tags
}
resource "azurerm_availability_set" "app" {
name = "avset-sap-app"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
platform_fault_domain_count = 2 # max for the region
platform_update_domain_count = 5
proximity_placement_group_id = azurerm_proximity_placement_group.sap.id
managed = true
tags = local.tags
}HANA 的存储对于生产工作负载需要高级 SSD 或更高(P 系列层级)——经 SAP 认证的 IOPS 和吞吐量规范假设 HANA 数据/日志使用 P30+ 磁盘。AZ-120 的 设计和实施支持 SAP 的基础设施 测试了磁盘层级选择作为一种持续成本/性能权衡。
我们预置一个 P10(128 GB)托管磁盘作为形态演示——小巧且便宜,但与生产环境 HANA 磁盘将使用的 Premium_LRS 存储账户类型相同。将其附加到虚拟机是单独的步骤(此处超出范围)。对于生产环境 HANA,您将使用 P30 / P40 磁盘并通过 LVM 将多个磁盘条带化以满足 SAP 所需的吞吐量。
resource "azurerm_managed_disk" "hana_data_shape" {
name = "disk-hana-data-shape"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
storage_account_type = "Premium_LRS" # SAP-certified storage tier
create_option = "Empty"
disk_size_gb = 128 # P10 size — demonstration only; production HANA uses P30+
tags = local.tags
}SAP 安装严重依赖稳定、可预测的主机名(sapha01、sapha02、sapdb01)——SAPHostAgent 和 HANA System Replication 都需要一致的主机名解析。AZ-120 的 设计和实施 Azure 计算和存储解决方案 将私有 DNS 作为 在不手动编辑 /etc/hosts 的情况下实现 VNet 内部主机名稳定性 的解决方案。
我们创建 SAP 区域并将其与步骤 2 中的 VNet 链接,并设置 registration_enabled = true,以便 SAP 虚拟机自动注册其主机名。有了这最后一块,支架就完成了:包含分层子网的 VNet、用于协同定位的 PPG、用于容错的可用性集、用于 HANA 存储的高级磁盘形态,以及用于主机名稳定性的私有 DNS。SAP 虚拟机通过标准 azurerm_linux_virtual_machine 资源部署到此基础架构中。
resource "azurerm_private_dns_zone" "sap" {
name = "sap.internal"
resource_group_name = azurerm_resource_group.main.name
tags = local.tags
}
resource "azurerm_private_dns_zone_virtual_network_link" "sap" {
name = "sap-vnet-link"
resource_group_name = azurerm_resource_group.main.name
private_dns_zone_name = azurerm_private_dns_zone.sap.name
virtual_network_id = azurerm_virtual_network.sap.id
registration_enabled = true
tags = local.tags
}terraform destroy 会拆除所有资源。高级托管磁盘(每月 20 美元)是唯一一个 24/7 计费的项目——请及时销毁。PPG 和可用性集仅是元数据,会立即销毁。没有记录的私有 DNS 区域会干净地销毁。
AZ-120 涵盖了本实验无法容纳的 SAP 特定内容——实际的 SAP 虚拟机(HANA 使用 Mv2 系列,每台每月 5,000-15,000 美元;应用服务器使用 E 系列)、HANA 大型实例(Azure 托管硬件上的裸机 HANA)、Azure 上的 SAP 高可用性 + 灾难恢复(ASCS/ERS Pacemaker 集群)、Azure NetApp Files(用于 /hana/shared 的高级 NFS)、用于混合连接的 ExpressRoute、用于跨区域灾难恢复的 Azure Site Recovery、用于 SAP HANA 的 Azure 备份、用于 SAP 解决方案的 Azure Monitor(SAP 专用监控插件),以及 Azure SAP 解决方案中心 (ACSS) 的预置自动化。
我们坚持只构建基础设施支架,因为 SAP 专用虚拟机 SKU 对于实验室订阅来说成本过高。上述支架(VNet、PPG、可用性集、高级磁盘、私有 DNS)正是每个 AZ-120 参考架构的起点——您的 SAP 虚拟机将插入到这个基础架构中。
有关 SAP 虚拟机特定模式,请参阅此认证页面上的浏览、手册和 Editorial 部分。