Vagrantfile の設定を外部ファイルで制御する

Vagrantfile は Git リポジトリでバージョン管理されるファイルです。
しかし、利用者ごとに異なるユーザー名やパスワードなどは Git リポジトリにコミットしたくないので、Vagrantfile に直接書くのは避けたいです。

.yml ファイルを読み込む

Vagrant プラグインは不要です。 Ruby 標準添付の yaml ライブラリだけで実現できます。

例えば、次の 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