2015-10-14 14 views
17

Sto costruendo un'app Web con Yesod e sto passando dei segreti come le chiavi API tramite variabili di ambiente (come da The Twelve-Factor App) per evitare di memorizzare questi valori nei file di configurazione controllati dalla versione. Per esempio, ho eseguito la mia app in modalità dev come segue:Passaggio dei segreti delle app in Yesod e Keter

SOME_API_KEY=value yesod devel 

ho un valore nel mio file config/settings.yml che viene definita in termini di questa variabile di ambiente con un valore vuoto come segue:

meetup-api-key: "_env:SOME_API_KEY:" 

Per distribuire usando Keter, sto costruendo il pacchetto Keter usando il comando yesod keter e rilasciando il file risultante nella directory incoming di Keter. Poiché utilizzo la configurazione della variabile di ambiente, il file .keter della mia app non contiene il valore SOME_API_KEY (che è intenzionale).

Come devo passare SOME_API_KEY nell'istanza della mia app in esecuzione all'interno di Keter?

Vorrei evitare di cuocere il valore nel mio keter-config.yaml per almeno i seguenti tre motivi:

  1. E 'meno sicuro rispetto all'approccio variabile d'ambiente.
  2. Essendo incorporato direttamente nel file di configurazione per Keter stesso, al contrario della configurazione dell'app, il segreto non può essere modificato senza arrestare e riavviare l'intero processo di Keter.
  3. Le variabili di ambiente vengono passate a ogni app gestita da Keter.

Spero che ci siano alcune "migliori pratiche" per questo scenario.

risposta