Comment déployer l'application heroku avec un fichier de configuration yaml secret sans propager le fichier?
dans d'autres projets de rails, j'aurais une base de données locale.yml et dans le dépôt de code source ne propagent que la base de données.exemple de fichier. Lors du déploiement, un script capistrano qui permet de créer un lien symbolique vers une version partagée de la base de données.yml pour toutes les versions.
lors du déploiement à heroku, git est utilisé et ils semblent outrepasser la base de données.yml tout à fait et faire quelque chose interne.
C'est tout bon et bon pour la base de données.yml, mais que faire si j'ai des configurations s3 dans config/s3.yml. Et Je mets mon projet sur github pour ne pas engager le s3.yml où tout le monde peut voir mes références. Ça vaut mieux un échantillon de s3.l'échantillon de personnes remplacent avec leurs propres paramètres, et de garder un local s3.fichier yml non engagé dans mon répertoire de travail.
quelle est la meilleure façon de gérer cela?
5 réponses
stocker les justificatifs d'identité s3 dans les variables d'environnement.
$ cd myapp
$ heroku config:add S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190
Adding config vars:
S3_KEY => 8N029N81
S3_SECRET => 9s83109d3+583493190
Restarting app...done.
Dans votre application:
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
)
Voir la Heroku Config Vars documentation qui expliquent la configuration du développement, etc.
si vous utilisez les Rails 4.1 beta, essayez le heroku_secrets gem, de https://github.com/alexpeattie/heroku_secrets:
gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'
cela vous permet de stocker des clés secrètes dans les Rails 4.1 config / secrets.yml (qui n'est pas coché dans le contrôle source) et puis il suffit d'exécuter
rake heroku:secrets RAILS_ENV=production
mettre son contenu à la disposition d'heroku (il analyse vos secrets.le fichier yml et pousse tout ce qu'il contient vers heroku en tant que variables d'environnement, selon la meilleure pratique d'heroku doc.)
une solution alternative est de créer un nouveau branche modifier .gitignore, donc secret-fichier peut être poussé à heroku. NE PAS poussez cette branche sur votre GitHub repo.
Pour pousser non-branche master pour heroku, utilisez:
git push heroku secret-branch:master
plus d'info peut être trouvé on:
https://devcenter.heroku.com/articles/multiple-environments#advanced-linking-local-branches-to-remote-apps
Utiliser heroku run bash
et ls
pour vérifier si votre fichier secret a été poussé sur heroku ou pas