在 Vagrant 多机环境中使用 Puppet 的模块范围
Scope of modules using Puppet in a Vagrant multi machine environment
我有一个为 Vagrant 设置多机环境的项目。我不得不修复一些问题,这些问题最初是由重定向到 https 的问题引起的,但解决这些问题会导致其他错误,我在除这个项目之外的所有项目中都修复了这些问题,它使用了 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
我的人偶文件如下所示:
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 中定义的这些模块?还是以这种方式组织它通常是一种不好的做法?我正在为此搜索一些示例,但由于某种原因找不到任何示例...
编辑:看来,根据规定 puppetfile 甚至不再使用,当它不在 /puppet/
中时所以也许我只需要告诉 Vagrant 如何使用它?
定义图书管理员应该在哪里找到人偶文件
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
我有一个为 Vagrant 设置多机环境的项目。我不得不修复一些问题,这些问题最初是由重定向到 https 的问题引起的,但解决这些问题会导致其他错误,我在除这个项目之外的所有项目中都修复了这些问题,它使用了 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
我的人偶文件如下所示:
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 中定义的这些模块?还是以这种方式组织它通常是一种不好的做法?我正在为此搜索一些示例,但由于某种原因找不到任何示例...
编辑:看来,根据规定 puppetfile 甚至不再使用,当它不在 /puppet/
中时所以也许我只需要告诉 Vagrant 如何使用它?
定义图书管理员应该在哪里找到人偶文件
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