Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird eine Beispielverwendung der privaten Endpunkt - und regionalen VNet-Integration veranschaulicht, um zwei Web-Apps (Frontend und Back-End) sicher mit der folgenden Terraform-Konfiguration zu verbinden:
- Bereitstellen eines VNet
- Erstellen des ersten Subnetzes für die Integration
- Erstellen des zweiten Subnetzes für den privaten Endpunkt und Deaktivieren von Subnetznetzwerkrichtlinien für private Endpunkte (satz
private_endpoint_network_policies_enabled = false) - Bereitstellen eines App Service-Plans vom Typ "Basic", "Standard", "PremiumV2", "PremiumV3", "IsolatedV2", "Functions Premium" (manchmal als Elastic Premium-Plan bezeichnet), erforderlich für das Feature "Privater Endpunkt"
- Erstellen Sie die Frontend-Web-App mit bestimmten App-Einstellungen, um die private DNS-Zone zu nutzen. Weitere Informationen finden Sie in den privaten Azure DNS-Zonen.
- Verbinden der Frontend-Web-App mit dem Integrationssubnetz
- Erstellen der Back-End-Web-App
- Erstellen der privaten DNS-Zone mit dem Namen der Zone für private Verknüpfungen für Web-Apps (
privatelink.azurewebsites.net) - Diese Zone mit dem VNet verknüpfen
- Erstellen Sie den privaten Endpunkt für die Back-End-Web-App im Endpunktsubnetz, und registrieren Sie DNS-Namen (Standort und SCM) in der zuvor erstellten privaten DNS-Zone.
So verwenden Sie Terraform in Azure
Navigieren Sie zur Azure-Dokumentation , um zu erfahren, wie Sie Terraform mit Azure verwenden.
Die vollständige Terraform-Datei
Um diese Datei zu verwenden, ersetzen Sie die Platzhalter "unique-frontend-app-name<" und "unique-backend-app-name" (Der App-Name wird verwendet, um weltweit einen eindeutigen> DNS-Namen zu bilden).<>
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
name = "appservice-rg"
location = "francecentral"
}
resource "azurerm_virtual_network" "vnet" {
name = "vnet"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
address_space = ["10.0.0.0/16"]
}
resource "azurerm_subnet" "integrationsubnet" {
name = "integrationsubnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.1.0/24"]
delegation {
name = "delegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
}
}
}
resource "azurerm_subnet" "endpointsubnet" {
name = "endpointsubnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.2.0/24"]
private_endpoint_network_policies_enabled = false
}
resource "azurerm_service_plan" "appserviceplan" {
name = "appserviceplan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
os_type = "Windows"
sku_name = "P1v2"
}
resource "azurerm_windows_web_app" "frontwebapp" {
name = "<unique-frontend-app-name>"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
site_config {}
app_settings = {
"WEBSITE_DNS_SERVER" = "168.63.129.16"
"WEBSITE_VNET_ROUTE_ALL" = "1"
}
}
resource "azurerm_app_service_virtual_network_swift_connection" "vnetintegrationconnection" {
app_service_id = azurerm_windows_web_app.frontwebapp.id
subnet_id = azurerm_subnet.integrationsubnet.id
}
resource "azurerm_windows_web_app" "backwebapp" {
name = "<unique-backend-app-name>"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
site_config {}
}
resource "azurerm_private_dns_zone" "dnsprivatezone" {
name = "privatelink.azurewebsites.net"
resource_group_name = azurerm_resource_group.rg.name
}
resource "azurerm_private_dns_zone_virtual_network_link" "dnszonelink" {
name = "dnszonelink"
resource_group_name = azurerm_resource_group.rg.name
private_dns_zone_name = azurerm_private_dns_zone.dnsprivatezone.name
virtual_network_id = azurerm_virtual_network.vnet.id
}
resource "azurerm_private_endpoint" "privateendpoint" {
name = "backwebappprivateendpoint"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
subnet_id = azurerm_subnet.endpointsubnet.id
private_dns_zone_group {
name = "privatednszonegroup"
private_dns_zone_ids = [azurerm_private_dns_zone.dnsprivatezone.id]
}
private_service_connection {
name = "privateendpointconnection"
private_connection_resource_id = azurerm_windows_web_app.backwebapp.id
subresource_names = ["sites"]
is_manual_connection = false
}
}