Comment définir des variables d'environnement ?
Temps de lecture: 7 minutes
Il y a des choses que nous ne devrions pas partager avec notre code. Il s'agit souvent de valeurs de configuration qui dépendent de l'environnement, telles que les indicateurs de débogage ou les access tokens des API comme Twilio. Les variables d'environnement offrent une bonne solution et sont faciles à utiliser dans la plupart des langages de programmation.
Les variables d'environnement ????
Comme leur nom l'indique, les variables d'environnement sont des variables de votre système qui décrivent votre environnement. La variable d'environnement la plus connue est probablement PATH
qui contient les chemins d'accès à tous les dossiers susceptibles de contenir des exécutables. Avec PATH
, vous pouvez écrire dans votre terminal le nom d'un exécutable plutôt que son chemin d'accès complet, car l'interpréteur vérifie le répertoire local ainsi que tous les répertoires spécifiés dans la variable PATH
pour cet exécutable.
Outre les variables « intégrées », vous avez également la possibilité de définir vos propres variables d'environnement. Comme elles sont liées à notre environnement, elles sont très utiles pour des choses telles que les access tokens des API. Vous pouvez définir une variable sur une valeur dans votre machine de développement et sur une autre valeur dans votre environnement de production sans avoir recours à des instructions if
ni à des fichiers de configuration spéciaux.
Les librairies d'aide de Twilio, par exemple, recherchent les variables d'environnement TWILIO_ACCOUNT_SID
et TWILIO_AUTH_TOKEN
si vous instanciez un client sans ces deux valeurs. Ainsi, vous n'avez pas à vous soucier de transférer accidentellement des informations d'identification sensibles à un emplacement tel que GitHub.
Définir les variables d'environnement sur les distributions MacOS et Linux
Pour définir les variables d'environnement sur MacOS ou tout système d'exploitation UNIX, vous devez d'abord savoir quel interpréteur vous exécutez. Pour ce faire, exécutez la commande suivante dans votre terminal.
La fin de la sortie doit indiquer l'interpréteur en cours d'exécution. L'interpréteur type est bash
que vous utiliserez dans cet exemple. Mais les étapes sont similaires pour d'autres interpréteurs tels que zsh
ou fish
.
Pour définir une variable d'environnement, vous devez utiliser la commande d'exportation au format suivant :
Comme cette commande ne s'applique qu'à la session en cours, vous devez l'ajouter dans un fichier qui sera exécuté pour chaque session. Pour ce faire, ouvrez le fichier .bashrc dans votre répertoire d'accueil à l'aide de votre éditeur de code favori. Ajoutez ensuite la ligne suivante quelque part dans le fichier :
Remplacez <YOUR_ACCOUNT_SID>
par le SID de votre compte depuis votre console Twilio. Enregistrez le fichier et ouvrez une nouvelle instance de terminal pour vérifier si cela a fonctionné en exécutant :
Vous devriez voir la valeur que vous y avez enregistrée.
Variables d'environnement Windows
Si vous utilisez une machine Windows, vous disposez de plusieurs moyens pour définir les variables d'environnement. Les méthodes les plus courantes consistent à utiliser PowerShell, CMD ou l'interface utilisateur graphique (GUI).
Vous pouvez stocker les variables d'environnement à trois emplacements différents :
- Dans le processus en cours. Le processus en cours est le plus souvent l'interpréteur que vous exécutez, p. ex. PowerShell, CMD, Bash, etc. Toutefois, il peut s'agir également d'autres applications, y compris la vôtre. Tout processus enfant démarré à partir du processus en cours hérite des variables d'environnement de ce processus. Les variables d'environnement sont supprimées à la fin du processus. Autrement dit, vous devez reconfigurer les variables d'environnement chaque fois que vous ouvrez un nouvel interpréteur.
C'est également de cette manière que les variables d'environnement sont stockées sur les distributions macOS et Linux. - Dans le registre des utilisateurs. La variable d'environnement est disponible pour tous les processus démarrés par l'utilisateur, et aucun autre utilisateur ne peut accéder à ces variables d'environnement (sans privilèges élevés).
- Dans le registre de la machine. Les variables d'environnement sont disponibles pour l'ensemble des utilisateurs et des processus, et la définition des variables d'environnement pour la machine requiert des privilèges élevés.
À quel emplacement devez-vous stocker les variables d'environnement ?
Si vous exécutez votre application à partir d'un interpréteur et que vous ne souhaitez pas que les variables d'environnement soient conservées, définissez les variables d'environnement pour le processus en cours. Si vous souhaitez que les variables d'environnement soient conservées, stockez-les dans le registre des utilisateurs. Si vous souhaitez configurer des variables d'environnement pour tous les utilisateurs, et pas seulement pour un utilisateur spécifique ou pour vous-même, stockez-les dans le registre de la machine.
Définir les variables d'environnement à l'aide de PowerShell
Bien que PowerShell soit également pris en charge sur les distributions MacOS et Linux via PowerShell Core, Windows PowerShell est préinstallé sur Windows. C'est l'interpréteur recommandé pour la plateforme Windows. Les cmdlets suivantes pour la configuration des variables d'environnement fonctionnent sous Windows, macOS et Linux.
Le moyen le plus courant et le plus simple de définir des variables d'environnement dans PowerShell est d'utiliser la variable $Env
, comme suit :
Après $Env
, ajoutez deux points, puis le nom de la variable d'environnement, suivi du signe égal et de la valeur que vous souhaitez utiliser. Cette action définit la variable d'environnement pour le processus en cours et est héritée par tout processus enfant que vous démarrez à partir de cet interpréteur.
Les deux alternatives suivantes donnent le même résultat, mais sont moins courantes :
Pour conserver les variables d'environnement sur les instances de l'interpréteur, vous pouvez enregistrer les cmdlets dans votre script de profil ou sous Windows, dans le registre des utilisateurs ou le registre de la machine, comme suit :
Les deux commandes ci-dessus entraînent un no-op sur MacOS et Linux, car il n'existe pas de concept de variables d'environnement utilisateur ou machine, mais uniquement des variables d'environnement de processus. Pour plus d'informations, consultez la documentation Microsoft sur les variables d'environnement PowerShell.
Définir les variables d'environnement à partir de CMD
Cmd, l'invite de commandes également appelée cmd.exe, est fournie avec toutes les installations de Windows. Vous devrez probablement utiliser PowerShell, mais dans le cas contraire, voici comment définir les variables d'environnement à partir de cmd et des fichiers batch.
Pour définir une variable d'environnement, vous pouvez utiliser la commande set
comme suit :
Cette commande définit la variable d'environnement pour le processus en cours et les processus enfants héritent des variables d'environnement. Toutefois, lorsque vous fermez cmd, les variables d'environnement sont perdues.
Pour conserver les variables d'environnement entre les processus, vous pouvez les stocker dans le registre des utilisateurs et/ou de la machine à l'aide de la commande setx
.
Ces commandes offrent davantage de fonctionnalités que vous pourrez approfondir en lisant la documentation sur la commande set et la commande setx.
Définir les variables d'environnement à l'aide de l'interface utilisateur graphique
La définition des variables d'environnement dans Windows à l'aide de la GUI est masquée derrière plusieurs couches de boîtes de dialogue de paramètres. Pour ouvrir l'interface correspondante, vous devez d'abord ouvrir l'invite d'exécution de Windows. Pour ce faire, appuyez simultanément sur les touches Windows
et R
de votre clavier. Ensuite, tapez sysdm.cpl
dans le champ de saisie et appuyez sur Enter
ou OK.
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 fenêtre.
La fenêtre comporte deux sections différentes. La première est la liste des variables d'environnement spécifiques à votre utilisateur. Cela signifie qu'elles ne sont pas disponibles pour les autres utilisateurs. L'autre section contient les variables du système qui sont partagées entre tous les utilisateurs.
Créez une variable spécifique à l'utilisateur en cliquant sur le bouton New (Nouveau) situé sous la section spécifique à l'utilisateur. Dans l'invite, vous pouvez maintenant spécifier le nom de votre variable ainsi que la valeur. Créez une nouvelle variable nommée TWILIO_ACCOUNT_SID
et copiez votre SID de compte Twilio depuis la console. Appuyez sur OK dans l'invite pour créer la variable, puis sur OK dans la fenêtre Environment Variables (Variables d'environnement). Vous êtes maintenant prêt.
Pour vérifier si cela a fonctionné, ouvrez l'invite de commande en appuyant sur Windows
+ R
et en tapant cmd.exe
. Si l'invite de commande est déjà ouverte, assurez-vous de la redémarrer pour que vos modifications soient appliquées. Dans l'invite de commande, exécutez la commande suivante :
La valeur enregistrée dans la variable d'environnement devrait s'afficher.
Utilisation des fichiers .env
Dans certains cas, vous n'avez besoin que d'un ensemble de variables d'environnement pour un seul projet. Dans ce cas, les fichiers .env constituent une excellente solution. Il s'agit de fichiers au sein de votre projet dans lesquels vous spécifiez des variables d'environnement. Vous utilisez ensuite une librairie pour 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 :
- Ruby
- Node.js
- Python
- C#, F#, VB.NET (dotnet-env ou dotenv.net)
- Java (tutoriel)
- PHP
Créez un fichier env. dans votre dossier de projet (généralement à la racine) et placez-y les paires clé-valeur. Cela peut se présenter comme suit :
Il ne vous reste plus qu'à utiliser la librairie correspondante et la variable d'environnement. Dans Node.js, par exemple, le code correspondant se présente comme suit :
Fournisseurs de Cloud
La définition des variables d'environnement sur votre machine de développement locale ou sur une machine virtuelle ne représente que la moitié du travail. Que se passe-t-il si vous hébergez votre application dans un environnement Cloud tel que Heroku, Azure ou AWS, ou si vous l'avez intégrée dans un conteneur Docker ? Heureusement, tous ces fournisseurs permettent de définir des variables d'environnement.
- Heroku
- Azure (service d'application, fonctions, instances de conteneur)
- AWS
- Fichier Docker
- Exécution Docker
Si vous ne trouvez pas votre hôte Cloud dans cette liste, cela ne signifie pas nécessairement qu'il n'existe aucun moyen de configurer les variables d'environnement. Assurez-vous de consulter leur documentation pour en savoir plus.
Résumé
C'est tout ! Vous pouvez désormais définir des variables d'environnement. Autrement dit, vous pouvez extraire toutes les valeurs de configuration basées sur l'environnement de votre code et rendre ainsi votre code plus flexible et plus sûr !
Gardez à l'esprit que ces valeurs sont toujours stockées en texte brut. Si vous prévoyez de stocker des valeurs très sensibles, vous devriez envisager une solution de stockage secret, telle que Vault.
Si vous avez des questions ou que vous souhaitez me montrer ce que vous êtes en train de créer, n'hésitez pas à m'envoyer un e-mail à l'adresse dkundel@twilio.com ou à me contacter sur Twitter @dkundel. J'ai hâte de voir ce que vous allez construire !
Articles associés
Ressources connexes
Twilio Docs
Des API aux SDK en passant par les exemples d'applications
Documentation de référence sur l'API, SDK, bibliothèques d'assistance, démarrages rapides et didacticiels pour votre langage et votre plateforme.
Centre de ressources
Les derniers ebooks, rapports de l'industrie et webinaires
Apprenez des experts en engagement client pour améliorer votre propre communication.
Ahoy
Le hub de la communauté des développeurs de Twilio
Meilleures pratiques, exemples de code et inspiration pour créer des expériences de communication et d'engagement numérique.