4

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 テンプレートでそれらを間違って参照していますか?

4

2 に答える 2