Menu

Variable d'environnement : Qu'est-ce qu'une variable d'environnement ?

5 min de lecture Mis à jour le 05 Avr 2026

Définition

Une variable d'environnement est une valeur nommée stockée dans le système d'exploitation qui permet de configurer le comportement d'une application sans modifier son code source. Elle est essentielle pour gérer les secrets, les configurations et les paramètres spécifiques à chaque environnement.

Qu'est-ce qu'une variable d'environnement ?

Une variable d'environnement est une paire clé-valeur définie au niveau du système d'exploitation ou du processus, accessible par toutes les applications qui s'exécutent dans ce contexte. C'est un mécanisme fondamental de configuration qui permet de paramétrer le comportement d'un logiciel sans toucher à son code source. Le concept existe depuis les premiers systèmes Unix dans les années 1970 et reste aujourd'hui le standard pour la configuration des applications en production.

Dans le développement web moderne, les variables d'environnement jouent un rôle crucial. Elles permettent de séparer la configuration du code, suivant le principe des Twelve-Factor Apps. Une même application peut ainsi fonctionner en développement, en staging et en production sans aucune modification de code, simplement en changeant les valeurs des variables d'environnement.

Chez KERN-IT, les variables d'environnement sont omniprésentes dans nos projets Django. La clé secrète Django (SECRET_KEY), les identifiants de base de données, les clés API (Stripe, SendGrid, Google), et les URLs de services externes sont toutes gérées via des variables d'environnement, stockées dans des fichiers .env en local et dans des secrets managers en production.

Pourquoi les variables d'environnement sont importantes

Les variables d'environnement résolvent plusieurs problèmes critiques du développement logiciel professionnel, de la sécurité à la flexibilité de déploiement.

  • Sécurité des secrets : les mots de passe, clés API et tokens ne doivent jamais apparaître dans le code source. Les variables d'environnement permettent de les injecter au runtime sans les versionner dans Git.
  • Portabilité entre environnements : le même code peut tourner en local (avec une base SQLite), en staging (avec une base PostgreSQL de test) et en production (avec une base PostgreSQL répliquée) grâce aux variables d'environnement.
  • Configuration sans redéploiement : modifier une variable d'environnement ne nécessite qu'un redémarrage de l'application, pas une recompilation ni un nouveau déploiement du code.
  • Collaboration sécurisée : chaque développeur peut avoir ses propres valeurs (clés API de test, base de données locale) sans impacter les autres membres de l'équipe.
  • Conformité et audit : les secrets gérés via des variables d'environnement sont plus faciles à auditer, à révoquer et à renouveler que des secrets codés en dur.

Comment ça fonctionne

Les variables d'environnement sont définies au niveau du système d'exploitation ou du processus. Sous Linux/macOS, la commande export DATABASE_URL=postgres://user:pass@host/db définit une variable pour la session shell courante. Sous Windows, la commande set ou les paramètres système permettent la même chose.

En Python, l'accès aux variables d'environnement se fait via le module os : os.environ.get("DATABASE_URL") ou os.getenv("DATABASE_URL", "valeur_par_defaut"). Django utilise ce mécanisme dans ses fichiers de settings pour récupérer toutes les configurations sensibles.

Le fichier .env est une convention populaire qui regroupe toutes les variables d'environnement dans un fichier texte simple à la racine du projet. Des bibliothèques comme python-dotenv ou django-environ chargent automatiquement ce fichier au démarrage de l'application. Ce fichier est impérativement ajouté au .gitignore pour ne jamais être versionné.

Variables d'environnement courantes

Certaines variables d'environnement sont quasi universelles dans les projets web. SECRET_KEY est la clé cryptographique de Django utilisée pour signer les sessions et les tokens. DEBUG active ou désactive le mode debug (impérativement False en production). DATABASE_URL contient la chaîne de connexion à la base de données.

Les clés API de services tiers suivent souvent la convention SERVICE_API_KEY : STRIPE_SECRET_KEY, SENDGRID_API_KEY, GOOGLE_MAPS_API_KEY. Les URLs de services sont stockées dans des variables comme REDIS_URL, CELERY_BROKER_URL ou SENTRY_DSN.

Exemple concret

Un projet KERN-IT utilise les variables d'environnement pour gérer sa configuration Django. Le fichier settings/base.py contient des lignes comme SECRET_KEY = os.environ.get("SECRET_KEY") et DEBUG = os.environ.get("DEBUG", "False") == "True". En développement, un fichier .env contient les valeurs locales. En production, les variables sont configurées dans le gestionnaire de processus Supervisor.

Lorsqu'un nouveau développeur rejoint le projet, il reçoit un fichier .env.example (versionné, avec des valeurs factices) qu'il copie en .env et remplit avec ses propres clés API de test. Le projet fonctionne immédiatement sans qu'aucun secret ne transite par Git ou par email.

Bonnes pratiques

  1. Ne versionnez jamais le fichier .env : ajoutez .env au .gitignore dès la création du dépôt. C'est la règle de sécurité la plus importante.
  2. Fournissez un .env.example : versionnez un fichier .env.example avec toutes les variables nécessaires mais des valeurs factices, servant de documentation et de template pour les nouveaux développeurs.
  3. Validez les variables au démarrage : vérifiez que toutes les variables requises sont définies au lancement de l'application et échouez rapidement avec un message clair si une variable manque.
  4. Utilisez des noms explicites : préférez SMTP_HOST à HOST et POSTGRES_PASSWORD à PW. La clarté des noms facilite la maintenance.
  5. Séparez les environnements : ne réutilisez jamais les mêmes clés API ou mots de passe entre développement, staging et production.

Conclusion

Les variables d'environnement sont un pilier de la configuration logicielle moderne. Elles assurent la sécurité des secrets, la portabilité du code entre environnements et la flexibilité de configuration sans modification de code. C'est une pratique simple mais fondamentale que tout développeur doit maîtriser pour construire des applications professionnelles, sécurisées et facilement déployables.

Conseil Pro

Utilisez django-environ dans vos projets Django pour parser automatiquement les variables d'environnement avec le bon type. Au lieu de convertir manuellement les chaînes en booléens ou en entiers, env.bool("DEBUG") et env.int("CACHE_TTL") le font pour vous. Le parsing de DATABASE_URL en dictionnaire Django est particulièrement utile : env.db("DATABASE_URL").

Un projet en tête ?

Discutons de comment nous pouvons vous aider à concrétiser vos idées.