Moduł Terraform stref docelowych platformy Azure
Platforma Azure udostępnia usługi natywne do tworzenia stref docelowych platformy Azure. Inne narzędzia mogą również pomóc w tym wysiłku. Jednym z narzędzi używanych przez klientów i partnerów do wdrażania stref docelowych jest narzędzie Terraform firmy HashiCorp.
Wdrażanie zasobów w strefach docelowych aplikacji wykracza poza zakres modułu. Decyzje dotyczące metody i narzędzi wdrażania dotyczą zespołu odpowiedzialnego za aplikację.
Moduł Terraform stref docelowych platformy Azure zapewnia szybką implementację zasobów platformy, które należy zarządzać strefami docelowymi platformy Azure na dużą skalę przy użyciu narzędzia Terraform. Moduł został zaprojektowany w celu uproszczenia wdrażania hierarchii, zasad i zasobów grupy zarządzania w subskrypcjach łączności i zarządzania.
Wymagania wstępne
Jeśli dopiero zaczynasz korzystać z programu Terraform i chcesz uzyskać informacje o instalowaniu i używaniu go, zapoznaj się z samouczkiem Install Terraform on HashiCorp Learn (Instalowanie programu Terraform w środowisku HashiCorp Learn).
Aby uzyskać informacje na temat konfigurowania dostawcy programu Terraform i uwierzytelniania na platformie Azure, zobacz przewodniki dotyczące dostawcy modułu AzureRM w witrynie internetowej narzędzia Terraform. Aby dowiedzieć się, jak skonfigurować dostawcę do wdrażania w wielu subskrypcjach, zobacz stronę typu wiki Konfiguracja dostawcy.
Znaczenie używania modułów standardowych
Ponowne używanie składników jest podstawową zasadą infrastruktury jako kodu. Moduły mają kluczowe znaczenie podczas definiowania standardów i spójności we wdrażaniu zasobów w środowiskach i w różnych środowiskach.
Moduł Terraform stref docelowych platformy Azure jest publikowany w oficjalnym rejestrze terraform i jest weryfikowany przez firmę HashiCorp.
Wdrożenie modułu z rejestru Terraform zapewnia:
- Przyspieszone dostarczanie stref docelowych platformy Azure w środowisku.
- Przetestowana ścieżka uaktualnienia do najnowszej wersji modułu wraz ze ścisłą kontrolą wersji.
Zalety korzystania z modułu
Zalety korzystania z modułu Terraform stref docelowych platformy Azure obejmują:
- Zarządzana i rozszerzalna podstawowa hierarchia zasobów dla organizacji subskrypcji za pośrednictwem grup zarządzania.
- Skalowalny nadzór nad zabezpieczeniami i zgodność za pomocą mechanizmów kontroli zarządzania tożsamościami i dostępem (IAM) platformy Azure z obszerną biblioteką definicji niestandardowych gotowych do przypisania.
- Wymuszanie zasad między subskrypcjami za pomocą dziedziczenia grupy zarządzania.
- Zarządzane zasoby na potrzeby stref docelowych zarządzania i łączności. Te zasoby zapewniają:
- Zapewnij zgodność zasad dzięki ścisłej integracji zasobów zarządzanych przez moduł i odpowiednich przypisań zasad.
- Integracja między zasobami w celu zmniejszenia nakładu pracy związanego z zarządzaniem i zapewnienia ulepszonego środowiska użytkownika, takiego jak automatyczne tworzenie łączy sieci wirtualnej dla usługi Azure Prywatna strefa DNS.
Napiwek
Biblioteka szablonów jest aktualizowana programowo z repozytorium GitHub Azure/Enterprise-Scale . Aby być na bieżąco z najnowszą konfiguracją archetypu, zasadami i rolami, upewnij się, że używasz najnowszej wersji modułu.
Wdrażanie zasobów
Moduł można skonfigurować tak, aby wdrażał zestawy zasobów, które są zgodne z następującymi krytycznymi obszarami projektowymi w strefach docelowych platformy Azure. Dostosuj te zasoby, aby spełnić wymagania organizacji.
Kategoria zasobów | Krytyczny obszar projektowania |
---|---|
Zasoby podstawowe | Zarządzanie zabezpieczeniami organizacji zasobów |
Zasoby zarządzania | Zarządzanie i monitorowanie |
Zasoby łączności | Topologia sieci i łączność |
Zasoby tożsamości | Zarządzanie tożsamościami i dostępem |
Tworzenie pakietów tych możliwości w jednym module programu Terraform ułatwia tworzenie i wymuszanie spójności na platformie Azure podczas działania na dużą skalę.
Te zasoby są zgodne z architekturą koncepcyjną stref docelowych platformy Azure:
Te zasoby można wdrożyć według możliwości w wielu subskrypcjach przy użyciu konfiguracji dostawcy w bloku modułu.
W poniższych sekcjach opisano typy zasobów i opcje konfiguracji.
Zasoby podstawowe
Podstawowa funkcja tego modułu wdraża podstawy architektury koncepcyjnej stref docelowych platformy Azure, koncentrując się na centralnej organizacji zasobów.
Po włączeniu wdrażania podstawowych zasobów (domyślnie włączone) moduł wdraża następujące typy zasobów i zarządza nimi:
Zasób | Typ zasobu platformy Azure | Typ zasobu narzędzia Terraform |
---|---|---|
Grupy zarządzania | Microsoft.Management/managementGroups |
azurerm_management_group |
Subskrypcje grup zarządzania | Microsoft.Management/managementGroups/subscriptions |
azurerm_management_group |
Przypisania zasad | Microsoft.Authorization/policyAssignments |
azurerm_management_group_policy_assignment |
Definicje zasad | Microsoft.Authorization/policyDefinitions |
azurerm_policy_definition |
Definicje zestawu zasad | Microsoft.Authorization/policySetDefinitions |
azurerm_policy_set_definition |
Przypisania ról | Microsoft.Authorization/roleAssignments |
azurerm_role_assignment |
Definicje ról | Microsoft.Authorization/roleDefinitions |
azurerm_role_definition |
Dokładna liczba zasobów tworzonych przez moduł zależy od konfiguracji modułu. W przypadku konfiguracji domyślnej można oczekiwać, że moduł utworzy około 180
zasobów.
Napiwek
Żadne z tych zasobów nie są wdrażane w zakresie subskrypcji, ale narzędzie Terraform nadal wymaga subskrypcji do ustanowienia uwierzytelnionej sesji z platformą Azure. Aby uzyskać więcej informacji na temat uwierzytelniania za pomocą platformy Azure, zobacz dokumentację dostawcy platformy Azure: uwierzytelnianie na platformie Azure .
Zasoby zarządzania
Moduł zawiera opcję włączenia wdrażania zasobów zarządzania i monitorowania z architektury koncepcyjnej stref docelowych platformy Azure do określonej subskrypcji zgodnie z opisem na stronie wiki Konfiguracja dostawcy. Moduł zapewnia również, że określona subskrypcja zostanie umieszczona w odpowiedniej grupie zarządzania.
Po włączeniu wdrażania zasobów zarządzania moduł wdraża następujące typy zasobów i zarządza nimi (w zależności od konfiguracji):
Zasób | Typ zasobu platformy Azure | Typ zasobu narzędzia Terraform |
---|---|---|
Grupy zasobów | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Obszar roboczy usługi Log Analytics | Microsoft.OperationalInsights/workspaces |
azurerm_log_analytics_workspace |
Rozwiązania usługi Log Analytics | Microsoft.OperationsManagement/solutions |
azurerm_log_analytics_solution |
Konto usługi Automation | Microsoft.Automation/automationAccounts |
azurerm_automation_account |
Połączona usługa Log Analytics | Microsoft.OperationalInsights/workspaces /linkedServices |
azurerm_log_analytics_linked_service |
Oprócz wdrażania powyższych zasobów moduł zapewnia natywną integrację z odpowiednimi przypisaniami zasad w celu zapewnienia pełnej zgodności z zasadami.
Aby uzyskać więcej informacji na temat korzystania z tej funkcji, zobacz stronę typu wiki Deploy Management Resources (Wdrażanie zasobów zarządzania).
Zasoby łączności
Moduł udostępnia opcję włączenia wdrażania topologii sieci i zasobów łączności z architektury koncepcyjnej stref docelowych platformy Azure do bieżącego kontekstu subskrypcji. Gwarantuje również, że określona subskrypcja zostanie umieszczona w odpowiedniej grupie zarządzania.
Ta funkcja umożliwia wdrażanie wielu sieci koncentratorów na podstawie dowolnej kombinacji tradycyjnej topologii sieci platformy Azure (piasty i szprych) oraz topologii sieci usługi Virtual WAN (zarządzanej przez firmę Microsoft).
Moduł może również tworzyć i łączyć ochronę sieci DDoS z sieciami wirtualnymi oraz zarządzać scentralizowanymi publicznymi i prywatnymi strefami DNS.
Uwaga
Obecnie nie zalecamy ochrony przed atakami DDoS IP w strefach docelowych platformy Azure i zalecamy użycie tej opcji w określonych okolicznościach. Zapoznaj się z dokumentacją produktu Porównanie jednostek SKU usługi Azure DDoS Protection
Tradycyjna topologia sieci platformy Azure (piasta i szprycha)
Moduł może opcjonalnie wdrożyć co najmniej jedną sieć piasty w oparciu o tradycyjną topologię sieci platformy Azure (piastę i szprychę).
Uwaga
Moduł obecnie konfiguruje tylko centrum sieciowe i zasoby zależne dla subskrypcji łączności. Mimo że istnieje możliwość włączenia wychodzącej komunikacji równorzędnej sieci wirtualnych z piasty do szprychy, użytkownicy nadal muszą inicjować komunikację równorzędną z szprychy do piasty. Jest to spowodowane ograniczeniami dotyczącymi sposobu, w jaki dostawca modułu AzureRM jest przeznaczony dla określonej subskrypcji na potrzeby wdrożenia.
Podczas wdrażania zasobów w oparciu o tradycyjną topologię sieci platformy Azure (piastę i szprychę) moduł wdraża następujące typy zasobów i zarządza nimi (w zależności od konfiguracji):
Zasób | Typ zasobu platformy Azure | Typ zasobu narzędzia Terraform |
---|---|---|
Grupy zasobów | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Sieci wirtualne | Microsoft.Network/virtualNetworks |
azurerm_virtual_network |
Podsieci | Microsoft.Network/virtualNetworks/subnets |
azurerm_subnet |
Bramy sieci wirtualnej | Microsoft.Network/virtualNetworkGateways |
azurerm_virtual_network_gateway |
Zapory platformy Azure | Microsoft.Network/azureFirewalls |
azurerm_firewall |
Publiczne adresy IP | Microsoft.Network/publicIPAddresses |
azurerm_public_ip |
Komunikacja równorzędna sieci wirtualnych | Microsoft.Network/virtualNetworks/virtualNetworkPeerings |
azurerm_virtual_network_peering |
Aby uzyskać więcej informacji na temat korzystania z tej funkcji, zobacz stronę typu wiki Deploy Connectivity Resources (Wdrażanie zasobów łączności).
Topologia sieci wirtualnej sieci WAN (zarządzana przez firmę Microsoft)
Moduł może opcjonalnie wdrożyć co najmniej jedną sieć piasty na podstawie topologii sieci usługi Virtual WAN (zarządzanej przez firmę Microsoft).
Uwaga
Ze względu na różne możliwości zasobów sieci wirtualnej sieci WAN za pośrednictwem tradycyjnych, komunikacja równorzędna dla szprych wirtualnych sieci WAN jest dwukierunkowa w przypadku korzystania z tej możliwości.
Podczas wdrażania zasobów na podstawie topologii sieci wirtualnej sieci WAN (zarządzanej przez firmę Microsoft) moduł wdraża następujące typy zasobów i zarządza nimi (w zależności od konfiguracji):
Zasób | Typ zasobu platformy Azure | Typ zasobu narzędzia Terraform |
---|---|---|
Grupy zasobów | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Wirtualne sieci WAN | Microsoft.Network/virtualWans |
azurerm_virtual_wan |
Wirtualne centra | Microsoft.Network/virtualHubs |
azurerm_virtual_hub |
Bramy usługi Express Route | Microsoft.Network/expressRouteGateways |
azurerm_express_route_gateway |
Bramy sieci VPN | Microsoft.Network/vpnGateways |
azurerm_vpn_gateway |
Zapory usługi Azure Firewall | Microsoft.Network/azureFirewalls |
azurerm_firewall |
Zasady usługi Azure Firewall | Microsoft.Network/firewallPolicies |
azurerm_firewall_policy |
Połączenia koncentratora wirtualnego | Microsoft.Network/virtualHubs/hubVirtualNetworkConnections |
azurerm_virtual_hub_connection |
Aby uzyskać więcej informacji na temat korzystania z tej funkcji, zobacz stronę typu wiki Deploy Virtual WAN Resources (Wdrażanie zasobów usługi Virtual WAN).
Plan usługi DDoS Protection
Moduł może opcjonalnie wdrożyć ochronę sieci DDoS i w razie potrzeby połączyć sieci wirtualne z planem.
Uwaga
Ze względu na ograniczenia platformy plany usługi DDoS Protection można włączyć tylko dla tradycyjnych sieci wirtualnych. Obsługa koncentratora wirtualnego jest obecnie niedostępna.
Ważne
Wskazówki dotyczące stref docelowych platformy Azure zalecają włączenie usługi DDoS Network Protection w celu zwiększenia ochrony platformy Azure. Aby zapobiec nieoczekiwanym kosztom wdrożeń nieprodukcyjnych i MVP, ta funkcja jest wyłączona w module Terraform stref docelowych platformy Azure ze względu na koszt skojarzony z tym zasobem.
W przypadku środowisk produkcyjnych zdecydowanie zalecamy włączenie tej funkcji.
Po włączeniu wdrożenia zasobów planu usługi DDoS Protection moduł wdraża następujące typy zasobów i zarządza nimi (w zależności od konfiguracji):
Zasób | Typ zasobu platformy Azure | Typ zasobu narzędzia Terraform |
---|---|---|
Grupy zasobów | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Plany usługi DDoS Protection | Microsoft.Network/ddosProtectionPlans |
azurerm_network_ddos_protection_plan |
DNS
Moduł może opcjonalnie wdrożyć strefy Prywatna strefa DNS w celu obsługi prywatnych punktów końcowych i połączyć je z sieciami wirtualnymi piasty i/lub szprych. Publiczne i prywatne strefy DNS określone przez użytkownika można również wdrażać i łączyć zgodnie z potrzebami.
Po włączeniu wdrażania zasobów DNS moduł wdraża następujące typy zasobów i zarządza nimi (w zależności od konfiguracji):
Zasób | Typ zasobu platformy Azure | Typ zasobu narzędzia Terraform |
---|---|---|
Grupy zasobów | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Strefy DNS | Microsoft.Network/dnsZones |
azurerm_dns_zone |
strefy Prywatna strefa DNS | Microsoft.Network/privateDnsZones |
azurerm_private_dns_zone |
łącze sieci wirtualnej strefy Prywatna strefa DNS | Microsoft.Network/privatednszones/virtualnetworklinks |
azurerm_private_dns_zone_virtual_network_link |
Zasoby tożsamości
Moduł zawiera opcję konfigurowania zasad dotyczących strefy docelowej zarządzania tożsamościami i dostępem . Gwarantuje również, że określona subskrypcja zostanie umieszczona w odpowiedniej grupie zarządzania.
Uwaga
Ta funkcja nie wdraża żadnych zasobów. Jeśli chcesz zaktualizować ustawienia zasad związane z grupą zarządzania tożsamościami, użyj zmiennej wejściowej configure_identity_resources
.
Aby uzyskać więcej informacji na temat korzystania z tej funkcji, zobacz stronę typu wiki Deploy Identity Resources (Wdrażanie zasobów tożsamości).
Wprowadzenie
Wymagania dotyczące rozpoczynania pracy z modułem są udokumentowane na stronie wiki Wprowadzenie .
Aby uprościć rozpoczęcie pracy, moduł został opublikowany w rejestrze programu Terraform. Możesz odwoływać się do niego bezpośrednio w kodzie, jak pokazano w prostym przykładzie w dalszej części tego artykułu. Uruchomienie terraform init
spowoduje automatyczne pobranie modułu i wszystkich zależności.
Najnowsze zależności modułu i dostawcy można wyświetlić na karcie Zależności w rejestrze programu Terraform.
Ważne
Istnieją znane problemy z niektórymi kombinacjami wersji dostawcy programu Terraform i modułu AzureRM. Niektóre znane problemy można rozwiązać, uaktualniając do najnowszych wersji dostawcy programu Terraform i modułu AzureRM. Inne znane problemy to błędy przejściowe, które zazwyczaj można rozwiązać przez ponowne uruchomienie wdrożenia.
Zazwyczaj zalecamy przypinanie do określonych wersji i dokładne testowanie przed uaktualnieniem.
W razie potrzeby udostępnimy nowe wersje modułu. Nowe wersje zapewnią zgodność z najnowszymi wersjami dostawcy programu Terraform i modułu AzureRM. Aby uzyskać więcej informacji, zapoznaj się z naszymi wskazówkami dotyczącymi wydań modułów.
Aby uzyskać najnowsze funkcje, upewnij się, że wersja modułu jest ustawiona na najnowszą wersję. Jeśli uaktualniasz moduł do nowszej wersji, uruchom polecenie terraform init -upgrade
.
Prosty przykład
Ten przykładowy kod wdraża minimalną zalecaną grupę zarządzania i organizację subskrypcji z architektury referencyjnej w skali przedsiębiorstwa. Po uruchomieniu tego prostego przykładu możesz rozpocząć dostosowywanie wdrożenia.
Napiwek
Mimo że root_parent_id
jest to jedyna obowiązkowa zmienna modułu, zalecamy również ustawienie parametru root_id
. root_id
Zmiana wartości spowoduje ponowne wdrożenie wszystkich zasobów zarządzanych przez moduł, w tym zależności podrzędnych.
Poniższy kod to prosta konfiguracja początkowa modułu main.tf
głównego:
# 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
}
Następne kroki
Moduł Terraform dla struktury Cloud Adoption Framework w skali przedsiębiorstwa zapewnia przyspieszoną ścieżkę do tworzenia stref docelowych w skali przedsiębiorstwa. Zapewnia również elastyczność rozszerzania i dostosowywania wdrożenia przy zachowaniu uproszczonego podejścia do zarządzania konfiguracją każdej strefy docelowej.
Aby dowiedzieć się więcej, zapoznaj się z modułem w rejestrze Terraform i zapoznaj się z dokumentacją modułu w usłudze GitHub. W dokumentacji znajdziesz więcej przykładów i samouczków dotyczących dostosowywania wdrożenia.
Dowiedz się, jak wdrożyć moduł Terraform stref docelowych platformy Azure za pomocą platformy HashiCorp Learn. Z tego miejsca możesz również dowiedzieć się, jak działają niektóre części modułu.