Vagrantfile の設定を外部ファイルで制御する
Vagrantfile は Git リポジトリでバージョン管理されるファイルです。
しかし、利用者ごとに異なるユーザー名やパスワードなどは Git リポジトリにコミットしたくないので、Vagrantfile に直接書くのは避けたいです。
.yml ファイルを読み込む
Vagrant プラグインは不要です。 Ruby 標準添付の yaml ライブラリだけで実現できます。
例えば、次の yml ファイルを読み込むには
config.yml
A: aaa B: B1: bbb1 B2: bbb2 C: ccc
Vagrantfile に以下のように記述します。
require 'yaml' vm_config = YAML::load_file('config.yml') vm_config['A'] == 'aaa'
.env ファイルを読み込む場合
dotenv を Vagrant のプラグインとしてインストールしておきます。
$ vagrant plugin install dotenv
以下のコードで .env を読み込むことができます。
Dotenv.load
読み込んだ設定は ENV オブジェクトに展開されています。
vbox.customize ["modifyvm", :id, "--memory", ENV['MEMORY_SIZE']]
vagrant-secret プラグインを利用する場合
外部の yml ファイルを読み込む専用のプラグインも存在します。
https://github.com/tcnksm/vagrant-secret