packer を使用して vagrant .box ファイルを作成しています。私のpacker .json構成には次のようなものがあります:
"post-processors": [
//SNIP
"include": [
"./choco.ps1",
"./vagrantUp.ps1",
]
]
.box を作成しています。ファイルを手動で untar すると、そこに含まれていることがわかります。"vagrant box add Mybox http://whatever " を実行すると、 ~/.vagrant.d/boxes/MyBox/0/virtualbox フォルダーにも表示されます。
~ $ ls ~/.vagrant.d/boxes/MyBox/0/virtualbox/
Vagrantfile metadata.json
box.ovf packer-virtualbox-iso-1424829938-disk1.vmdk
choco.ps1 vagrantUp.ps1
また、私の packer vagrant テンプレートには次の行があります。
config.vm.provision "shell", path: "vagrantUp.ps1"
次に、このマシンを初期化します。私は次のことをしました:
~ $ cd ~/Vagrant
Vagrant $ Vagrant mkdir MyBox; cd MyBox
MyBox $ vagrant init MyBox
MyBox $ ls
VagrantFile
このファイルは、基本的な vagrant のデフォルトのように見えますが、上部にconfig.vm.box = "MyBox"
.
しかしvagrant up
、 I の場合、次のエラーが表示されます。
* `path` for shell provisioner does not exist on the host system: /Users/me/Vagrant/MyBox/vagrantUp.ps1
/Vagrant/MyBox の VagrantFile が ~/.vagrant.d/ の VagrantFile を参照しているように見えますが、これは良いことです。しかし、ファイルが実際には ~/.vagrant.d/ に相対している場合でも、/Vagrant/MyBox に相対するパスを使用しています。
これらのファイルをインスタンス ディレクトリにコピーするよう vagrant に指示する手順がありませんか? それとも、vagrant テンプレートでそれらを間違って参照していますか?