Azure 登陸區域 Terraform 模組

Azure 提供原生服務來建置 Azure 登陸區域。 其他工具也可以協助進行這項工作。 客戶和合作夥伴經常用來部署登陸區域的工具之一是

將資源部署到應用程式登陸區域超出模組的範圍。 部署方法和工具的決策適用于負責應用程式的小組。

Azure 登陸區域 Terraform 模組可快速實作您需要管理 的平臺資源。使用 Terraform 大規模 Azure 登陸區域。 此課程模組的設計目的是簡化連線和管理訂用帳戶中管理群組階層、原則和資源部署。

必要條件

如果您不熟悉 Terraform,而且想要安裝及使用它的相關資訊,請參閱 HashiCorp Learn 上安裝 Terraform 教學課程。

如需如何設定 Terraform 提供者並使用 Azure 進行驗證的資訊,請參閱 Terraform 網站上的 AzureRM 提供者指南 。 若要瞭解如何設定提供者以跨多個訂用帳戶部署,請參閱 提供者設定Wiki 頁面。

使用標準模組的重要性

重複使用元件是基礎結構即程式碼的基本原則。 模組有助於定義環境內部及跨環境的資源部署標準和一致性。

Azure 登陸區域 Terraform 模組會發佈至 Terraform Registry並由 HashiCorp 驗證。

從 Terraform Registry 部署模組可提供:

  • 在您的環境中加速傳遞 Azure 登陸區域。
  • 最新版模組的已測試升級路徑,以及嚴格的版本控制。

使用模組的優點

使用 Azure 登陸區域 Terraform 模組的優點包括:

  • 訂用帳戶組織的受控且可延伸的核心資源階層,可透過管理群組。
  • 透過 Azure 身分識別和存取管理 (IAM) 控制項來調整安全性控管和合規性,並已準備好指派廣泛的自訂定義程式庫。
  • 透過管理群組繼承跨訂用帳戶強制執行原則。
  • 管理與連線登陸區域的受控資源。 這些資源提供:
    • 透過緊密整合模組所管理的資源以及對應的原則指派,確保原則合規性。
    • 資源之間的整合可減少管理額外負荷,並提供改善的使用者體驗,例如自動建立 Azure 私用 DNS的虛擬網路連結。

提示

範本庫會以程式設計方式從 進行更新。Azure/Enterprise-Scale GitHub 存放庫。 若要隨時掌握最新的原型設定、原則和角色,請確定您使用的是最新版模組。

資源部署

您可以將模組設定為部署一組資源,使其與 Azure 登陸區域中的下列重要設計區域一致。 自訂這些資源以符合組織的需求。

資源類別 關鍵設計區域
核心資源 雲端採用架構上適用于 Azure 登陸區域的資源組織
雲端採用架構上 Azure 登陸區域的安全性
治理
管理資源 管理和監視
連線資源 網路拓撲和連線能力
身分識別資源 身分識別和存取管理

將這些功能封裝成單一 Terraform 模組,可讓您在大規模運作時,更輕鬆地在 Azure 平臺上建置和強制執行一致性。

這些資源會與 Azure 登陸區域概念架構一致:

Azure 登陸區域概念架構的圖表。

您可以使用 ,透過功能跨多個訂用帳戶部署這些資源。模組區塊上的提供者組態。

下列各節概述資源類型和組態選項。

核心資源

本課程模組的核心功能會部署 Azure 登陸區域的概念架構,著重于資源組織

Azure 登陸區域概念架構的圖表,著重于核心資源階層。

當您 依預設) 啟用核心資源的部署 (時,模組會部署和管理下列資源類型:

資源 Azure 資源類型 Terraform 資源類型
管理群組 Microsoft.Management/managementGroups azurerm_management_group
管理群組訂用帳戶 Microsoft.Management/managementGroups/subscriptions azurerm_management_group
原則指派 Microsoft.Authorization/policyAssignments azurerm_management_group_policy_assignment
原則定義 Microsoft.Authorization/policyDefinitions azurerm_policy_definition
原則集定義 Microsoft.Authorization/policySetDefinitions azurerm_policy_set_definition
角色指派 Microsoft.Authorization/roleAssignments azurerm_role_assignment
角色定義 Microsoft.Authorization/roleDefinitions azurerm_role_definition

模組建立的資源確切數目取決於模組組態。 針對 預設組態,您可以預期模組會建立大約 180 資源。

提示

這些資源都不會部署在訂用帳戶範圍,但 Terraform 仍然需要訂用帳戶,才能使用 Azure 建立已驗證的會話。 如需使用 Azure 進行驗證的詳細資訊,請參閱 Azure 提供者:向 Azure 檔進行驗證

管理資源

此模組提供一個選項,可讓您在Azure 管理和監視資源。Azure 登陸區域的概念架構,如 提供者設定Wiki 頁面。 模組也可確保指定的訂用帳戶放置在正確的管理群組中。

Azure 登陸區域概念架構的圖表,著重于管理資源。

當您啟用管理資源的部署時,模組會 根據組態) 來部署和管理下列資源類型 (:

資源 Azure 資源類型 Terraform 資源類型
資源群組 Microsoft.Resources/resourceGroups azurerm_resource_group
Log Analytics 工作區 Microsoft.OperationalInsights/workspaces azurerm_log_analytics_workspace
Log Analytics 解決方案 Microsoft.OperationsManagement/solutions azurerm_log_analytics_solution
自動化帳戶 Microsoft.Automation/automationAccounts azurerm_automation_account
Log Analytics 連結服務 Microsoft.OperationalInsights/workspaces /linkedServices azurerm_log_analytics_linked_service

除了部署上述資源之外,模組還提供原生整合至對應的原則指派,以確保完整的原則合規性。

如需如何使用這項功能的詳細資訊,請參閱 Wiki 頁面。

連線資源

此模組提供一個選項,可讓您 的網路拓撲和連線資源。Azure 登陸區域的概念架構會進入目前的訂用帳戶內容。 它也可確保指定的訂用帳戶放置在正確的管理群組中。

這項功能可讓您根據傳統 Azure 網路拓撲 (中樞和輪輻) 的任何組合,以及Virtual WAN網路拓撲 (Microsoft 管理的) 來部署多個中樞網路。

此模組也可以建立 DDoS 網路保護 ,並將其連結至虛擬網路,以及管理集中式公用和私人 DNS 區域

注意

我們目前不建議在 Azure 登陸區域中使用 DDoS IP 保護,並建議在特定情況下使用此選項。 檢閱關於 Azure DDoS 保護 SKU 比較的產品檔

傳統 Azure 網路拓撲 (中樞和輪輻)

模組可以選擇性地根據傳統 Azure 網路拓撲來部署一或多個中樞 網路, (中樞和輪輻)

Azure 登陸區域概念架構的圖表,著重于使用傳統 Azure 網路拓撲 (中樞和輪輻) 的連線資源。

注意

模組目前只會設定連線訂用帳戶的網路中樞和相依資源。 雖然有選項可從中樞對輪輻啟用輸出虛擬網路對等互連,但使用者仍然需要從輪輻起始對等互連到中樞。 這是因為 AzureRM 提供者如何以特定訂用帳戶作為部署目標的限制。

當您根據傳統 Azure 網路拓撲 (中樞和輪輻) 部署資源時,模組會 根據組態) 部署和管理下列資源類型 (:

資源 Azure 資源類型 Terraform 資源類型
資源群組 Microsoft.Resources/resourceGroups azurerm_resource_group
虛擬網路 Microsoft.Network/virtualNetworks azurerm_virtual_network
子網路 Microsoft.Network/virtualNetworks/subnets azurerm_subnet
虛擬網路閘道 Microsoft.Network/virtualNetworkGateways azurerm_virtual_network_gateway
Azure 防火牆 Microsoft.Network/azureFirewalls azurerm_firewall
公用 IP 位址 Microsoft.Network/publicIPAddresses azurerm_public_ip
虛擬網路對等互連 Microsoft.Network/virtualNetworks/virtualNetworkPeerings azurerm_virtual_network_peering

如需如何使用此功能的詳細資訊,請參閱 Wiki 頁面。

虛擬 WAN 網路拓撲 (Microsoft 管理的)

模組可以選擇性地根據microsoft 管理的) Virtual WAN 網路拓撲 (來部署一或多個中樞網路。

Azure 登陸區域概念架構的圖表,著重于使用 microsoft 管理的) Virtual WAN網路拓撲 (連線資源。

注意

由於透過傳統Virtual WAN網路資源的不同功能,因此使用這項功能時,Virtual WAN輪輻的對等互連是雙向的。

當您根據 microsoft 管理) (Virtual WAN網路拓撲來部署資源時,模組會根據組態) 部署和管理下列資源類型 (:

資源 Azure 資源類型 Terraform 資源類型
資源群組 Microsoft.Resources/resourceGroups azurerm_resource_group
虛擬 WAN Microsoft.Network/virtualWans azurerm_virtual_wan
虛擬中樞 Microsoft.Network/virtualHubs azurerm_virtual_hub
Express Route 閘道 Microsoft.Network/expressRouteGateways azurerm_express_route_gateway
VPN 閘道 Microsoft.Network/vpnGateways azurerm_vpn_gateway
Azure 防火牆 Microsoft.Network/azureFirewalls azurerm_firewall
Azure 防火牆原則 Microsoft.Network/firewallPolicies azurerm_firewall_policy
虛擬中樞連線 Microsoft.Network/virtualHubs/hubVirtualNetworkConnections azurerm_virtual_hub_connection

如需如何使用此功能的詳細資訊,請參閱 資源Wiki 頁面。

DDoS 保護計劃

模組可以選擇性地部署 DDoS 網路保護,並視需要將虛擬網路連結至方案。

注意

由於平臺限制,DDoS 保護方案只能針對傳統虛擬網路啟用。 虛擬中樞支援目前無法使用。

重要

Azure 登陸區域指引建議啟用 DDoS 網路保護,以增加 Azure 平臺的保護。 若要避免非生產環境與 MVP 部署中的非預期成本,由於與此資源相關聯的成本,因此在 Azure 登陸區域 Terraform 模組中會停用這項功能。

針對生產環境,我們強烈建議您啟用這項功能。

當您啟用 DDoS 保護方案資源的部署時,模組會 根據組態) 部署和管理下列資源類型 (:

資源 Azure 資源類型 Terraform 資源類型
資源群組 Microsoft.Resources/resourceGroups azurerm_resource_group
DDoS 保護計劃 Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

模組可以選擇性地部署私用 DNS區域以支援私人端點,並將其連結至中樞和/或輪輻虛擬網路。 您也可以視需要部署和連結使用者指定的公用和私人 DNS 區域。

當您啟用 DNS 資源的部署時,模組會 根據組態) 部署和管理下列資源類型 (:

資源 Azure 資源類型 Terraform 資源類型
資源群組 Microsoft.Resources/resourceGroups azurerm_resource_group
DNS 區域 Microsoft.Network/dnsZones azurerm_dns_zone
私人 DNS 區域 Microsoft.Network/privateDnsZones azurerm_private_dns_zone
私用 DNS區域虛擬網路連結 Microsoft.Network/privatednszones/virtualnetworklinks azurerm_private_dns_zone_virtual_network_link

身分識別資源

此課程模組提供一個選項,可設定相關的原則。身分識別和存取管理登陸區域。 它也可確保指定的訂用帳戶放置在正確的管理群組中。

Azure 登陸區域概念架構的圖表,著重于身分識別資源。

注意

這項功能不會部署任何資源。 如果您想要更新與身分識別管理群組相關的原則設定,請使用 configure_identity_resources 輸入變數。

如需如何使用這項功能的詳細資訊,請參閱 資源Wiki 頁面。

開始使用

開始使用模組的需求記載于 消費者入門Wiki 頁面。

為了簡化使用者入門,模組已發佈至 Terraform Registry。 您可以直接在程式碼中參考它,如本文稍後的 簡單範例 所示。 執行 terraform init 會自動下載模組及所有相依項目。

您可以在 的最新模組和提供者相依性。Terraform Registry 中的 [相依性] 索引標籤。

重要

Terraform 和 AzureRM 提供者版本的組合有一些已知問題。 升級至最新版 Terraform 和 AzureRM 提供者版本可以解決一些已知問題。 其他已知問題是您可以藉由重新執行部署來修正的暫時性錯誤。

一般會建議您在升級之前,先鎖定為特定版本,然後徹底測試。

當需要變更時,我們將發行新版本的模組。 新版本可確保與最新的 Terraform 和 AzureRM 提供者版本相容。 如需詳細資訊,請參閱 模組版本 指引。

若要取得最新功能,請確定模組版本已設定為最新版本。 如果您要升級至較新版本的模組,請執行 terraform init -upgrade

GitHub 版本 (最新的 SemVer)

簡單範例

此範例程式碼會從企業級參考架構部署建議的最低 管理群組和訂用帳戶組織 。 在啟動並執行這個簡單的範例之後,您就可以開始自訂部署。

提示

雖然 root_parent_id 是模組的唯一強制變數,我們仍建議設定 root_id。 變更 root_id 值將會開始完整重新部署模組管理的所有資源,包括下游相依性。

下列程式碼是 main.tf 根模組簡單的起始設定:

# Configure Terraform to set the required AzureRM provider
# version and features{} block.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 2.77.0"
    }
  }
}

provider "azurerm" {
  features {}
}

# Get the current client configuration from the AzureRM provider.
# This configuration is used to populate the root_parent_id variable with the
# current tenant ID used as the ID for the "Tenant Root Group"
# management group.

data "azurerm_client_config" "core" {}

# Use variables to customize the deployment

variable "root_id" {
  type    = string
  default = "es"
}

variable "root_name" {
  type    = string
  default = "Enterprise-Scale"
}

# Declare the Terraform Module for Cloud Adoption Framework
# Enterprise-scale and provide a base configuration.

module "enterprise_scale" {
  source  = "Azure/caf-enterprise-scale/azurerm"
  version = ">= 1.0.0"

  providers = {
    azurerm              = azurerm
    azurerm.connectivity = azurerm
    azurerm.management   = azurerm
  }

  root_parent_id = data.azurerm_client_config.core.tenant_id
  root_id        = var.root_id
  root_name      = var.root_name

}

後續步驟

適用于 雲端採用架構 Enterprise-scale 的 Terraform 模組提供加速路徑來建置企業級登陸區域。 此模組也提供可以擴充和自訂部署的彈性,同時維持簡化的方法來管理每個登陸區域的設定。

若要深入瞭解,請檢閱 Terraform Registry 上的模組,並探索GitHub 上的模組檔。 在檔中,您會找到更多有關如何自訂部署的範例和教學課程。

瞭解如何透過 HashiCorp Learn 部署 Azure 登陸區域 Terraform 模組。 您也可以從該處探索模組的某些部分如何運作。