Catégories
Dernière mise à jour le 09 mars 2020
Une seule application s’exécute toujours dans plusieurs environnements, y compris au moins sur votre machine de développement et en production sur Heroku. Une application open source peut être déployée dans des centaines d’environnements différents.
Bien que ces environnements puissent tous exécuter le même code, ils ont généralement des configurations spécifiques à l’environnement. Par exemple, les environnements de mise en scène et de production d’une application peuvent utiliser différents compartiments Amazon S3, ce qui signifie qu’ils ont également besoin d’informations d’identification différentes pour ces compartiments.
La configuration spécifique à l’environnement d’une application doit être stockée dans des variables d’environnement (et non dans le code source de l’application). Cela vous permet de modifier la configuration de chaque environnement de manière isolée et empêche le stockage des informations d’identification sécurisées dans le contrôle de version. En savoir plus sur le stockage de la configuration dans l’environnement.
Sur un hôte traditionnel ou lorsque vous travaillez localement, vous définissez souvent des variables d’environnement dans votre fichier .bashrc
. Sur Heroku, vous utilisez des variables de configuration.
- Gestion des variables de configuration
- L’utilisation de la CLI Heroku
- Afficher les valeurs de var de configuration actuelles
- Définir une var de configuration
- Supprimer une var de configuration
- À l’aide du tableau de bord Heroku
- À l’aide de l’API de la plate-forme
- Accéder aux valeurs var de configuration à partir du code
- Exemples
- Stratégies var de configuration
- Modules complémentaires et variables de configuration
- Configuration locale
- Modes de production et de développement
Gestion des variables de configuration
Chaque fois que vous définissez ou supprimez une variable de configuration à l’aide d’une méthode quelconque, votre application est redémarrée et une nouvelle version est créée.
Les valeurs var de configuration sont persistantes – elles restent en place lors des déploiements et des redémarrages d’applications. Sauf si vous devez modifier une valeur, vous n’avez besoin de la définir qu’une seule fois.
L’utilisation de la CLI Heroku
Les commandes heroku config
de la CLI Heroku facilitent la gestion des variables de configuration de votre application.
Afficher les valeurs de var de configuration actuelles
$ heroku configGITHUB_USERNAME: joesmithOTHER_VAR: production$ heroku config:get GITHUB_USERNAMEjoesmith
Définir une var de configuration
$ heroku config:set GITHUB_USERNAME=joesmithAdding config vars and restarting myapp... done, v12GITHUB_USERNAME: joesmith
Supprimer une var de configuration
$ heroku config:unset GITHUB_USERNAMEUnsetting GITHUB_USERNAME and restarting myapp... done, v13
À l’aide du tableau de bord Heroku
Vous pouvez également modifier les variables de configuration à partir de l’onglet Settings
de votre application dans le tableau de bord Heroku:
À l’aide de l’API de la plate-forme
Vous pouvez gérer les variables de configuration de votre application par programme avec l’API de la plate-forme Heroku à l’aide d’un simple client REST HTTPS et de structures de données JSON. Vous avez besoin d’un jeton d’accès Heroku valide représentant un utilisateur disposant des autorisations appropriées sur l’application.
Accéder aux valeurs var de configuration à partir du code
Les variables de configuration sont exposées au code de votre application en tant que variables d’environnement. Par exemple, dans le nœud.js vous pouvez accéder à la var de configuration DATABASE_URL
de votre application avec process.env.DATABASE_URL
.
Exemples
Ajoutez des variables de configuration pour vos clés de compte S3:
$ cd myapp$ heroku config:set S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190Setting config vars and restarting myapp... done, v14S3_KEY: 8N029N81S3_SECRET: 9s83109d3+583493190
Configurez votre code pour lire les variables au moment de l’exécution. Par exemple, dans Ruby, vous accédez aux variables d’environnement en utilisant le modèle ENV
– vous pouvez donc maintenant écrire un initialiseur comme ceci:
AWS::S3::Base.establish_connection!( :access_key_id => ENV, :secret_access_key => ENV)
Dans le nœud.js, utilisez process.env
pour accéder aux variables d’environnement:
const aws = require('aws-sdk');let s3 = new aws.S3({ accessKeyId: process.env.S3_KEY, secretAccessKey: process.env.S3_SECRET});
En Java, vous pouvez y accéder via des appels à System.getenv('key')
, comme ceci:
S3Handler = new S3Handler(System.getenv("S3_KEY"), System.getenv("S3_SECRET"))
En Python, en utilisant la bibliothèque boto:
from boto.s3.connection import S3Connections3 = S3Connection(os.environ, os.environ)
Maintenant, lors du déploiement sur Heroku, l’application utilisera les clés définies dans la configuration.
Stratégies var de configuration
- Les clés var de configuration doivent utiliser uniquement des caractères alphanumériques et le caractère de soulignement (
_
) pour s’assurer qu’elles sont accessibles depuis tous les langages de programmation. Les clés var de configuration ne doivent pas inclure le trait d’union. - Les données var de configuration (la combinaison de toutes les clés et valeurs) ne peuvent pas dépasser 32 Ko pour chaque application.
- Les clés var de configuration ne doivent pas commencer par un double trait de soulignement (
__
). - La clé d’une variable de configuration ne doit pas commencer par
HEROKU_
à moins qu’elle ne soit définie par la plate-forme Heroku elle-même.
Modules complémentaires et variables de configuration
Si vous provisionnez un module complémentaire pour votre application, il ajoute généralement une ou plusieurs variables de configuration à l’application. Les valeurs de ces variables de configuration peuvent être mises à jour par le fournisseur du module complémentaire à tout moment.
Voir les valeurs des modules complémentaires peuvent changer pour en savoir plus sur les modules complémentaires et leur utilisation des variables de configuration.
Configuration locale
Utilisez l’outil de ligne de commande Heroku Local pour exécuter votre application localement.
Modes de production et de développement
De nombreux langages et frameworks prennent en charge un mode de développement. Cela permet généralement plus de débogage, ainsi que le rechargement dynamique ou la recompilation des fichiers source modifiés.
Par exemple, dans un environnement Ruby, vous pouvez définir une variable de configuration RACK_ENV
sur development
pour activer un tel mode.
Il est important de comprendre et de suivre ces variables de configuration sur une application Heroku de production. Bien qu’un mode de développement soit généralement idéal pour le développement, il ne l’est pas pour la production, car il peut dégrader les performances.