これはなに?
awsでデプロイの練習をしています。credentials.yml
についてわからないことが多かったので、ノートにまとめてみました。
主に、以下の2つの記事から学習した内容をまとめています。
credential.yml.enc とは?
一言でいうと、環境変数を一つにまとめて書いておく場所。
Rails5.1までは、環境変数を複数の場所に書いておかなくてはいけなかった(らしい)。
それらをyml形式で書いて、暗号化してまとめてある。言わば機密情報の集約ファイル。
暗号化されていて、直接編集はできない。
credentialw.yml.enc
は、以下のコマンドで生成され、編集できます。
bin/rails credentials:edit
生成されたcredentials.yml.enc
は暗号化されているので、直接編集はできません。
MABIeuyDFIyrzi6BM2....
editorを指定しないと、編集できない。
また、credentialw.yml.enc
は環境変数:EDITORを指定しないと編集できません。
$ export EDITOR="vi"
$ echo $EDITOR
#=> vi
余談
こんな風にして、export EDITOR="vi"
を .bash_profile
に登録して、ターミナルが起動するたびに環境変数が登録されるようにすると、毎回EDITOR
を指定しないでよくなります。
$ echo 'export EDITOR="vi"' >> ~/.bash_profile
$ source ~/.bash_profile
$ echo $EDITOR
#=> vi
config/master.keyとの関係
credentials.yml.enc
はmaster key
を利用して暗号化・復号されます。
master.key
がない状態で、credentials:edit
を実行すると、master.key
が生成されます。
$ EDITOR="vi" bin/rails credentials:edit
create config/master.key
書き込むもの
今回は、AWSにアプリのデプロイを行ったのですが、書いた内容は「本番環境のデータベースのパスワード」(ローカルとは違う)
また、ローカルのcredential.yml.enc
とmaster.key
の組み合わせが、本番環境のそれと一致していないといけなかったのが、なかなかハマりどころだった。