Comment paramétrer vos variables d'environnement

January 26, 2017
Rédigé par
Révisé par

Comment paramétrer vos variables d'environnement

Il y a certaines choses qu’on ne devrait juste pas partager avec notre code. Il y a souvent des valeurs de configuration qui dépendent de l’environnement, comme les flags de débogage ou les Access Token pour des APIs comme Twilio.

Les variables d’environnement sont une bonne solution et sont faciles à utiliser dans la plupart des langages.

Variables d’environnement ????

gif de chien qui à l'air de s'intéroger

Les variables d’environnement, comme leur nom le suggère, sont des variables qui décrivent votre environnement dans votre système. La plus connue est sûrement PATH - qui détient les chemins d’accès pour tous les dossiers qui pourraient contenir des exécutables. Avec PATH vous pouvez juste écrire le nom d’un exécutable plutôt qu’un chemin entier pour y arriver dans votre terminal puisque le shell va vérifier le répertoire local ainsi que les répertoires spécifiés dans la variable PATH pour cet exécutable.

Hormis les variables “built-in” (intégrées), nous avons aussi l’opportunité de définir nos propres variables d’environnement. Comme elles sont liées à notre environnement, elles sont utiles pour les Access Token d’API, par exemple. Vous pourriez avoir une variable définie sur une valeur dans votre machine de développement et une autre dans votre environnement de production sans avoir des déclarations if ou des fichiers configurés spécialement.

Par exemple, les librairies d’aide Twilio cherchent les variables d’environnement TWILIO_ACCOUNT_SID et TWILIO_AUTH_TOKEN pour instancier un client avec ces deux valeurs. De cette façon, vous n’avez pas à vous soucier d’accidentellement mettre des identifiants sensibles dans un endroit comme GitHub.

Les variables d’environnement de Windows

Le réglage des variables d’environnement dans Windows est bien caché sous plusieurs couches de configuration de dialogues. Comme souvent dans Windows, nous paramétrerons les variables d’environnement en utilisant une interface utilisateur graphique. Pour ouvrir les interfaces respectives, vous devez d’abord ouvrir l’invite de Windows Run. Faites-le en pressant simultanément les touches Windows et R sur votre clavier. Saisissez sysdm.cpl dans le champ d’entrée et appuyez sur Enter ou Ok.

chercher le folder dans windows

Dans la nouvelle fenêtre qui s’ouvre, cliquez sur l’onglet Advanced (Avancé), puis sur le bouton Environment Variables (variables d’environnement) en bas à droite de la page.

localisations des variables utilisateur et système

La fenêtre a deux sections différentes. L’une contient la liste des variables d’environnement qui sont spécifiques à votre utilisateur, ce qui signifie qu’elles ne sont pas disponibles pour les autres utilisateurs. La deuxième section contient les variables du système global qui sont partagées entre tous les utilisateurs.

Créez une variable spécifique d’utilisateur en cliquant sur le bouton New (Nouveau) en dessous de la section user-specific. Dans l’invite, vous pouvez maintenant spécifier le nom de votre variable ainsi que la valeur. Créez une nouvelle variable avec le nom TWILIO_ACCOUNT_SID et copiez votre Account SID Twilio à partir de la Console. Cliquez sur Ok dans l’invite pour créer la variable, puis à nouveau dans la fenêtre des Environment Variables. Vous êtes maintenant bien configuré !

formulaire de création de variable utilisateur

Pour tester si ça a fonctionné, ouvrez l’invite de commande en appuyant sur Windows + R et en tapant cmd.exe. Si vous avez déjà ouvert l’invite de commandes, assurez-vous de la relancer pour vérifier que vos modifications ont été appliquées. Puis exécutez la commande suivante :

 

echo %TWILIO_ACCOUNT_SID%

Cela devrait afficher la valeur que vous avez enregistrée dans la variable d’environnement.

mpression écran de la variable d'environnement dans l'invite de commandes

Distributions macOS et Linux

Dans le but de paramétrer vos variables d’environnement sur macOS ou n’importe quel système d’exploitation basé sur UNIX, vous devez d’abord trouver quel shell vous allez exécuter. Vous pouvez faire ça en exécutant la commande suivante dans votre terminal :

echo $SHELL

La fin de la sortie devrait indiquer quel shell vous exécutez. Le shell typique est le shell bash que nous utiliserons dans cet exemple. Mais les étapes sont similaires pour les autres shells comme zsh ou fish.

Pour paramétrer une variable d’environnement, nous avons besoin d’utiliser la commande export sous le format suivant :

export KEY=value

Puisque cela ne la paramètrera que pour notre session actuelle, nous avons besoin d’ajouter cette commande à un fichier qui sera exécuté pour chaque session. Pour ce faire, ouvrez le fichier .bashrc dans votre répertoire root avec votre éditeur de code favori. Ajoutez la ligne suivante quelque part dans votre fichier .bashrc :

export TWILIO_ACCOUNT_SID=votreaccountsid

Remplacez votreaccountsid avec votre Account SID actuel que vous pouvez trouver dans la Console Twilio. Sauvegardez le fichier et ouvrez une nouvelle instance de terminal pour tester si ça a fonctionné en exécutant :

echo $TWILIO_ACCOUNT_SID

Vous devriez voir la valeur que vous avez stockée s’afficher.

impression écran de la variable d'environnement

.env.

Dans certaines situations, vous avez seulement besoin d’une variable d’environnement paramétrée pour un seul projet. Dans ce cas, les fichiers .env sont une bonne solution. C’est un fichier, au sein de votre projet, dans lequel vous spécifiez ces variables d’environnement. Après quoi vous pouvez vous servir de la librairie correspondant à votre langage de programmation respectif afin de charger le fichier qui définira dynamiquement ces variables.

Il existe des librairies pour la plupart des langages de programmation afin de charger ces fichiers. En voici quelques-unes :

Créez un fichier .env dans votre dossier de projet (généralement à la racine) et placez-y la paire  clé / valeur. Cela peut ressembler à ça :

TWILIO_ACCOUNT_SID=youraccountsid

Puisque vous ne voulez probablement pas suivre vos variables d’environnement dans votre repo git, assurez-vous d’ajouter le chemin vers votre fichier .env à votre .gitignore pour éviter de le push accidentellement.

Fournisseurs de Cloud

Paramétrer vos variables d’environnement sur votre machine de développement locale ou dans une VM (Virtual Machine) ne représente que la moitié du travail…

Et si on hébergeait notre application dans environnement cloud comme Heroku, Azure et AWS, ou même, qu’on l'encapsulait dans un conteneur Docker ? Par chance, tous ces fournisseurs ont une façon de définir des variables d’environnement. Vous pouvez trouver les instructions sur comment les paramétrer dans leurs documentations respectives :

Si vous ne pouvez pas trouver votre hébergeur cloud dans cette liste, ça ne veut pas forcément dire qu’il n’y a pas de façon de configurer vos variables d’environnement. Assurez-vous d’aller voir leurs documentation pour en savoir plus.

Résumé

C’est tout ! Vous pouvez maintenant paramétrer des variables d’environnement, ce qui signifie que vous pouvez prendre les valeurs de configuration basées sur votre environnement, hors de votre code et ainsi rendre celui-ci plus flexible et sécurisé.

Faites attention à ce que ces valeurs soient bien stockées en texte brut. Si vous prévoyez de stocker des valeurs très sensibles, vous devriez vous renseigner sur des solutions de stockage secret comme Vault.

Si vous avez des questions, ou que vous aimeriez partager les merveilleux projets que vous construisez en ce moment, envoyez-moi un mail à l’adresse dkundel@twilio.com, ou contactez-moi sur Twitter @dkundel. J’ai hâte de voir ce que vous allez construire !