Categorie

Ultimo aggiornamento 09 marzo 2020

Una singola app viene sempre eseguita in più ambienti, inclusi almeno sulla macchina di sviluppo e in produzione su Heroku. Un’app open source potrebbe essere distribuita in centinaia di ambienti diversi.

Sebbene questi ambienti possano eseguire tutti lo stesso codice, di solito hanno configurazioni specifiche per l’ambiente. Ad esempio, gli ambienti di staging e produzione di un’app potrebbero utilizzare diversi bucket Amazon S3, il che significa che richiedono anche credenziali diverse per tali bucket.

La configurazione specifica dell’ambiente di un’app deve essere memorizzata in variabili di ambiente (non nel codice sorgente dell’app). Ciò consente di modificare la configurazione di ciascun ambiente in modo isolato e impedisce che le credenziali sicure vengano archiviate nel controllo di versione. Ulteriori informazioni sulla memorizzazione di config nell’ambiente.

Su un host tradizionale o quando si lavora localmente, spesso si impostano variabili di ambiente nel file .bashrc. Su Heroku, usi config vars.

Gestione delle var di configurazione

Ogni volta che si imposta o si rimuove una var di configurazione utilizzando qualsiasi metodo, l’app viene riavviata e viene creata una nuova versione.

I valori var di configurazione sono persistenti: rimangono al loro posto tra le distribuzioni e il riavvio dell’app. A meno che non sia necessario modificare un valore, è necessario impostarlo solo una volta.

Utilizzando la CLI Heroku

I comandi heroku config della CLI Heroku semplifica la gestione delle var di configurazione della tua app.

Visualizzazione corrente var config valori

$ heroku configGITHUB_USERNAME: joesmithOTHER_VAR: production$ heroku config:get GITHUB_USERNAMEjoesmith

Impostare una config var

$ heroku config:set GITHUB_USERNAME=joesmithAdding config vars and restarting myapp... done, v12GITHUB_USERNAME: joesmith

Rimuovere una config var

$ heroku config:unset GITHUB_USERNAMEUnsetting GITHUB_USERNAME and restarting myapp... done, v13

Utilizzando Heroku Dashboard

È anche possibile modificare config vars dalla tua app Settings scheda Heroku Dashboard:

Config Vars in Dashboard

Utilizzando la Piattaforma API

È possibile gestire le app config vars a livello di programmazione con Heroku API della Piattaforma utilizzando un semplice HTTPS client REST e JSON strutture di dati. È necessario un token di accesso Heroku valido che rappresenti un utente con autorizzazioni appropriate sull’app.

L’accesso ai valori var di configurazione dal codice

Le var di configurazione sono esposte al codice della tua app come variabili di ambiente. Ad esempio, nel Nodo.js puoi accedere alla var di configurazione DATABASE_URL della tua app con process.env.DATABASE_URL.

Esempi

Aggiungi alcuni var di configurazione per le chiavi dell’account 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

Imposta il tuo codice per leggere i var in fase di runtime. Ad esempio, in Ruby si accede alle variabili di ambiente utilizzando il pattern ENV, quindi ora è possibile scrivere un inizializzatore in questo modo:

AWS::S3::Base.establish_connection!( :access_key_id => ENV, :secret_access_key => ENV)

Nel Nodo.js, usa process.env per accedere alle variabili di ambiente:

const aws = require('aws-sdk');let s3 = new aws.S3({ accessKeyId: process.env.S3_KEY, secretAccessKey: process.env.S3_SECRET});

In Java, è possibile accedervi tramite chiamate a System.getenv('key'), in questo modo:

S3Handler = new S3Handler(System.getenv("S3_KEY"), System.getenv("S3_SECRET"))

In Python, utilizzando la libreria boto:

from boto.s3.connection import S3Connections3 = S3Connection(os.environ, os.environ)

Ora, al momento della distribuzione su Heroku, l’app utilizzerà le chiavi impostate nella configurazione.

Criteri Config var

  • Le chiavi Config var devono utilizzare solo caratteri alfanumerici e il carattere di sottolineatura (_) per garantire che siano accessibili da tutti i linguaggi di programmazione. Le chiavi var Config non devono includere il carattere trattino.
  • Config var data (la combinazione di tutte le chiavi e valori) non può superare i 32 kb per ogni app.
  • Le chiavi var di configurazione non devono iniziare con un doppio trattino basso (__).
  • La chiave di una var di configurazione non dovrebbe iniziare con HEROKU_ a meno che non sia impostata dalla piattaforma Heroku stessa.

Componenti aggiuntivi e var di configurazione

Se si esegue il provisioning di un add-on per la propria app, di solito viene aggiunta una o più var di configurazione all’app. I valori di queste var di configurazione potrebbero essere aggiornati dal provider aggiuntivo in qualsiasi momento.

Vedere I valori dei componenti aggiuntivi possono cambiare per saperne di più sui componenti aggiuntivi e su come usano le var di configurazione.

Configurazione locale

Usa lo strumento da riga di comando Heroku Local per eseguire l’app localmente.

Modalità di produzione e sviluppo

Molti linguaggi e framework supportano una modalità di sviluppo. Ciò consente in genere più debug, nonché il ricaricamento dinamico o la ricompilazione dei file sorgente modificati.

Ad esempio, in un ambiente Ruby, è possibile impostare una var di configurazione RACK_ENV su development per abilitare tale modalità.

È importante comprendere e tenere traccia di queste var di configurazione su un’app Heroku di produzione. Mentre una modalità di sviluppo è tipicamente grande per lo sviluppo, non è così grande per la produzione, perché può degradare le prestazioni.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.