設定控制平面
SAP 部署自動化架構的控制平面包含下列元件:
- 部署器
- SAP 程式庫
部署器
部署程式是SAP部署自動化架構的執行引擎。 這是預先設定的虛擬機(VM),用於執行 Terraform 和 Ansible 命令。 當您使用 Azure DevOps 時,部署程式是自我裝載的代理程式。
部署者的組態是在 Terraform tfvars
變數檔案中執行。
如果您想要針對部署者使用現有的資源群組,請使用 resource_group_arm_id
部署器 tfvars 檔案中的 參數,為資源群組提供 Azure 資源識別符。 如果未定義 參數,則會使用預設命名來建立資源群組。 您可以使用 參數來變更預設名稱 resource_group_name
。
Terraform 參數
下表顯示 Terraform 參數。 如果您未使用部署文本,則必須手動輸入這些參數。
變數 | 描述 | 類型 |
---|---|---|
tfstate_resource_id |
SAP 連結庫中記憶體帳戶的 Azure 資源識別碼,其中包含 Terraform 狀態檔案 | 必要 |
環境參數
下表顯示定義資源命名的參數。
變數 | 描述 | 類型 | 備註 |
---|---|---|---|
environment |
控制平面的標識碼(最多 5 個字元)。 | 必要 | 例如, PROD 針對生產環境和 NP 非生產環境。 |
location |
要在其中部署的 Azure 區域。 | 必要 | 使用小寫。 |
codename |
用於命名資源的其他元件。 | 選擇性 | |
name_override_file |
名稱覆寫檔案。 | 選擇性 | 請參閱 自定義命名。 |
place_delete_lock_on_resources |
將刪除鎖定放在金鑰資源上。 | 選擇性 |
資源群組
下表顯示定義資源群組的參數。
變數 | 描述 | 類型 |
---|---|---|
resourcegroup_name |
所要建立資源群組的名稱 | 選擇性 |
resourcegroup_arm_id |
現有資源群組的 Azure 資源識別碼 | 選擇性 |
resourcegroup_tags |
要與資源群組相關聯的標籤 | 選擇性 |
網路參數
自動化架構支援建立虛擬網路和子網(綠色欄位),或使用現有的虛擬網路和現有的子網(棕色字段)或綠色字段和棕色欄位的組合:
- 綠色欄位案例:必須指定虛擬網路位址空間和子網位址前綴。
- 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 |
定義磁碟類型,預設值:進階版_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
映像,需要有問題的映像至少在訂用帳戶中使用一次。 第一個使用方式會提示使用者接受授權條款,且自動化沒有辦法核准。
Authentication parameters
本節會定義用來定義 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 |
要新增至部署金鑰保存庫存取原則的用戶物件識別碼清單。 | 選擇性 |
set_secret_expiry |
設定金鑰保存庫秘密的 12 個月到期日。 | 選擇性 |
soft_delete_retention_days |
應該在虛刪除期間保留專案的天數。 | 選擇性 |
deployer_assign_subscription_permissions |
控制訂用帳戶許可權指派。 | 選擇性 |
DNS 支援
變數 | 描述 | 類型 |
---|---|---|
dns_label |
私用 DNS 區域的 DNS 名稱。 | 選擇性 |
use_custom_dns_a_registration |
針對 DNS 使用外部系統,針對 Azure 原生設定為 false。 | 選擇性 |
management_dns_subscription_id |
包含 私用 DNS 區域的訂用帳戶訂用帳戶標識碼。 | 選擇性 |
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 |
布爾值,指出是否應該部署 Webapp。 | 選擇性 | |
app_service_SKU_name |
App Service 方案的 SKU。 | 選擇性 | |
app_registration_app_id |
要用於 Webapp 的應用程式註冊標識碼。 | 選擇性 | |
webapp_client_secret |
App Service 方案的 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 連結庫使用現有的資源群組,請使用 resource_group_arm_id
部署器 tfvars 檔案中的 參數,提供資源群組的 Azure 資源識別碼。 如果未定義 參數,則會使用預設命名來建立資源群組。 您可以使用 參數來變更預設名稱 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 區域的訂用帳戶訂用帳戶標識碼。 | 選擇性 |
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"