Azure Front Door : déployer un domaine personnalisé
Important
Azure Front Door (classique) va être mis hors service le 31 mars 2027. Pour éviter toute interruption de service, il est important de migrer vos profils Azure Front Door (classique) vers le niveau Azure Front Door Standard ou Premium au plus en mars 2027. Pour plus d’informations, consultez Mise hors service d’Azure Front Door (classique).
Cet exemple de script Azure CLI déploie un nom de domaine personnalisé et un certificat TLS sur un serveur frontal Azure Front Door. Ce script illustre l’approvisionnement entièrement automatisé d’Azure Front Door avec un nom de domaine personnalisé (hébergé par Azure DNS) et un certificat TLS.
Important
Ce script exige qu’une zone publique Azure DNS existe déjà pour le nom de domaine. Pour accéder à un didacticiel, consultez Héberger votre domaine dans Azure DNS.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
Exemple de script
Lancement d’Azure Cloud Shell
Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.
Pour ouvrir Cloud Shell, sélectionnez simplement Essayer en haut à droite d’un bloc de code. Vous pouvez aussi lancer Cloud Shell dans un onglet distinct du navigateur en accédant à https://shell.azure.com.
Quand Cloud Shell s’ouvre, vérifiez que Bash est sélectionné pour votre environnement. Les sessions ultérieures utiliseront Azure CLI dans un environnement Bash. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell, puis appuyez sur Entrée pour les exécuter.
Connexion à Azure
Cloud Shell est automatiquement authentifié sous le compte initial utilisé pour la connexion. Utilisez le script suivant pour vous connecter avec un autre abonnement, en remplaçant <Subscription ID>
par votre ID d’abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
Pour plus d’informations, consultez Définir l’abonnement actif ou Se connecter de manière interactive
Prise en main
Voici ce que va faire ce script :
- Créer un groupe de ressources
- Créer un compte de stockage pour héberger une application SPA
- Activer l’hébergement SPA sur le compte de stockage
- Télécharger un fichier
index.html
« Hello world! » - Créer un profil Front Door
- Créer un alias DNS pour Apex qui est résolu vers Front Door
- Créer un CNAME pour le nom d’hôte
adverify
- Créer un point de terminaison frontal Front Door pour le domaine personnalisé
- Ajouter un itinéraire à partir d’un front-end de domaine personnalisé à l’origine SPA
- Ajouter une règle d’acheminement pour rediriger HTTP -> HTTPS
- Activer HTTPS avec le certificat managé Front Door
Exécuter le script
Pour exécuter ce script, copiez le code suivant dans un fichier .sh, remplacez les variables codées en dur par vos valeurs de domaine, puis exécutez la commande suivante pour passer ces variables dans le script
AZURE_DNS_ZONE_NAME=www.contoso.com AZURE_DNS_ZONE_RESOURCE_GROUP=contoso-rg ./deploy-custom-apex-domain.sh
# Deploy a Custom Domain name and TLS certificate at the apex (root) on an Azure Front Door front-end.
# VARIABLES
# Change these hardcoded values if required
let "randomIdentifier=$RANDOM*$RANDOM"
# Use resource group environment variable if set
if [ "$RESOURCE_GROUP" == '' ];
then
resourceGroup="msdocs-frontdoor-rg-$randomIdentifier"
else
resourceGroup="${RESOURCE_GROUP}"
fi
location='AustraliaEast'
tag='deploy-custom-domain'
storage="msdocsafd$randomIdentifier"
frontDoor="msdocs-frontdoor-$randomIdentifier"
frontDoorFrontEnd='www-contoso'
ttl=300
if [ "$AZURE_DNS_ZONE_NAME" == '' ];
then
echo -e "\033[33mAZURE_DNS_ZONE_NAME environment variable is not set. Front Door will be created but custom frontend will not be configured because custom domain name not provided. Try:\n\n AZURE_DNS_ZONE_NAME=www.contoso.com AZURE_DNS_ZONE_RESOURCE_GROUP=contoso-dns-rg ./deploy-custom-apex-domain.sh\n\nSee Readme for details.\033[0m"
else
if [ "$AZURE_DNS_ZONE_RESOURCE_GROUP" == '' ];
then
# write error text
echo -e "\033[31mAZURE_DNS_ZONE_RESOURCE_GROUP environment variable is not set. Provide the resource group for the Azure DNS Zone. Try:\n\n AZURE_DNS_ZONE_NAME=www.contoso.com AZURE_DNS_ZONE_RESOURCE_GROUP=contoso-dns-rg ./deploy-custom-apex-domain.sh\n\nSee Readme for details.\033[0m"
# write stderr and exit
>&2 echo "AZURE_DNS_ZONE_RESOURCE_GROUP environment variable is not set."
exit 1
fi
fi
# Resource group
az group create -n $resourceGroup -l $location --tags $tag
# STORAGE ACCOUNT
az storage account create -n $storage -g $resourceGroup -l $location --sku Standard_LRS --kind StorageV2
# Make Storage Account a SPA
az storage blob service-properties update --account-name $storage --static-website \
--index-document 'index.html' --404-document 'index.html'
# Upload index.html
az storage blob upload --account-name $storage -f ./index.html -c '$web' -n 'index.html' --content-type 'text/html'
# Get the URL to use as the origin URL on the Front Door backend
spaFQUrl=$( az storage account show -n $storage --query 'primaryEndpoints.web' -o tsv )
# Remove 'https://' and trailing '/'
spaUrl=${spaFQUrl/https:\/\//} ; spaUrl=${spaUrl/\//}
# FRONT DOOR
frontDoorId=$( az network front-door create -n $frontDoor -g $resourceGroup --tags $tag --accepted-protocols Http Https --backend-address $spaUrl --query 'id' -o tsv )
if [ "$AZURE_DNS_ZONE_NAME" != '' ];
then
# AZURE DNS
# Apex hostname on contoso.com
# Create an Alias DNS recordset
az network dns record-set a create -n "@" -g $AZURE_DNS_ZONE_RESOURCE_GROUP --zone-name $AZURE_DNS_ZONE_NAME --target-resource $frontDoorId --ttl $ttl
# Create the domain verify CNAME
az network dns record-set cname set-record -g $AZURE_DNS_ZONE_RESOURCE_GROUP --zone-name $AZURE_DNS_ZONE_NAME --record-set-name "afdverify" --cname "afdverify.$frontDoor.azurefd.net" --ttl $ttl
# FRONT DOOR FRONT END
# Create a frontend for the custom domain
az network front-door frontend-endpoint create --front-door-name $frontDoor --host-name $AZURE_DNS_ZONE_NAME \
--name $frontDoorFrontEnd -g $resourceGroup --session-affinity-enabled 'Disabled'
# Update the default routing rule to include the new frontend
az network front-door routing-rule update --front-door-name $frontDoor -n 'DefaultRoutingRule' -g $resourceGroup \
--caching 'Enabled' --accepted-protocols 'Https' \
--frontend-endpoints 'DefaultFrontendEndpoint' $frontDoorFrontEnd
# Create http redirect to https routing rule
az network front-door routing-rule create -f $frontDoor -g $resourceGroup -n 'httpRedirect' \
--frontend-endpoints $frontDoorFrontEnd --accepted-protocols 'Http' --route-type 'Redirect' \
--patterns '/*' --redirect-protocol 'HttpsOnly'
# Update the default routing rule to include the new frontend
az network front-door routing-rule update --front-door-name $frontDoor -n 'DefaultRoutingRule' -g $resourceGroup \
--caching 'Enabled' --frontend-endpoints 'DefaultFrontendEndpoint' $frontDoorFrontEnd
# Enable HTTPS. This command will return quickly but provisioning can take up to an hour to complete
az network front-door frontend-endpoint enable-https \
--front-door-name $frontDoor -n $frontDoorFrontEnd -g $resourceGroup
fi
Nettoyer les ressources
Utilisez la commande suivante pour supprimer le groupe de ressources et toutes les ressources associées à celui-ci à l’aide de la commande az group delete, sauf si vous avez toujours besoin de ces ressources. La création, ainsi que la suppression, de certaines de ces ressources peut prendre du temps.
az group delete --name $resourceGroup
Informations de référence sur l’exemple
Ce script utilise les commandes suivantes. Chaque commande du tableau renvoie à une documentation spécifique.
Commande | Description |
---|---|
az group create | Crée un groupe de ressources dans lequel toutes les ressources sont stockées. |
az storage account create | Crée un compte de stockage Azure dans le groupe de ressources spécifié. |
az storage blob service-properties update | Mettez à jour les propriétés du service d’objets blob de stockage. |
az storage blob upload | Définit les propriétés système de l'objet blob. |
az storage account show | Affichez les propriétés du compte de stockage. |
az network front-door create | Créer une instance Front Door |
az network dns record-set | Gérez les enregistrements et les jeux d’enregistrements DNS. |
az network front-door | Gérez les instances Front Door. |
Étapes suivantes
Pour plus d’informations sur Azure CLI, consultez la documentation relative à l’interface Azure CLI.