Quickstart: Create an Azure Front Door (classic) using Bicep
Important
Azure Front Door (classic) will be retired on March 31, 2027. To avoid any service disruption, it is important that you migrate your Azure Front Door (classic) profiles to Azure Front Door Standard or Premium tier by March 2027. For more information, see Azure Front Door (classic) retirement.
This quickstart describes how to use Bicep to create an Azure Front Door (classic) to set up high availability for a web endpoint.
Bicep is a domain-specific language (DSL) that uses declarative syntax to deploy Azure resources. It provides concise syntax, reliable type safety, and support for code reuse. Bicep offers the best authoring experience for your infrastructure-as-code solutions in Azure.
Prerequisites
- If you don't have an Azure subscription, create a free account before you begin.
- IP or FQDN of a website or web application.
Review the Bicep file
The Bicep file used in this quickstart is from Azure Quickstart Templates.
In this quickstart, you'll create a Front Door configuration with a single backend and a single default path matching /*
.
@description('The name of the frontdoor resource.')
param frontDoorName string
@description('The hostname of the backend. Must be an IP address or FQDN.')
param backendAddress string
var frontEndEndpointName = 'frontEndEndpoint'
var loadBalancingSettingsName = 'loadBalancingSettings'
var healthProbeSettingsName = 'healthProbeSettings'
var routingRuleName = 'routingRule'
var backendPoolName = 'backendPool'
resource frontDoor 'Microsoft.Network/frontDoors@2021-06-01' = {
name: frontDoorName
location: 'global'
properties: {
enabledState: 'Enabled'
frontendEndpoints: [
{
name: frontEndEndpointName
properties: {
hostName: '${frontDoorName}.azurefd.net'
sessionAffinityEnabledState: 'Disabled'
}
}
]
loadBalancingSettings: [
{
name: loadBalancingSettingsName
properties: {
sampleSize: 4
successfulSamplesRequired: 2
}
}
]
healthProbeSettings: [
{
name: healthProbeSettingsName
properties: {
path: '/'
protocol: 'Http'
intervalInSeconds: 120
}
}
]
backendPools: [
{
name: backendPoolName
properties: {
backends: [
{
address: backendAddress
backendHostHeader: backendAddress
httpPort: 80
httpsPort: 443
weight: 50
priority: 1
enabledState: 'Enabled'
}
]
loadBalancingSettings: {
id: resourceId('Microsoft.Network/frontDoors/loadBalancingSettings', frontDoorName, loadBalancingSettingsName)
}
healthProbeSettings: {
id: resourceId('Microsoft.Network/frontDoors/healthProbeSettings', frontDoorName, healthProbeSettingsName)
}
}
}
]
routingRules: [
{
name: routingRuleName
properties: {
frontendEndpoints: [
{
id: resourceId('Microsoft.Network/frontDoors/frontEndEndpoints', frontDoorName, frontEndEndpointName)
}
]
acceptedProtocols: [
'Http'
'Https'
]
patternsToMatch: [
'/*'
]
routeConfiguration: {
'@odata.type': '#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration'
forwardingProtocol: 'MatchRequest'
backendPool: {
id: resourceId('Microsoft.Network/frontDoors/backEndPools', frontDoorName, backendPoolName)
}
}
enabledState: 'Enabled'
}
}
]
}
}
output name string = frontDoor.name
output resourceGroupName string = resourceGroup().name
output resourceId string = frontDoor.id
One Azure resource is defined in the Bicep file:
Deploy the Bicep file
Save the Bicep file as main.bicep to your local computer.
Deploy the Bicep file using either Azure CLI or Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters frontDoorName=<door-name> backendAddress=<backend-address>
Note
Replace <door-name> with the name of the Front Door resource. Replace <backend-address> with the hostname of the backend. It must be an IP address or FQDN.
When the deployment finishes, you should see a message indicating the deployment succeeded.
Validate the deployment
Use the Azure portal, Azure CLI, or Azure PowerShell to list the deployed resources in the resource group.
az resource list --resource-group exampleRG
Clean up resources
When no longer needed, use the Azure portal, Azure CLI, or Azure PowerShell to delete the Front Door service and the resource group. This removes the Front Door and all the related resources.
az group delete --name exampleRG
Next steps
In this quickstart, you created a Front Door.
To learn how to add a custom domain to your Front Door, continue to the Front Door tutorials.