web-dev-qa-db-ja.com

ファイルをコミットせずに、秘密のyaml構成ファイルを使用してherokuアプリをデプロイする方法は?

他のRailsプロジェクトでは、ローカルのdatabase.ymlがあり、ソースコードリポジトリではdatabase.sampleファイルのみをコミットします。デプロイするときに、データベースの共有バージョンをシンボリックリンクするcapistranoスクリプトすべてのリリースに.yml。

Herokuにデプロイする場合、gitが使用され、database.ymlを完全にオーバーライドして、内部で何かを実行しているように見えます。

これはすべて問題なく、database.ymlにとっては良いことですが、config /s3.ymlにs3構成がある場合はどうなりますか。そして、私は自分のプロジェクトをgithubに置いているので、誰もが私の資格情報を見ることができるs3.ymlをコミットしたくありません。むしろ、サンプルs3.sampleをコミットして、ユーザーが独自の設定でオーバーライドし、ローカルのs3.ymlファイルを作業ディレクトリでコミットしないようにします。

これを処理するための最良の方法は何ですか?

21
Homan

Herokuにはこれに関するガイダンスがあります-

http://devcenter.heroku.com/articles/config-vars

16
ipr101

別の解決策は、新しいlocal-branchを作成して、.gitignoreを変更することですsecret-fileはherokuにプッシュできます。 しないでくださいこのブランチをGithubリポジトリにプッシュします。

非マスターブランチをherokuにプッシュするには、次を使用します。

git Push heroku secret-branch:master

詳細については、以下をご覧ください。
https://devcenter.heroku.com/articles/multiple-environments#advanced-linking-local-branches-to-remote-apps

使用する heroku run bash次にlsを押して、シークレットファイルがherokuにプッシュされているかどうかを確認します

8
rocketspacer

S3認証情報を環境変数に保存します。

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

アプリ内:

AWS::S3::Base.establish_connection!(
  :access_key_id     => ENV['S3_KEY'],
  :secret_access_key => ENV['S3_SECRET']
)

開発セットアップなどを説明しているHeroku Config Varsドキュメント を参照してください。

7

Rails 4.1ベータ版を使用している場合は、 https://github.com/alexpeattie/heroku_secrets :からheroku_secretsgemを試してください。

gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'

これにより、秘密鍵をRails 4.1'sconfig/secrets.yml(にチェックインされていない)に保存できますソース管理)そして実行するだけ

rake heroku:secrets Rails_ENV=production

そのコンテンツをherokuで利用できるようにします(herokuのベストプラクティスドキュメントに従って、secrets.ymlファイルを解析し、その中のすべてを環境変数としてherokuにプッシュします)。

6
Simon Woolf

Figarogemをチェックすることもできます。

2
Alan

Heroku + Build&Deploy-timeSecretsでこれを調べます。 Herokuがサポートしているものではないようです。これは、Railsアプリの場合、たとえばプライベートリポジトリから取得するためにBUNDLE_GITHUB__COMをコミットする以外に方法がないことを意味します。

Herokuにビームを送信する前に、CIバンドルプライベート部門を作成する方法があるかどうかを確認します

0
MrMesees