Я создаю бродячий файл .box с помощью упаковщика. У меня в конфигурации упаковщика .json есть что-то вроде этого:
"post-processors": [
//SNIP
"include": [
"./choco.ps1",
"./vagrantUp.ps1",
]
]
Он создает .box, и если я вручную распакую файл, я вижу, что они включены в него. Когда я заканчиваю запускать "vagrant box add Mybox http://whatever", я даже могу видеть их в моем ~ / .vagrant.d / boxs / 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
Кроме того, в моем шаблоне бродяг-упаковщика есть строка:
config.vm.provision "shell", path: "vagrantUp.ps1"
Затем я хочу инициализировать эту машину. Я сделал следующее:
~ $ cd ~/Vagrant
Vagrant $ Vagrant mkdir MyBox; cd MyBox
MyBox $ vagrant init MyBox
MyBox $ ls
VagrantFile
Этот файл выглядит как стандартный бродячий файл по умолчанию, но вверху он упоминает config.vm.box = "MyBox"
.
Но если я vagrant up
, я получаю следующую ошибку:
* `path` for shell provisioner does not exist on the host system: /Users/me/Vagrant/MyBox/vagrantUp.ps1
Мне кажется, что VagrantFile в / Vagrant / MyBox ссылается на VagrantFile в ~ / .vagrant.d /, что хорошо, это то, что я хочу. Но тогда он по-прежнему использует пути относительно / Vagrant / MyBox, когда файлы на самом деле относятся к ~ / .vagrant.d /
Мне не хватает шага, который говорит vagrant скопировать эти файлы в каталог экземпляра? Или я неправильно ссылаюсь на них в своем бродячем шаблоне?