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:
- E 'meno sicuro rispetto all'approccio variabile d'ambiente.
- 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.
- Le variabili di ambiente vengono passate a ogni app gestita da Keter.
Spero che ci siano alcune "migliori pratiche" per questo scenario.