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
に追加をお忘れ無く。