Vagrantfileを作成する際に、ディレクトリのパスや設定値等で同じ値を複数箇所で記述する場合に
外部ファイル(ここではyaml形式)で管理する様に設定します。
※やり過ぎるとVagrantfie単体での可読性は低下します。。。普通の変数の方が手軽かもです。
#環境
Vagrant 1.9.7
#下準備
当然Vagrantが必要なので、インストールをしていない場合(でMacの方)は下記ページの下準備を行います。
MacでVagrant上にdocker環境を構築
#設定用のyamlファイルを用意する
yaml形式で設定値を記述します。
以下はサンプルです。
############
# host
############
vm:
os: "centos/7"
ip: "192.168.33.10"
############
# nginx
############
nginx:
conf:
host: "dockers/nginx/conf.d"
guest: "/var/dockers/nginx/conf.d"
docker: "/etc/nginx/conf.d"
www:
host: "dockers/nginx/www"
guest: "/var/dockers/nginx/www"
docker: "/var/nginx/www"
#Vagrantfileにyamlファイルを読み込む設定をする
VagrantfileはRubyなので以下の様にVagrantfileに追記します。
ここではsettings/localsetting.yamlを読み込みsettings変数に入れています。
require 'yaml'
settings = YAML.load_file 'settings/localsetting.yaml' #<- 読み込むyamlファイルのパス
localsetting.yamlの場所
.
├── Vagrantfile
└── settings
└── localsetting.yaml
#Vagrantfileに設定値を記述する
Rubyのハッシュ形式で取得できるので
ハッシュオブジェクト[キー][キー]...
の様に取得できます。
例)
config.vm.box = settings['vm']['os']
上記の様に記述して変数に設定します。
#サンプル
実際に使用しているサンプルは以下にあります。
https://github.com/manjiii/Vagrant-samples/tree/master/Skeleton-nginx-nodejs-mongodb