LoginSignup
3

More than 5 years have passed since last update.

InfratasterでMySQLのテストをする時のパスワードの扱い

Posted at

チップスと言うよりは相談です。みなさんどうやっているのか、いい方法があったらぜひ教えてください。


Infratastermysql.userテーブルの内容(要はユーザーの存在やアクセス元ホストの許可状況)のテストをする時、今はMySQLのrootユーザーでアクセスしています。そうすると、アクセス時のパスワードは直接リポジトリーに入れたくないので、たまたま構築にknife-soloを使っていることもあって、knife-solo_data_bagのEncrypted Data Bagの機能を使って管理しています。

knife-solo_data_bagでは、秘密情報を暗号化して保存することができて、こんなふうにして復号します:

$ knife solo data bag show mysql root --secret-file=./data_bag_key

ご想像の通り「data_bag_key」というファイルに鍵を保存して、それを使って復号するようになっています(だからこのファイルはリポジトリーに入れていません)。で、これは鍵のファイルだから、とroot:root0600で保存しています。だから、実は、上のコマンドはこんなふうにして実行しています:

$ sudo knife solo data bag show mysql root --secret-file=./data_bag_key

で、ようやく本題なんですが、rootでMySQLに接続するということはパスワードが必要で、そのためには上の鍵ファイルを読み取らなくてはいけません。そんなわけで、spec_helper.rbにこう書いています。

spec_helper.rb
require 'json'
require 'infrataster/rspec'
require 'infrataster-plugin-mysql'

mysql_config = JSON.parse(`sudo knife solo data bag show mysql root --secret-file=./data_bag_key -F json`)

Infrataster::Server.define(
  :db,
  '192.168.33.10',
  mysql: {user: 'root', password: mysql_config['password']},
  vagrant: true
)

やってみれば、やらなくてもちゃんと読めばすぐ分かりますが、テストの度にsudoのパスワードを入力しなくてはいけません。

そこの面倒臭さを除けばまあ機能してはいるんですが、みなさんはこの辺どうしているんでしょう? やっぱり環境変数?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3