tcnksmさんのブログを見てて
おー、便利そうと眺めていたらdotenvで実現出来るとのやりとりを目撃。
@gongoZ 初めまして!作ったやつです!Dotenv知りませんでした,Dotenvで事足りますね!恥ずかしい感じです!ありがとうござます!
— tcnksm (@deeeet) 2014, 2月 25
私もdotenvを知らなかったので、Vagrant+dotenvがどんな感じで使えるのかやってみた。
Vagrantからdotenvが使えるようにインストール
何故かvagrant plugin installにはvagrant-*みたいなのしかインストール出来ないと勝手に勘違いしてたんですが、
普通にgem installしているだけなので、下記でdotenvが導入出来る。
(saharaが普通にそうだったし、~/.vagrant.d/gems/gems/の中を見れば普通にプラグインに依存してるgemが入ってるのも分かる)
1
| |
.envを用意
dotenvはディレクトリ内にある.envというファイル中身を参照するので、
環境ごとで変更する値を.envに下記のように記載。
1 2 3 4 | |
Vagrantfileから.envの内容を呼び出す
.envの内容を呼び出すにはDotenv.loadをVagrantfileに記載して、${ENV['HOGE']}みたいな感じで呼び出す。
私が普段使ってるDigitalOcean用のVagrantfileで使ってみると下記のような感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
vagrant upしてみる。
1
| |
ちゃんと動いた。
Vagrantfileを共通化して、環境毎で個別に設定を変更したい場合や特定の値は公開したくない場合などはdotenv使えば良さそう。
(Vagrant+dotenvについては以前Vagrantのissueに提案されてましたがPackerのuser variablesを使えと一蹴されてた。)
GitHubとかに公開する場合は誤って.envを公開しないよう.gitignoreに追加をお忘れ無く。