Reading Time: 3minutes

Bonjour à vous,

Aujourd’hui je vous propose d’évoquer un point récurrent sur des projets déployés dans Azure: La configuration d’une application.
Une fois votre projet prêt à être déployé dans azure, vous auriez surement l’idée d’héberger votre application dans un Azure App Service. Mais pour la configuration de votre application comment cela se passe?

Vous avez à votre disposition plusieurs solutions.

Partons du principe que l’ensemble de vos configurations applicatives sont disposées dans le fichier appsettings.json de votre projet.

Le fichier de configuration appsettings contient une structure de configuration json sur plusieurs niveau comme par exemple:

“Logging”:{

“Level”: “Error”,

“App”: “MyApp” 

},

“Version”: “1.0.0”

Vous avez alors plusieurs choix à votre disposition afin de définir ces valeurs de configuration en fonction de l’environnement ou celle ci est déployée.

Solution 3: Azure App Configuration

Azure app configuration est un service qui permet de stocker la configuration de vos applications de manière centralisée. A mon sens, c’est la manière la plus propre de stocker et maintenir les configurations d’une application dans azure.

Solution 1: Remplacement via token

Cette solution consiste dans votre fichier appsetting à remplacer les valeurs de configuration par des token.

Un token est représenté par un nom unique préfixé et suffixé qui sera remplacé au moment du déploiement.

Si je reprend la structure json précédente pour illustration cela donnerai:

“Logging”:{

“Level”: “#LogLevel#”,

“App”: “#AppName#” 

},

“Version”: “#AppVersion#”

Dans l’exemple si dessus, mes tokens sont préfixé et suffixé par #, ce qui permettra d’effectuer le remplacement de ces token par les valeurs de configuration.

Parlons du remplacement des valeurs maintenant. Imaginons que vous utilisez un outils de CI/CD tel que Azure DevOps qui vous permet d’effectuer des pipelines de build et de release.

Il vous suffit de définir vos variables par environnement dans vos pipelines de release puis d’utiliser une tâche tel que Replace token (disponible sur le marketplace gratuitement) afin de l’extension remplace pour vous les tokens par la valeur de vos variables définies au niveau de votre pipeline de release et cela en fonction de l’environnement ou vous déployez.

Replace Tokens – Visual Studio Marketplace

Sur un autre outil la démarche est la même, c’est juste la solution technique à mettre en place qui sera différente.

Solution 2: Utilisation de la configuration AppService

Le service Azure AppService permet d’effectuer la configuration d’une application via le menu:

La petite particularité c’est que ce système va override les valeurs de votre appsettings.json, autrement dit pas besoin de token dans ce cas la.

Pour effectuer un override d’une configuration vous n’avez juste qu’a ajouter des pairs de clé/valeur correspondant à vos besoins.

Dans appservice, pour faire ce genre de chose il y a une synthaxe bien particulière, en effet via un json nous avons plus l’habitude pour accèder à un attribut d’utiliser le point, exemple: Logging.Level

Dans appservice ce n’est pas possible, le point est à remplacer par __ (2 underscores)

Si je reprend donc l’exemple de json suivant:

“Logging”:{

“Level”: “Error”,

“App”: “MyApp” 

},

“Version”: “1.0.0”

Ceci donnerai les valeurs de configuration suivantes:

Logging__Level = “Error”

Logging__App = “MyApp”

Version = “1.0.0”

Dès lors ou vous voulez définit la valeur d’attribut enfant vous devez utiliser __ comme séparateur. Dans l’exemple, je n’ai pris qu’un seul niveau, mais ce principe est applicable peu importe le nombre d’enfant, exemple:

Parent__Enfant1__Enfant2__Enfant3….

Bien évidemment ces valeurs de configuration peuvent être mise à jour par un processus de CICD et via les appservices vous pouvez utiliser la fonction de Slots pour avoir à disposition plusieurs environnements et donc des configuration différentes par environnement.

Solution 3: Utilisation de Azure App Configuration

Azure met à disposition un service nommé App Configuration qui permet de centraliser la configuration de vos applications à un seul endroit. A mon sens, c’est une des solutions idéale afin de pouvoir centraliser les configurations à un seul et même endroit et potentiellement effectuer de la réutilisation de configuration à travers différentes parties de votre application.

Il vous suffit donc de créer un service de type App Configuration et y mettre vos configurations. Une fois fait, vous aurez besoin dans votre application de consommer ces configurations via le SDK, plus d’info ici: Démarrage rapide pour Azure App Configuration avec .NET Core | Microsoft Docs

Contrairement à l’appservice, le séparateur n’est pas le double underscore (__) mais :

Exemple: Logging:LoggingLevel

 

A vous maintenant de faire un choix en fonction de votre besoin 😉

A bientôt!