【发布时间】:2014-09-25 18:55:49
【问题描述】:
主机:Windows 7
来宾:Windows 8
我有一个简单的 Vagrantfile,它运行一个 powershell 脚本来配置来宾。打包盒子的时候看到文件添加了,但是运行vagrant up的时候报错shell provisioner:* `path` for shell provisioner does not exist on the host system: D:/VirtualMachines/test/provision.ps1
我验证provision.ps1 存在于include 目录下的vagrant box 位置。
那么,当我运行vagrant up 时,为什么不将provision.ps1 复制到它需要的位置?
流浪文件:
VAGRANTFILE_API_VERSION = "2"
modified_name = ENV["COMPUTERNAME"][0..12]
comp_name = modified_name + "TA"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "base"
config.vm.hostname = comp_name
config.vm.communicator = "winrm"
config.vm.network "forwarded_port", host: 3389, guest: 3389, auto_correct: true
config.vm.provision "shell", path: "provision.ps1"
end
【问题讨论】:
-
Vagrant docs 表示
path相对于Vagrantfile的位置。我还没有创建自己的盒子,所以可能会关闭,但您可以尝试将该文件直接放在与Vagrantfile相同的位置以查看它是否被拾取。 -
当我手动添加文件时它确实被拾起,但这违背了目的。当我执行
vagrant box add [my box]时,它会打包我的盒子并将powershell 脚本添加到位置下的盒子中:D:\VirtualMachines\vagrant\boxes\TestAgent\0\virtualbox\include我的假设是当我在另一个目录(D:\VirtualMachines\test\)中运行vagrant up时,它应该复制配置文件到这个新位置,这样它就可以运行了。我的假设错了吗? -
想通了,请看下面我的回答。
标签: vagrant vagrantfile