Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ Front Door Standard ✔️ Front Door Premium
Den här snabbstarten beskriver hur du använder Terraform för att skapa en Front Door-profil för att konfigurera hög tillgänglighet för en webbslutpunkt.
Anteckning
För webbarbetsbelastningar rekommenderar vi starkt att du använder Azure DDoS-skydd och en brandvägg för webbprogram för att skydda mot nya DDoS-attacker. Ett annat alternativ är att använda Azure Front Door tillsammans med en brandvägg för webbprogram. Azure Front Door erbjuder skydd på plattformsnivå mot DDoS-attacker på nätverksnivå. Mer information finns i Säkerhetsbaslinje för Azure-tjänster.
I den här artikeln kan du se hur du:
- Skapa ett slumpmässigt värde för Azure-resursgruppens namn med hjälp av random_pet.
 - Skapa en Azure-resursgrupp med hjälp av azurerm_resource_group.
 - Skapa ett slumpmässigt värde för Front Door-endpunktresursnamnet och appnamnet i App Service med hjälp av random_id.
 - Skapa en Front Door-profil med hjälp av azurerm_cdn_frontdoor_profile.
 - Skapa en Front Door-slutpunkt med hjälp av azurerm_cdn_frontdoor_endpoint.
 - Skapa en Front Door-ursprungsgrupp med hjälp av azurerm_cdn_frontdoor_origin_group
 - Skapa ett Front Door-ursprung som refererar till App Service-appen med hjälp av azurerm_cdn_frontdoor_origin.
 - Skapa en Front Door-rutt med hjälp av azurerm_cdn_frontdoor_route.
 - Skapa en App Service-plan med hjälp av azurerm_service_plan.
 - Skapa en App Service-app med hjälp av azurerm_windows_web_app.
 
Förutsättningar
Implementera Terraform-koden
Anteckning
Exempelkoden för den här artikeln finns på Azure Terraform GitHub-lagringsplatsen. Du kan visa loggfilen som innehåller testresultaten från aktuella och tidigare versioner av Terraform.
Se fler artiklar och exempelkod som visar hur du använder Terraform för att hantera Azure-resurser
Skapa en katalog där du kan testa Terraform-exempelkoden och göra den till den aktuella katalogen.
Skapa en fil med namnet
providers.tfoch infoga följande kod:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Skapa en fil med namnet
main.tfoch infoga följande kod:resource "random_pet" "rg-name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg-name.id location = var.resource_group_location } resource "random_id" "front_door_endpoint_name" { byte_length = 8 } locals { front_door_profile_name = "MyFrontDoor" front_door_endpoint_name = "afd-${lower(random_id.front_door_endpoint_name.hex)}" front_door_origin_group_name = "MyOriginGroup" front_door_origin_name = "MyAppServiceOrigin" front_door_route_name = "MyRoute" } resource "azurerm_cdn_frontdoor_profile" "my_front_door" { name = local.front_door_profile_name resource_group_name = azurerm_resource_group.rg.name sku_name = var.front_door_sku_name } resource "azurerm_cdn_frontdoor_endpoint" "my_endpoint" { name = local.front_door_endpoint_name cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.my_front_door.id } resource "azurerm_cdn_frontdoor_origin_group" "my_origin_group" { name = local.front_door_origin_group_name cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.my_front_door.id session_affinity_enabled = true load_balancing { sample_size = 4 successful_samples_required = 3 } health_probe { path = "/" request_type = "HEAD" protocol = "Https" interval_in_seconds = 100 } } resource "azurerm_cdn_frontdoor_origin" "my_app_service_origin" { name = local.front_door_origin_name cdn_frontdoor_origin_group_id = azurerm_cdn_frontdoor_origin_group.my_origin_group.id enabled = true host_name = azurerm_windows_web_app.app.default_hostname http_port = 80 https_port = 443 origin_host_header = azurerm_windows_web_app.app.default_hostname priority = 1 weight = 1000 certificate_name_check_enabled = true } resource "azurerm_cdn_frontdoor_route" "my_route" { name = local.front_door_route_name cdn_frontdoor_endpoint_id = azurerm_cdn_frontdoor_endpoint.my_endpoint.id cdn_frontdoor_origin_group_id = azurerm_cdn_frontdoor_origin_group.my_origin_group.id cdn_frontdoor_origin_ids = [azurerm_cdn_frontdoor_origin.my_app_service_origin.id] supported_protocols = ["Http", "Https"] patterns_to_match = ["/*"] forwarding_protocol = "HttpsOnly" link_to_default_domain = true https_redirect_enabled = true }Skapa en fil med namnet
app-service.tfoch infoga följande kod:resource "random_id" "app_name" { byte_length = 8 } locals { app_name = "myapp-${lower(random_id.app_name.hex)}" app_service_plan_name = "AppServicePlan" } resource "azurerm_service_plan" "app_service_plan" { name = local.app_service_plan_name location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name sku_name = var.app_service_plan_sku_name os_type = "Windows" worker_count = var.app_service_plan_capacity } resource "azurerm_windows_web_app" "app" { name = local.app_name location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name service_plan_id = azurerm_service_plan.app_service_plan.id https_only = true site_config { ftps_state = "Disabled" minimum_tls_version = "1.2" ip_restriction { service_tag = "AzureFrontDoor.Backend" ip_address = null virtual_network_subnet_id = null action = "Allow" priority = 100 headers { x_azure_fdid = [azurerm_cdn_frontdoor_profile.my_front_door.resource_guid] x_fd_health_probe = [] x_forwarded_for = [] x_forwarded_host = [] } name = "Allow traffic from Front Door" } } }Skapa en fil med namnet
variables.tfoch infoga följande kod:variable "resource_group_location" { type = string description = "Location for all resources." default = "eastus" } variable "resource_group_name_prefix" { type = string description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." default = "rg" } variable "app_service_plan_sku_name" { type = string description = "The SKU for the plan. Possible values include: B1, B2, B3, D1, F1, I1, I2, I3, I1v2, I2v2, I3v2, I4v2, I5v2, I6v2, P1v2, P2v2, P3v2, P0v3, P1v3, P2v3, P3v3, P1mv3, P2mv3, P3mv3, P4mv3, P5mv3, S1, S2, S3, SHARED, EP1, EP2, EP3, WS1, WS2, WS3, Y1." default = "S1" validation { condition = contains(["B1", "B2", "B3", "D1", "F1", "I1", "I2", "I3", "I1v2", "I2v2", "I3v2", "I4v2", "I5v2", "I6v2", "P1v2", "P2v2", "P3v2", "P0v3", "P1v3", "P2v3", "P3v3", "P1mv3", "P2mv3", "P3mv3", "P4mv3", "P5mv3", "S1", "S2", "S3", "SHARED", "EP1", "EP2", "EP3", "WS1", "WS2", "WS3", "Y1"], var.app_service_plan_sku_name) error_message = "The SKU value must be one of the following: B1, B2, B3, D1, F1, I1, I2, I3, I1v2, I2v2, I3v2, I4v2, I5v2, I6v2, P1v2, P2v2, P3v2, P0v3, P1v3, P2v3, P3v3, P1mv3, P2mv3, P3mv3, P4mv3, P5mv3, S1, S2, S3, SHARED, EP1, EP2, EP3, WS1, WS2, WS3, Y1." } } variable "app_service_plan_capacity" { type = number description = "The number of Workers (instances) to be allocated." default = 1 } variable "front_door_sku_name" { type = string description = "The SKU for the Front Door profile. Possible values include: Standard_AzureFrontDoor, Premium_AzureFrontDoor" default = "Standard_AzureFrontDoor" validation { condition = contains(["Standard_AzureFrontDoor", "Premium_AzureFrontDoor"], var.front_door_sku_name) error_message = "The SKU value must be one of the following: Standard_AzureFrontDoor, Premium_AzureFrontDoor." } }Skapa en fil med namnet
outputs.tfoch infoga följande kod:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "frontDoorEndpointHostName" { value = azurerm_cdn_frontdoor_endpoint.my_endpoint.host_name }
Initiera Terraform
Kör terraform init för att initiera Terraform-distributionen. Det här kommandot laddar ned den Azure-provider som krävs för att hantera dina Azure-resurser.
terraform init -upgrade
Viktiga punkter:
- Parametern 
-upgradeuppgraderar nödvändiga provider-plugin-program till den senaste versionen som uppfyller konfigurationens versionsbegränsningar. 
Skapa en Terraform-utförandeplan
Kör terraform plan för att skapa en exekveringsplan.
terraform plan -out main.tfplan
Viktiga punkter:
- Kommandot 
terraform planskapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om exekveringsplanen matchar dina förväntningar innan du gör några ändringar i de faktiska resurserna. - Med den valfria 
-outparametern kan du ange en utdatafil för planen. Med hjälp av parametern-outser du till att planen du granskade är exakt vad som tillämpas. 
Tillämpa en Terraform-användningsplan
Kör terraform apply för att verkställa utförandeplanen på din molninfrastruktur.
terraform apply main.tfplan
Viktiga punkter:
- 
              
terraform applyExempelkommandot förutsätter att du tidigare kördeterraform plan -out main.tfplan. - Om du har angett ett annat filnamn för parametern 
-outanvänder du samma filnamn i anropet tillterraform apply. - Om du inte använde parametern 
-outanroparterraform applydu utan några parametrar. 
Verifiera resultatet
Hämta Front Door-slutpunkten:
terraform output -raw frontDoorEndpointHostNameKlistra in slutpunkten i en webbläsare.
              
              
            
Rensa resurser
Gör följande när du inte längre behöver de resurser som skapats via Terraform:
Kör terraform plan och ange
destroyflagga.terraform plan -destroy -out main.destroy.tfplanViktiga punkter:
- Kommandot 
terraform planskapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om exekveringsplanen matchar dina förväntningar innan du gör några ändringar i de faktiska resurserna. - Med den valfria 
-outparametern kan du ange en utdatafil för planen. Med hjälp av parametern-outser du till att planen du granskade är exakt vad som tillämpas. 
- Kommandot 
 Kör terraform apply för att tillämpa execution plan.
terraform apply main.destroy.tfplan
Felsöka Terraform i Azure
Felsöka vanliga problem när du använder Terraform i Azure