Configurer des environnements intermédiaires dans Azure App ServiceSet up staging environments in Azure App Service

Lorsque vous déployez votre application web, votre application web Linux, votre backend mobile ou votre API dans App Service, vous pouvez cibler un autre emplacement de déploiement que l’emplacement de production par défaut lorsque vous exécutez le niveau de plan Standard, Premium ou Isolé d’App Service.When you deploy your web app, web app on Linux, mobile back end, and API app to App Service, you can deploy to a separate deployment slot instead of the default production slot when running in the Standard, Premium, or Isolated App Service plan tier. Les emplacements de déploiement sont en fait des applications dynamiques pourvues de leur propre nom d’hôte.Deployment slots are actually live apps with their own hostnames. Les éléments de contenu et de configuration des applications peuvent être échangés entre deux emplacements de déploiement, y compris l’emplacement de production.App content and configurations elements can be swapped between two deployment slots, including the production slot. Le déploiement de votre application sur un emplacement de déploiement présente les avantages suivants :Deploying your application to a deployment slot has the following benefits:

  • Vous pouvez valider les modifications d’une application dans un emplacement de déploiement intermédiaire avant de l’échanger avec l’emplacement de production.You can validate app changes in a staging deployment slot before swapping it with the production slot.
  • Déployer d’abord une application vers un emplacement et la basculer ensuite en production garantit que toutes les instances de l’emplacement sont initialisées avant d’être basculées en production.Deploying an app to a slot first and swapping it into production ensures that all instances of the slot are warmed up before being swapped into production. Cela permet d’éliminer les temps d’arrêt lors du déploiement de l’application.This eliminates downtime when you deploy your app. La redirection du trafic est transparente et aucune demande n'est abandonnée durant les opérations de basculement.The traffic redirection is seamless, and no requests are dropped as a result of swap operations. Ce flux de travail peut être entièrement automatisé en configurant Échange automatique lorsqu’aucune validation n’est requise avant l’échange.This entire workflow can be automated by configuring Auto Swap when pre-swap validation is not needed.
  • Après basculement, la précédente application de production se retrouve dans l’emplacement de l’application précédemment intermédiaire.After a swap, the slot with previously staged app now has the previous production app. Si les modifications basculées en production ne vous conviennent pas, vous pouvez effectuer le même basculement afin de récupérer immédiatement le contenu du précédent site qui vous plaisait.If the changes swapped into the production slot are not as you expected, you can perform the same swap immediately to get your "last known good site" back.

Chaque niveau de plan App Service prend en charge un nombre différent d’emplacements de déploiement.Each App Service plan tier supports a different number of deployment slots. Pour connaître le nombre d’emplacements pris en charge par le plan de votre application, consultez Limites App Service.To find out the number of slots your app's tier supports, see App Service Limits. Pour mettre votre application à l’échelle vers un niveau différent, le niveau cible doit prendre en charge le nombre d’emplacements déjà utilisés par votre application.To scale your app to a different tier, the target tier must support the number of slots your app already uses. Par exemple, si votre application possède plus de 5 emplacements, vous ne pouvez pas redéfinir le niveau Standard, car le niveau Standard prend uniquement en charge 5 emplacements.For example, if your app has more than 5 slots, you cannot scale it down to Standard tier, because Standard tier only supports 5 deployment slots.

Ajouter un emplacement de déploiementAdd a deployment slot

Pour que vous puissiez activer plusieurs emplacements de déploiement, l’application doit s’exécuter au niveau Standard, Premium ou *Isolé.The app must be running in the Standard, Premium, or *Isolated tier in order for you to enable multiple deployment slots.

  1. Dans le portail Azure, ouvrez le panneau de ressources de votre application.In the Azure Portal, open your app's resource blade.
  2. Choisissez l’option Emplacements de déploiement, puis cliquez sur Ajouter un emplacement.Choose the Deployment slots option, then click Add Slot.

    Add a new deployment slot

    Note

    Si l’application ne s’exécute pas au niveau Standard, Premium ou *Isolé, vous recevez un message indiquant les niveaux pris en charge pour l’activation de la publication intermédiaire.If the app is not already in the Standard, Premium, or *Isolated tier, you will receive a message indicating the supported tiers for enabling staged publishing. À ce stade, vous pouvez sélectionner Mettre à niveau et accéder à l’onglet Mettre à l’échelle de votre application avant de continuer.At this point, you have the option to select Upgrade and navigate to the Scale tab of your app before continuing.

  3. Dans le panneau Ajouter un emplacement, nommez l’emplacement, puis indiquez si vous souhaitez cloner la configuration de l’application à partir d’un autre emplacement de déploiement.In the Add a slot blade, give the slot a name, and select whether to clone app configuration from another existing deployment slot. Cliquez sur la coche pour continuer.Click the check mark to continue.

    Source de configuration

    La première fois que vous ajoutez un emplacement, vous avez uniquement deux choix : cloner la configuration à partir de l’emplacement par défaut en production ou ne rien cloner du tout.The first time you add a slot, you only have two choices: clone configuration from the default slot in production or not at all. Après avoir créé plusieurs emplacements, vous pourrez cloner la configuration depuis un emplacement autre que l'emplacement de production :After you have created several slots, you will be able to clone configuration from a slot other than the one in production:

    Sources de configuration

  4. Dans le panneau des ressources de votre application, cliquez sur Emplacements de déploiement, puis cliquez sur un emplacement de déploiement pour ouvrir le panneau des ressources correspondant. Comme pour toute autre application, celui-ci contient un ensemble de mesures et de paramètres de configuration.In your app's resource blade, click Deployment slots, then click a deployment slot to open that slot's resource blade, with a set of metrics and configuration just like any other app. Le nom de l’emplacement est indiqué en haut du panneau pour vous rappeler que c’est l’emplacement de déploiement qui affiché.The name of the slot is shown at the top of the blade to remind you that you are viewing the deployment slot.

    Titre de l'emplacement de déploiement

  5. Cliquez sur l’URL de l’application dans le panneau de l’emplacement.Click the app URL in the slot's blade. Notez que l’emplacement de déploiement possède son propre nom d’hôte et qu’il s’agit d’une application dynamique.Notice the deployment slot has its own hostname and is also a live app. Pour limiter l’accès public à l’emplacement de déploiement, consultez la page Application web App Service : bloquer l’accès web aux emplacements de déploiement autres que de production.To limit public access to the deployment slot, see App Service Web App – block web access to non-production deployment slots.

Il n’existe pas de contenu après la création de l’emplacement de déploiement.There is no content after deployment slot creation. Vous pouvez effectuer un déploiement sur l'emplacement d'une autre branche référentielle, ou d'un référentiel complètement différent.You can deploy to the slot from a different repository branch, or an altogether different repository. Vous pouvez également modifier la configuration de l'emplacement.You can also change the slot's configuration. Utilisez le profil de publication ou les informations d'identification associées à l'emplacement de déploiement pour les mises à jour de contenu.Use the publish profile or deployment credentials associated with the deployment slot for content updates. Par exemple, vous pouvez publier sur cet emplacement avec Git.For example, you can publish to this slot with git.

Quels sont les paramètres échangés ?Which settings are swapped?

Lorsque vous clonez la configuration depuis un autre emplacement de déploiement, celle-ci est modifiable.When you clone configuration from another deployment slot, the cloned configuration is editable. Par ailleurs, après un échange, certains éléments de configuration suivent le contenu (éléments non propres à un emplacement) tandis que d’autres restent dans le même emplacement (éléments propres à un emplacement).Furthermore, some configuration elements will follow the content across a swap (not slot specific) while other configuration elements will stay in the same slot after a swap (slot specific). Les listes suivantes représentent les paramètres qui évoluent lorsque vous échangez les emplacements.The following lists show the settings that change when you swap slots.

Paramètres échangés:Settings that are swapped:

  • Paramètres généraux, par exemple versions d’infrastructure, 32/64 bits, sockets webGeneral settings - such as framework version, 32/64-bit, Web sockets
  • Paramètres d’application (peuvent être configurés pour respecter un emplacement)App settings (can be configured to stick to a slot)
  • Chaînes de connexion (peuvent être configurées pour respecter un emplacement)Connection strings (can be configured to stick to a slot)
  • Mappages de gestionnairesHandler mappings
  • Paramètres de surveillance et de diagnosticsMonitoring and diagnostic settings
  • Contenu WebJobsWebJobs content
  • Connexions hybridesHybrid connections

Paramètres non échangés:Settings that are not swapped:

  • Points de terminaison de publicationPublishing endpoints
  • Noms de domaine personnalisésCustom Domain Names
  • Certificats SSL et liaisonsSSL certificates and bindings
  • Paramètres de mise à l'échelleScale settings
  • Planificateurs WebJobsWebJobs schedulers

Pour lier un paramètre d’application ou une chaîne de connexion à un emplacement (aucun échange), accédez au panneau Paramètres de l’application d’un emplacement, puis cochez la case Paramètre d’emplacement correspondant aux éléments de configuration à lier à cet emplacement.To configure an app setting or connection string to stick to a slot (not swapped), access the Application Settings blade for a specific slot, then select the Slot Setting box for the configuration elements that should stick to the slot. Si vous marquez un élément de configuration comme propre à un emplacement, cet élément ne pourra pas être échangé entre tous les emplacements de déploiement associés à l’application.Marking a configuration element as slot specific has the effect of establishing that element as not swappable across all the deployment slots associated with the app.

Paramètres d’emplacement

Échanger des emplacements de déploiementSwap deployment slots

Vous pouvez échanger des emplacements de déploiement dans la vue Vue d’ensemble ou Emplacements de déploiement du panneau de ressources de votre application.You can swap deployment slots in the Overview or Deployment slots view of your app's resource blade.

Important

Avant de basculer une application à partir d’un emplacement de déploiement vers un emplacement de production, assurez-vous que tous les paramètres non propres à un emplacement sont configurés comme vous le souhaitez dans la cible de l’échange.Before you swap an app from a deployment slot into production, make sure that all non-slot specific settings are configured exactly as you want to have it in the swap target.

  1. Pour échanger des emplacements de déploiement, cliquez sur le bouton Échanger dans la barre de commandes de l’application ou dans celle d’un emplacement de déploiement.To swap deployment slots, click the Swap button in the command bar of the app or in the command bar of a deployment slot.

    Bouton Swap

  2. Assurez-vous que la source et la cible de l’échange sont définies correctement.Make sure that the swap source and swap target are set properly. En règle générale, la cible de l’échange correspond à l’emplacement de production.Usually, the swap target is the production slot. Cliquez sur OK pour terminer l’opération.Click OK to complete the operation. À l’issue de l’opération, les emplacements de déploiement ont été échangés.When the operation finishes, the deployment slots have been swapped.

    Échange effectué

    Pour le type d’échange Échange avec aperçu, consultez Échange avec aperçu (échange multiphase).For the Swap with preview swap type, see Swap with preview (multi-phase swap).

Échange avec aperçu (échange multiphase)Swap with preview (multi-phase swap)

L’échange avec l’aperçu, ou échange multiphase, simplifie la validation des éléments de configuration spécifiques d’un emplacement, tels que les chaînes de connexion.Swap with preview, or multi-phase swap, simplify validation of slot-specific configuration elements, such as connection strings. Pour les charges de travail stratégiques, il est souhaitable de vérifier que l’application se comporte comme prévu lorsque la configuration de l’emplacement de production est appliquée, et cette vérification doit être effectuée avant le basculement de l’application en production.For mission-critical workloads, you want to validate that the app behaves as expected when the production slot's configuration is applied, and you must perform such validation before the app is swapped into production. C’est précisément ce que l’échange avec aperçu permet de faire.Swap with preview is what you need.

Note

L’échange avec l’aperçu n’est pas pris en charge dans les applications web sous Linux.Swap with preview is not supported in web apps on Linux.

Lorsque vous utilisez l’option Échange avec aperçu (voir Échanger des emplacements de déploiement), App Service :When you use the Swap with preview option (see Swap deployment slots), App Service does the following:

  • Laisse l’emplacement de destination inchangé, de sorte que la charge de travail existante dans cet emplacement (de production, par exemple) n’est pas affectée.Keeps the destination slot unchanged so existing workload on that slot (such as production) is not impacted.
  • Applique les éléments de configuration de l’emplacement de destination à l’emplacement source, y compris les chaînes de connexion spécifiques de l’emplacement et les paramètres de l’application.Applies the configuration elements of the destination slot to the source slot, including the slot-specific connection strings and app settings.
  • Redémarre les processus de travail dans l’emplacement source à l’aide des éléments de configuration mentionnés ci-dessus.Restarts the worker processes on the source slot using these aforementioned configuration elements.
  • Lorsque vous effectuez l’échange : transfère l’emplacement source préinitialisé dans l’emplacement de destination.When you complete the swap: Moves the pre-warmed-up source slot into the destination slot. L’emplacement de destination est transféré dans l’emplacement source, comme dans le cadre d’un échange manuel.The destination slot is moved into the source slot as in a manual swap.
  • Lorsque vous annulez l’échange : réapplique les éléments de configuration de l’emplacement source à l’emplacement source.When you cancel the swap: Reapplies the configuration elements of the source slot to the source slot.

Vous pouvez prévisualiser le comportement précis de l’application avec la configuration de l’emplacement de destination.You can preview exactly how the app will behave with the destination slot's configuration. Une fois la validation terminée, vous effectuez l’échange dans le cadre d’une étape distincte.Once you complete validation, you complete the swap in a separate step. L’avantage de cette étape est que l’emplacement source est déjà initialisé avec la configuration souhaitée et que les clients ne sont pas confrontés à des temps d’arrêt.This step has the added advantage that the source slot is already warmed up with the desired configuration, and clients don't experience any downtime.

Des exemples pour les applets de commande Azure PowerShell disponibles pour l’échange multiphase figurent dans les applets de commande Azure PowerShell de la section des emplacements de déploiement.Samples for the Azure PowerShell cmdlets available for multi-phase swap are included in the Azure PowerShell cmdlets for deployment slots section.

Configurer l’échange automatiqueConfigure Auto Swap

L’échange automatique simplifie les scénarios d’opérations de développement impliquant un déploiement de l’application en continu sans démarrage à froid ni temps d’arrêt pour les clients finaux.Auto Swap streamlines DevOps scenarios where you want to continuously deploy your app with zero cold start and zero downtime for end customers of the app. Si un emplacement de déploiement est configuré pour l’échange automatique en production, chaque fois que vous envoyez une mise à jour de votre code par une transmission de type push vers cet emplacement, App Service échange automatiquement l’application en production après l’avoir initialisée dans l’emplacement.When a deployment slot is configured for Auto Swap into production, every time you push your code update to that slot, App Service will automatically swap the app into production after it has already warmed up in the slot.

Important

Lorsque vous activez l’échange automatique pour un emplacement, vérifiez que la configuration de l’emplacement est exactement celle que vous souhaitez pour l’emplacement cible (en général, l’emplacement de production).When you enable Auto Swap for a slot, make sure the slot configuration is exactly the configuration intended for the target slot (usually the production slot).

Note

L’échange automatique n’est pas pris en charge dans les applications web sous Linux.Auto Swap is not supported in web apps on Linux.

La configuration de l’échange automatique pour un emplacement est facile.Configuring Auto Swap for a slot is easy. Procédez comme suit :Follow these steps:

  1. Dans Emplacements de déploiement, sélectionnez un emplacement autre que de production et choisissez Paramètres de l’application dans le panneau de ressources de cet emplacement.In Deployment Slots, select a non-production slot, and choose Application Settings in that slot's resource blade.

  2. Sélectionnez Activé dans Échange automatique, ainsi que l’emplacement cible souhaité dans Emplacement d’échange automatique, puis cliquez sur Enregistrer dans la barre de commandes.Select On for Auto Swap, select the desired target slot in Auto Swap Slot, and click Save in the command bar. Assurez-vous que la configuration de l’emplacement est celle que vous souhaitez pour l’emplacement cible.Make sure configuration for the slot is exactly the configuration intended for the target slot.

    Dans l’onglet Notifications, la mention RÉUSSITE clignote en vert une fois l’opération terminée.The Notifications tab flashes a green SUCCESS once the operation is complete.

    Note

    Pour tester l’échange automatique avec votre application, commencez par sélectionner un emplacement cible autre que de production dans Emplacement d’échange automatique afin de vous familiariser avec la fonctionnalité.To test Auto Swap for your app, you can first select a non-production target slot in Auto Swap Slot to become familiar with the feature.

  3. Exécutez une transmission de code de type push vers cet emplacement de déploiement.Execute a code push to that deployment slot. L’échange automatique se produit peu après, et la mise à jour est appliquée dans l’URL de votre emplacement cible.Auto Swap happens after a short time and the update is reflected at your target slot's URL.

Rétablir une application de production après un échangeRoll back a production app after swap

Si vous identifiez des erreurs de production après un basculement d'emplacements, rétablissez ces deux emplacements comme ils étaient, en les intervertissant immédiatement.If any errors are identified in production after a slot swap, roll the slots back to their pre-swap states by swapping the same two slots immediately.

Mise en route personnalisée avant la permutationCustom warm-up before swap

Quand vous utilisez Échange-automatique, certaines applications peuvent nécessiter des actions personnalisées de préchauffage.When using Auto-Swap, some apps may require custom warm-up actions. L’élément de configuration applicationInitialization du fichier web.config vous permet de spécifier les actions d’initialisation personnalisées à exécuter avant la réception d’une demande.The applicationInitialization configuration element in web.config allows you to specify custom initialization actions to be performed before a request is received. L'opération d’échange attend la fin de cette mise en route personnalisée.The swap operation waits for this custom warm-up to complete. Voici un exemple de fragment web.config.Here is a sample web.config fragment.

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostname="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Surveiller l’avancement de l’échangeMonitor swap progress

Parfois, l’opération d’échange prend un certain temps à s’exécuter, comme quand l’application qui est échangée affiche un long délai de mise en route.Sometimes, the swap operation takes some time to complete, such as when the app that is swapped has a long warm-up time. Pour en savoir plus sur les opérations d’échange, accédez au journal d’activité dans le portail Azure.You can get more information on swap operations in the Activity Log in the Azure portal.

Sur la page de votre application dans le portail, dans le volet de navigation gauche, sélectionnez Journal d’activité.In your app page of the portal, in the left-hand navigation, select Activity log.

Une opération d’échange s’affiche dans la requête de journal en tant que Slotsswap.A swap operation appears in the log query as Slotsswap. Vous pouvez la développer et sélectionner l’une des sous-opérations ou erreurs afin d’afficher le contenu en détail.You can expand it and select one of the suboperations or errors to see the details.

Journal d’activité dédié aux échanges d’emplacements

Supprimer un emplacement de déploiementDelete a deployment slot

Ouvrez le panneau d’un emplacement de déploiement, cliquez sur Vue d’ensemble (page par défaut), puis cliquez sur Supprimer dans la barre de commandes.In the blade for a deployment slot, open the deployment slot's blade, click Overview (the default page), and click Delete in the command bar.

Supprimer un emplacement de déploiement

Automatiser avec Azure PowerShellAutomate with Azure PowerShell

Azure PowerShell est un module qui fournit des applets de commande pour gérer Azure via Windows PowerShell, notamment la prise en charge de la gestion des emplacements de déploiement des applications dans Azure App Service.Azure PowerShell is a module that provides cmdlets to manage Azure through Windows PowerShell, including support for managing deployment slots in Azure App Service.


Créer une application webCreate a web app

New-AzureRmWebApp -ResourceGroupName [resource group name] -Name [app name] -Location [location] -AppServicePlan [app service plan name]

Créer un emplacement de déploiementCreate a deployment slot

New-AzureRmWebAppSlot -ResourceGroupName [resource group name] -Name [app name] -Slot [deployment slot name] -AppServicePlan [app service plan name]

Initialiser un échange avec aperçu (échange multiphase) et appliquer la configuration de l’emplacement de destination à l’emplacement sourceInitiate a swap with preview (multi-phase swap) and apply destination slot configuration to source slot

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzureRmResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action applySlotConfig -Parameters $ParametersObject -ApiVersion 2015-07-01

Annuler un échange en attente (échange avec aperçu) et restaurer la configuration de l’emplacement sourceCancel a pending swap (swap with review) and restore source slot configuration

Invoke-AzureRmResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action resetSlotConfig -ApiVersion 2015-07-01

Échanger des emplacements de déploiementSwap deployment slots

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzureRmResourceAction -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots -ResourceName [app name]/[slot name] -Action slotsswap -Parameters $ParametersObject -ApiVersion 2015-07-01

Surveiller les événements d’échange dans le journal d’activitéMonitor swap events in the Activity Log

Get-AzureRmLog -ResourceGroup [resource group name] -StartTime 2018-03-07 -Caller SlotSwapJobProcessor  

Supprimer un emplacement de déploiementDelete deployment slot

Remove-AzureRmResource -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites/slots –Name [app name]/[slot name] -ApiVersion 2015-07-01

Automatiser avec Azure CLIAutomate with Azure CLI

Pour connaître les commandes de l’interface Azure CLI pour les emplacements de déploiement, consultez az webapp deployment slot.For Azure CLI commands for deployment slots, see az webapp deployment slot.

Étapes suivantesNext steps

Application web Azure App Service : bloquer l’accès web aux emplacements de déploiement autres que de productionAzure App Service Web App – block web access to non-production deployment slots
Présentation d’App Service sur LinuxIntroduction to App Service on Linux
Version d’évaluation gratuite de Microsoft AzureMicrosoft Azure Free Trial