如何使用Vagrant框打包文件?

jer*_*ahs 7 virtualization virtualbox provisioning puppet vagrant

所以我使用以下命令创建了一个Vagrant框:

vagrant package --base box_name_here --vagrantfile Vagrantfile --include manifests/
Run Code Online (Sandbox Code Playgroud)

manifests/是一个带有puppet清单的目录,以及一些子目录,其中包含在配置过程中使用的一些文件.在Vagrantfile中调用Puppet,如下所示:

config.vm.provision :puppet do |puppet|
    puppet.manifests_path = "manifests"
    puppet.manifest_file  = "web-dev.pp"
end
Run Code Online (Sandbox Code Playgroud)

当我探索Vagrant创建的打包的.box存档时,我看到该文件夹​​位于box_name_here.box/includes/manifests.但是,vagrant up当我尝试运行它时,会出现以下错误:

为Puppet指定的清单路径不存在:c:/ vagrant/manifests

这些文件是否在其他地方?

我看到这篇文章:https://github.com/mitchellh/vagrant/issues/344

但答案有点不透明; 我不太清楚如何将modulepath响应转换为manifeststs_path问题.

我改变了vagrantfile以便行读取

puppet.manifests_path = "./manifests"
Run Code Online (Sandbox Code Playgroud)

......但这并未解决问题.我仍然得到相同的错误消息.

jer*_*ahs 8

经过一些实验,非常明显的答案是:

puppet.manifests_path = File.expand_path("../manifests", __FILE__)
Run Code Online (Sandbox Code Playgroud)