你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
配置控制平面
SAP 部署自动化框架的控制平面包含以下组件:
- 部署程序
- SAP 库
部署程序
部署器是 SAP 部署自动化框架的执行引擎。 它是一个预配置的虚拟机 (VM),用于运行 Terraform 和 Ansible 命令。 使用 Azure DevOps 时,部署器是一个自托管代理。
部署器的配置在 Terraform tfvars
变量文件中执行。
如果你要为部署器使用现有资源组,请使用部署器的 tfvars 文件中的 resource_group_arm_id
参数提供该资源组的 Azure 资源 ID。 如果未定义该参数,则会使用默认命名创建资源组。 可以使用 resource_group_name
参数更改默认名称。
Terraform 参数
此表显示 Terraform 参数。 如果不使用部署脚本,则需要手动输入这些参数。
变量 | 说明 | 类型 |
---|---|---|
tfstate_resource_id |
包含 Terraform 状态文件的 SAP 库中存储帐户的 Azure 资源标识符 | 必需 |
环境参数
下表展示了用于定义资源命名的参数。
变量 | 说明 | 类型 | 说明 |
---|---|---|---|
environment |
控制平面的标识符(最多 5 个字符)。 | 必需 | 例如,对于生产环境,此标识符为 PROD ,对于非生产环境,此标识符为 NP 。 |
location |
要部署到的 Azure 区域。 | 必须 | 使用小写。 |
codename |
用于对资源命名的附加组件。 | 可选 | |
name_override_file |
名称重写文件。 | 可选 | 请参阅自定义命名。 |
place_delete_lock_on_resources |
对关键资源施加删除锁。 | 可选 |
资源组
下表展示了用于定义资源组的参数。
变量 | 说明 | 类型 |
---|---|---|
resourcegroup_name |
要创建的资源组的名称 | 可选 |
resourcegroup_arm_id |
现有资源组的 Azure 资源标识符 | 可选 |
resourcegroup_tags |
要与资源组关联的标记 | 可选 |
网络参数
自动化框架支持创建虚拟网络和子网 (Green field) 或使用现有虚拟网络和现有子网 (Brown field) 或 Green field 和 Brown field 的组合:
- Green field 方案:必须指定虚拟网络地址空间和子网地址前缀。
- Brown field 方案:必须指定虚拟网络和子网的 Azure 资源标识符。
建议的虚拟网络地址空间的 CIDR 为 /27,这允许 32 个 IP 地址的空间。 CIDR 值 /28 只允许 16 个 IP 地址。 如果要包含 Azure 防火墙,请使用 CIDR 值 /25,因为 Azure 防火墙需要 /26 的范围。
建议的管理子网的 CIDR 值为 /28,这允许 16 个 IP 地址。 建议的防火墙子网的 CIDR 值为 /26,这允许 64 个 IP 地址。
下表展示了网络参数。
变量 | 说明 | 类型 | 说明 |
---|---|---|---|
management_network_name |
要将部署器部署到的虚拟网络的名称 | 可选 | 用于绿色字段部署 |
management_network_logical_name |
网络的逻辑名称 (DEV-WEEU-MGMT01-INFRASTRUCTURE) | 必需 | |
management_network_arm_id |
虚拟网络的 Azure 资源标识符 | 可选 | 用于棕色字段部署 |
management_network_address_space |
虚拟网络的地址范围 | 必需 | 用于绿色字段部署 |
management_subnet_name |
子网的名称 | 可选 | |
management_subnet_address_prefix |
子网的地址范围 | 必需 | 用于绿色字段部署 |
management_subnet_arm_id |
子网的 Azure 资源标识符 | 必需 | 用于棕色字段部署 |
management_subnet_nsg_name |
网络安全组的名称 | 可选 | |
management_subnet_nsg_arm_id |
网络安全组的 Azure 资源标识符 | 必需 | 用于棕色字段部署 |
management_subnet_nsg_allowed_ips |
要添加到 Azure 防火墙的允许的 IP 地址范围 | 可选 | |
management_firewall_subnet_arm_id |
Azure 防火墙子网的 Azure 资源标识符 | 必需 | 用于棕色字段部署 |
management_firewall_subnet_address_prefix |
子网的地址范围 | 必需 | 用于绿色字段部署 |
management_bastion_subnet_arm_id |
Azure Bastion 子网的 Azure 资源标识符 | 必需 | 用于棕色字段部署 |
management_bastion_subnet_address_prefix |
子网的地址范围 | 必需 | 用于绿色字段部署 |
webapp_subnet_arm_id |
Web 应用子网的 Azure 资源标识符 | 必需 | 用于棕色字段部署 |
webapp_subnet_address_prefix |
子网的地址范围 | 必需 | 用于绿色字段部署 |
use_private_endpoint |
使用专用终结点。 | 可选 | |
use_service_endpoint |
为子网使用服务终结点。 | 可选 |
注意
对 Web 应用使用现有子网时,该子网必须为空,且与所部署的资源组位于同一区域中,并委托给 Microsoft.Web/serverFarms。
部署器虚拟机参数
下表显示了与部署器 VM 相关的参数。
变量 | 说明 | 类型 |
---|---|---|
deployer_size |
定义要使用的 VM SKU,默认值:Standard_D4ds_v4 | 可选 |
deployer_count |
定义部署器数量 | 可选 |
deployer_image |
定义要使用的 VM 映像,默认值:Ubuntu 22.04 | 可选 |
plan |
定义与 VM 映像关联的计划 | 可选 |
deployer_disk_type |
定义磁盘类型,默认值:Premium_LRS | 可选 |
deployer_use_DHCP |
控制是否应使用 Azure 子网提供的 IP 地址(动态):true | 可选 |
deployer_private_ip_address |
定义要使用的专用 IP 地址 | 可选 |
deployer_enable_public_ip |
定义部署程序是否有公共 IP | 可选 |
auto_configure_deployer |
定义是否使用所需软件(Terraform 和 Ansible)来配置部署器 | 可选 |
add_system_assigned_identity |
定义是否为部署器分配系统标识 | 可选 |
使用以下结构定义 VM 映像:
xxx_vm_image = {
os_type = ""
source_image_id = ""
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts"
version = "latest"
type = "marketplace"
}
注意
类型可以是 marketplace/marketplace_with_plan/custom
。
使用类型为 marketplace_with_plan
的映像要求相关映像在订阅中至少使用过一次。 第一次使用时会提示用户接受许可条款,而自动化没有办法批准它。
身份验证参数
本部分定义一些用于定义 VM 身份验证的参数。
变量 | 说明 | 类型 |
---|---|---|
deployer_vm_authentication_type |
定义部署器的默认身份验证 | 可选 |
deployer_authentication_username |
管理员帐户名称 | 可选 |
deployer_authentication_password |
管理员密码 | 可选 |
deployer_authentication_path_to_public_key |
用于身份验证的公钥的路径 | 可选 |
deployer_authentication_path_to_private_key |
用于身份验证的私钥的路径 | 可选 |
use_spn |
如果已定义,则将使用服务主体执行部署,否则使用 MSI | 可选 |
密钥保管库参数
本部分定义一些用于定义 Azure 密钥保管库信息的参数。
变量 | 说明 | 类型 |
---|---|---|
user_keyvault_id |
用户密钥保管库的 Azure 资源标识符。 | 可选 |
spn_keyvault_id |
包含部署凭据的密钥保管库的 Azure 资源标识符。 | 可选 |
deployer_private_key_secret_name |
部署器私钥的密钥保管库机密名称。 | 可选 |
deployer_public_key_secret_name |
部署器公钥的密钥保管库机密名称。 | 可选 |
deployer_username_secret_name |
部署器用户名的密钥保管库机密名称。 | 可选 |
deployer_password_secret_name |
部署器密码的密钥保管库机密名称。 | 可选 |
additional_users_to_add_to_keyvault_policies |
要添加到部署密钥保管库访问策略的用户对象 ID 列表。 | 可选 |
set_secret_expiry |
将密钥保管库机密的有效期设置为 12 个月。 | 可选 |
soft_delete_retention_days |
项在软删除期间应保留的天数。 | 可选 |
deployer_assign_subscription_permissions |
控制订阅权限分配。 | 可选 |
DNS 支持
变量 | 说明 | 类型 |
---|---|---|
dns_label |
专用 DNS 区域的 DNS 名称。 | 可选 |
use_custom_dns_a_registration |
使用外部系统作为 DNS,设置为 false 表示使用 Azure 本机系统。 | 可选 |
management_dns_subscription_id |
包含专用 DNS 区域的订阅的订阅 ID。 | 可选 |
management_dns_resourcegroup_name |
包含专用 DNS 区域的资源组。 | 可选 |
其他参数
变量 | 说明 | 类型 | 说明 |
---|---|---|---|
firewall_deployment |
控制是否要部署 Azure 防火墙的布尔标志。 | 可选 | |
bastion_deployment |
控制是否要部署 Azure Bastion 主机的布尔标志。 | 可选 | |
bastion_sku |
要部署的 Azure Bastion 主机的 SKU(基本/标准)。 | 可选 | |
enable_purge_control_for_keyvaults |
控制是否在密钥保管库上启用清除控制的布尔标志。 | 可选 | 仅用于测试部署。 |
enable_firewall_for_keyvaults_and_storage |
限制对选定子网的访问。 | 可选 | |
Agent_IP |
代理的 IP 地址。 | 可选 | |
add_Agent_IP |
控制是否将代理 IP 添加到密钥保管库和存储帐户防火墙 | 可选 |
Web 应用参数
变量 | 说明 | 类型 | 说明 |
---|---|---|---|
use_webapp |
指示是否应部署 Web 应用的布尔值。 | 可选 | |
app_service_SKU_name |
应用服务计划的 SKU。 | 可选 | |
app_registration_app_id |
用于 Web 应用的应用注册 ID。 | 可选 | |
webapp_client_secret |
应用服务计划的 SKU。 | 可选 | 将保存在密钥保管库中 |
部署程序的示例参数文件(仅限必需参数)
# The environment value is a mandatory field, it is used for partitioning the environments, for example (PROD and NP)
environment="MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location="westeurope"
# 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"
# management_bastion_subnet_address_prefix is a mandatory parameter if bastion is deployed and if the subnets are not defined in the workload or if existing subnets are not used
management_bastion_subnet_address_prefix = "10.10.20.128/26"
deployer_enable_public_ip=false
firewall_deployment=true
bastion_deployment=true
SAP 库
SAP 库为控制平面提供 Terraform 状态文件和下载的 SAP 安装介质的持久存储。
SAP 库的配置在 Terraform tfvars
变量文件中执行。
如果你要为 SAP 库使用现有资源组,请使用部署器的 tfvars 文件中的 resource_group_arm_id
参数提供该资源组的 Azure 资源 ID。 如果未定义该参数,则会使用默认命名创建资源组。 可以使用 resource_group_name
参数更改默认名称。
Terraform 参数
此表显示 Terraform 参数。 如果不使用部署脚本或 Azure Pipelines,则需要手动输入这些参数。
变量 | 说明 | 类型 | 说明 |
---|---|---|---|
deployer_tfstate_key |
部署器的状态文件名 | 必需 |
环境参数
下表展示了用于定义资源命名的参数。
变量 | 说明 | 类型 | 说明 |
---|---|---|---|
environment |
控制平面的标识符(最多五个字符) | 必需 | 例如,对于生产环境,此标识符为 PROD ,对于非生产环境,此标识符为 NP 。 |
location |
要部署到的 Azure 区域 | 必须 | 使用小写。 |
name_override_file |
名称重写文件 | 可选 | 请参阅自定义命名。 |
资源组
下表展示了用于定义资源组的参数。
变量 | 说明 | 类型 |
---|---|---|
resourcegroup_name |
要创建的资源组的名称 | 可选 |
resourcegroup_arm_id |
现有资源组的 Azure 资源标识符 | 可选 |
resourcegroup_tags |
要与资源组关联的标记 | 可选 |
SAP 安装介质存储帐户
变量 | 说明 | 类型 |
---|---|---|
library_sapmedia_arm_id |
Azure 资源标识符 | 可选 |
Terraform 远程状态存储帐户
变量 | 说明 | 类型 |
---|---|---|
library_terraform_state_arm_id |
Azure 资源标识符 | 可选 |
DNS 支持
变量 | 说明 | 类型 |
---|---|---|
dns_label |
专用 DNS 区域的 DNS 名称。 | 可选 |
use_custom_dns_a_registration |
使用现有的专用 DNS 区域。 | 可选 |
management_dns_subscription_id |
包含专用 DNS 区域的订阅的订阅 ID。 | 可选 |
management_dns_resourcegroup_name |
包含专用 DNS 区域的资源组。 | 可选 |
其他参数
变量 | 说明 | 类型 |
---|---|---|
use_private_endpoint |
使用专用终结点。 | 可选 |
use_service_endpoint |
为子网使用服务终结点。 | 可选 |
enable_firewall_for_keyvaults_and_storage |
限制对选定子网的访问。 | 可选 |
subnets_to_add_to_firewall_for_keyvaults_and_storage |
需要访问密钥保管库和存储帐户的子网。 | 可选 |
SAP 库的示例参数文件(仅限必需参数)
# The environment value is a mandatory field, it is used for partitioning the environments, for example (PROD and NP)
environment = "MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"