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

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:

 Variables de configuration dans le tableau de bord

À 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.