我有一个为Vagrant设置多机器环境的项目。我不得不修复一些问题,这些问题最初是由重定向问题引起的,但解决了这些问题导致了其他错误,我现在修复了除现在这个项目之外的所有项目,它使用了Vagrant的多机器功能。
所以我有这个文件夹结构:
/Vagrantfile
/puppet/box_1/puppetfile
/puppet/box_1/manifests/site.pp
这是我的代码片段,我在其中定义了我的配置目录:
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/box_1/manifests"
puppet.manifest_file = "site.pp"
end
我的puppetfile看起来像这样:
forge "https://forgeapi.puppetlabs.com"
mod 'tPl0ch/composer'
mod 'puppetlabs/apt'
mod 'puppetlabs/apache'
mod 'puppetlabs/firewall'
在我的site.pp中,我尝试include apt
,但收到此错误消息:
Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::apt for project.local at /tmp/vagrant-puppet/manifests-f2b1fd0ac42b51938ed6ae7e6917367e/site.pp:1:1 on node project.local
当我重新安排我的傀儡文件时:
/Vagrantfile
/puppet/puppetfile
/puppet/manifests/site.pp
像这是设置它的常用方法,它没有那个问题,但正如我所提到的,还有其他盒子,它们使用不同的puppetfiles和site.pp文件,所以这个文件夹结构有点儿意义。看来,它甚至不重要,如果我删除其他框的配置,并设置我的Vagrantfile,就好像它只是一个盒子,所以我只是困惑,这些文件的位置如何影响某些班级的范围。
所以我的问题在这里:有没有办法,保持这个文件夹结构,并仍然在我的site.pp中可用的puppetfile中定义这些模块?或者这通常是一种不好的做法,以这种方式组织它?我正在寻找一些这方面的例子,但由于某些原因无法找到...
编辑:看来,在配置上,当它不在/puppet/
时,它甚至不再使用了,所以也许我只需要告诉Vagrant如何使用它?
答案 0 :(得分:1)
定义图书管理员应该找到木偶文件的位置
Vagrant.configure("2") do |config|
config.librarian_puppet.puppetfile_dir = "puppet/box1"
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/box_1/manifests"
puppet.manifest_file = "site.pp"
end