~/.vagrant.d/boxes/BOX_NAME
以下にある。
$ tree ~/.vagrant.d/boxes/package.box
/Users/kyanny/.vagrant.d/boxes/package.box
└── 0
└── virtualbox
├── Vagrantfile
├── box-disk1.vmdk
├── box.ovf
├── include
│ └── _Vagrantfile
├── metadata.json
└── vagrant_private_key
package.box
はこの場合 box 名
- この box を使って
vagrant up
すると Vagrantfile load order に従って ~/.vagrant.d/boxes/package.box/0/virtualbox/Vagrantfile
が読み込まれる
- その
Vagrantfile
の中でさらに include/_Vagrantfile
も読み込まれる
- この
_Vagrantfile
が vagrant package --vagrantfile
オプションで指定した Vagrantfile そのもの
vagrant package - Command-Line Interface - Vagrant Documentation
じゃあなんでそもそも package.box
を作るときに --vagrantfile
オプションで指定した Vagrantfile
も含めることができるのかというと、 box ファイルは Gzipped TAR アーカイブでその中に入っているから。 box ファイルを展開すると ~/.vagrant.d/boxes` にあるのと同じファイル群が出てくる。
$ tar xzvf package.box
x ./box-disk1.vmdk
x ./box.ovf
x ./include/
x ./include/_Vagrantfile
x ./vagrant_private_key
x ./Vagrantfile
$ tree .
.
├── Vagrantfile
├── box-disk1.vmdk
├── box.ovf
├── include
│ └── _Vagrantfile
├── package.box
└── vagrant_private_key