今回は、チーム開発でアプリケーションをデプロイする際の3つのポイントについて解説したいと思います。個人での開発とは違い、チーム開発のデプロイ作業ではいくつかの注意点があるので事前に把握しておきましょう。
この記事では、AWSを用いてデプロイを行なっています。
加えてRails5.2以上を使用しているため、「credentials.yml.enc」と「master.key」を使用しています。
↓「credentials.yml.enc」と「master.key」について詳しく知りたい方はこちら
https://techtechmedia.com/whats-credential-yml/

メンバー間でのマスターキーの共有
Rails5.2以上で「rails new」した場合、「credentials.yml.enc」と「master.key」が自動生成されます。
そして「credentilas.yml.enc」には、環境変数やデータベースパスワードといった機密情報が書かれており、以下のように暗号化されています。
↓credentials.yml.encの中身
kqmm/o4rTTFl575pWRS/McYSZ9HY5JvMP9cSQNqisRjHXjfUe1pS7NPyWgKZOSFinHwSKTDauIf2eT2QC7Q72ySOw2S4j6thxe58ySHTjKceclgdmSLEjq4GLFlH4g2ZmlHmDfuQ6zrWAywQ3kyo+dInwb/PVdaYXZxE6a7AoWxGMgnEwsNHbTiyncRsdWUWe7soDN02N3DFlluMq0WVJ1H
このままでは中身を解読することができません。そこで「master.key」という鍵を用いて、この謎の暗号を解読・編集できるようにしています。
そしてこの「master.key」は、gitignoreされています。
つまり、チーム開発でメンバー全員が「credentials.yml.enc」を開くためには、「master.key」を持っていなければなりません。
そこでアプリケーションを立ち上げた人(rails new)した人は、slackやLINEを用いて「master.key」の中身を配布しましょう。
credentials.yml.encの編集
先ほども述べましたが、「credentials.yml.enc」は暗号化されています。
その内容を解読するには、「master.key」を手に入れ、ターミナル上で以下のコマンドを打ち込まなければなりません。
$ EDITOR="vi" bin/rails credentials:edit
しかし、ここで注意してほしい点があります。
それは、「master.key」をまだ貰っていない段階で「$ EDITOR=”vi” bin/rails credentials:edit」のコマンドを打つと、新たに「master.key」が生成されてしまうということです。
そして、それに対応する「credentials.yml.enc」に置き換わってしまうため、他のメンバーが「credentials.yml.enc」を開こうとすると、エラーが出てしまいます。
「master.key」を入れる前に「$ EDITOR=”vi” bin/rails credentials:edit」のコマンドを打つことは避けましょう。
本番環境でのマスターキーの取り扱い

前述した通り、「master.key」はgitignoreされています。そして、本番環境(EC2)ではGithubに上がっている記述をプルして取り込んでいます。(上図の③)
ではどうやって、本番環境に「master.key」を上げればよいのでしょうか?
答えは、本番環境の設定ファイルに直接、「master.key」を書き込んでしまえば解決できます。
そして、その本番環境の設定ファイルとは、「/etc/environment」のことです。
以下のように「/etc/environment」を開き、編集しましょう。
[ec2-user@ip-172-31-23-189 ~]$ sudo vim /etc/environment
DATABASE_PASSWORD='test'
SECRET_KEY_BASE='9f4e9efa84416f928cb9a3c78~~~~'
↓マスターキーを追記する
RAILS_MASTER_KEY="468c1~~~~~"
これで、本番環境(EC2)でもマスターキーを使えるようになりました。
まとめ
最後にもう一度、チーム開発でアプリケーションをデプロイする際のポイント(注意点)についてまとめておきます。
- アプリケーションを立ち上げた人は、メンバー全員に「master.key」を渡さなければならない
- 「master.key」を入れる前に「$ EDITOR=”vi” bin/rails credentials:edit」のコマンドを打つことは避ける
- 「etc/environment」に書き込むことで、本番環境にマスターキーを上げる
今回はチーム開発でのデプロイのポイントを3つ解説しました。これらのことに気を付けつつ、デプロイ作業に取り組んいただければと思います。