hiroki-saoyun’s blog

40歳でも夢くらい持つよね!!プログラミング勉強中!

Encrypted Credentials②

マスターキーの管理

Railsではアプリ作成時に、Gitの管理から外すように設定されています。

.gitignore

# Ignore master key for decrypting credentials and more.
/config/master.key

上記のようにプッシュしてしまわないように設定されています。

ただ、チーム開発の時はマスターキーを共有しないとcredentials.yml.encの中身を見れないので、どのように共有するのかを書いていきます。

ローカル開発環境でのマスターキーの共有方法を確認

まずは、Slack等でconfig/master.keyの内容を共有します。

そして他のメンバーはクローンしたアプリケーションのconfigフォルダに新規で「master.key」ファイルを作成し、Slack等で共有した内容をコピーします。

本番環境でのマスターキーの扱い方を確認

作成したアプリケーションをCapistranoを使ってデプロイしても、本番環境のアプリケーションはcredentialsを読み込むことができません。

なぜならGit Hubへマスターキーがプッシュされないので、EC2にもプルされません。

本番環境でcredentialsを使うための手順

本番環境でcredentialsを使えるようにするため、環境変数にマスターキーを設定する必要があります。

etc/environmentsファイルに記述を行う事で、環境変数を設定することができます。

ターミナル

$ ssh -i ~/.ssh/(pemファイル名) ec2-user@(EC2のElastic IP)
[ec2-user]$ sudo vim /etc/environment

iキーを押して編集していきます。

/etc/environment

RAILS_MASTER_KEY='master.keyの値'
# config/master.key」の値をコピーして貼り付けます

これで設定はできたので、ログインし直します。

[ec2-user]$ exit
$ ssh -i ~/.ssh/(pemファイル名) ec2-user@(EC2のElastic IP)
[ec2-user]$ env | grep RAILS_MASTER_KEY

マスターキーの内容が表示されればうまくいっています。