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

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.