Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【Rails5.2】credentials.yml.encでmaster key設定

More than 1 year has passed since last update.

初めに

設定方法は様々あるが、今回はVSCodeで編集出来る様にして設定を行う。
ターミナルでもいいのだが、インデントが分かりにくく、無駄な時間を費やした経験があるからです。

VSCodeでcredentialsを編集できるようにする。

1,VSCodeで、「Command + Shift + P」を同時に押してコマンドパレットを開く。
2,「shell」と入力
3,「PATH内に'code'コマンドをインストールします」という項目が表示されるので、それをクリック。
上記の操作でターミナルから「code」と打つことでVSCodeを起動できるようになる。

編集の仕方

ターミナル
$ EDITOR='code --wait' rails credentials:edit

「 rails credentials:edit」が、credentialsファイルを編集するためのコマンド。
使用するエディタにcodeすなわち今回はVSCodeを指定。
下記の様に復号化された内容が表示される。

credentilals.yml
# aws:
#   access_key_id: 123
#   secret_access_key: 345

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: dcb9317dcd2d42d9e045a2cd00c20df0b8109・・・

そして、下記の様に編集

credentilals.yml
aws:
  access_key_id: (ここにはダウンロードしたAccess key IDを入力)
  secret_access_key: (ここにはダウンロードしたSecret access keyを入力)

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: dcb9317dcd2d42d9e045a2cd00c20df0b8109・・・

値の確認

ターミナル
$ rails c
$ Rails.application.credentials[:secret_key_base]
$ Rails.application.credentials[:aws][:access_key_id]

これで、先ほど見た設定の中身が表示される。

CarrierWaveの設定

CarrierWavenに「aws_access_key_id」と「aws_secret_access_key」を設定。

carrierwave.rb
CarrierWave.configure do |config|
  config.fog_credentials = {
    provider: 'AWS',
    aws_access_key_id: Rails.application.credentials[:aws][:access_key_id],
    aws_secret_access_key: Rails.application.credentials[:aws][:secret_access_key],
    region: 'ap-northeast-1'
  }
end

master keyがプッシュされない様に.gitignoreに記載

これで設定OK。
これでローカル環境の設定は完了。
あとは本番環境にも同じ設定をしたら終了。

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

本番環境の環境変数にマスターキーをセットする

本番環境で環境変数を使用するために、/etc/environmentsファイルで設定を行いため、sshで本番環境にログインする。

ターミナル
$ ssh -i ~/.ssh/pemファイル名) ec2-user@(EC2Elastic IP
リモートのターミナル
$ [ec2-user]$ sudo vim /etc/environment

ここで「i」キーを押して編集。

/etc/environment
(前略)
RAILS_MASTER_KEY='master.keyの値'

これで設定終了。exit抜ける。
EC2を一回ログインし直して、下記のコマンドで確認して設定されていればOK。

/etc/environment
(前略)
[ec2-user]$ env | grep RAILS_MASTER_KEY
satreu16
エンジニアとして爆速成長中!!市場価値の高い人材になる為、日々精進しています。 winwinな関係を築ける様に有益な情報を積極的に配信しています。 Ruby(Ruby on Rails)/PHP(Laravel)/docker/AWS ■Twiter https://twitter.com/mnbvc124
https://twitter.com/mnbvc124
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away