Rails6のcredentialをファイルから生成する方法
梅雨時になってすっかりRails触っている昨今ですが、いかがお過ごしでしょうか。
Rails6から導入された credentials 、使ってますか?便利ですね。大事な情報はどんどん隠蔽しましょう。
credentialsが何かの説明は、ここ とか ここ を読むと良いでしょう。
要はサービストークンやパスワードなどの秘密の情報をRailsフレームワーク内で暗号化する仕組みです。
最初に rails credentials:edit
とかで秘密鍵を作りながら暗号化する情報を書くのですが、
EDITOR
環境変数にエディタを設定して書き込みます。
秘密にする項目が多いと、面倒ですよね。自動で生成したい!!!
そこで、 credentials:edit
をファイルから生成してみましょう。
手順
1. ひな形ファイルを用意する
設定ファイルのひな形になるファイルをどこかに置きましょう。
あるいはこれをsedなんかでカスタマイズしてもいいかもしれません。
.credentials_template.yml
secret_key_base: '0123456789' mysql: host: 'localhost' database: 'default' user: 'user' password: 'secret' redis: url: 'redis://localhost:6379/1' mail: server: 'smtp.example.com' domain: 'example.com' port: 587 user: 'mailuser' password: 'secret' authentication: 'cram_md5'
2. ひな形ファイルからcredentialsを生成する
おもむろに以下のコマンドを実行しましょう。 Linux系のシェル用です。Windows民はWSL使いましょう。
EDITOR="cat ./.credentials_template.yml > " bundle exec rails credentials:edit -e development
staging, produntion 用の鍵も同様に作ります。 -e
の引数変えればできますね。
解説
EDITOR
の中の >
がミソです。
credentials:edit
の中では ${EDITOR} #{tmp_path}
みたいなコマンドを発行しているので、
リダイレクトで流し込めばいいのですね。
3. 秘密鍵を持ち帰ろう
環境の新規作成はできました。
任意の環境でデプロイするには秘密鍵を持ち帰らなければなりません。
./config/credentials/*.key
にあるので、
プライベートクラウドに上げるなり、アーカイブして持ち帰るなりしましょう。
できあがり
簡単ですね!ではよい自動化ライフを!