我正在使用Vagrant来启动一些初始的Puppet配置,并对如何在木偶执行工作流程中包括/运行多个清单(不仅仅是site.pp)感到困惑,而又没有将多余的清单放入模块并以这种方式包括它们。
在我将Vagrant指向的木偶清单目录中(见下文),我有两个要执行的清单:site.pp和hierasetup.pp。
config.vm.provision "puppet" do |puppet|
puppet.manifests_path = "puppet_files/manifests"
puppet.module_path = "puppet_files/modules"
puppet.manifest_file = "site.pp"
puppet.options = "--verbose --debug"
end
目前,我将site.pp作为调用hierasetup.pp的清单。我的site.pp看起来像这样:
File {
owner => 'root',
group => 'root',
mode => '0644',
}
import "hierasetup.pp"
include jboss
但是我收到关于“ import”弃用的错误:
警告:在/tmp/vagrant-puppet-1/manifests/site.pp:33中不建议使用“导入”。参见http://links.puppetlabs.com/puppet-import-deprecation (位于grammar.ra:610:_reduce_190'中)
根据“尝试的事情”下引用的URL,它表示“ 要将节点定义保存在单独的文件中,请指定目录作为主清单 ”。
进一步,这个关于主要清单的p文件说:
“ 推荐:如果您大量使用主清单而不是依赖于ENC,请考虑将清单设置更改为$ confdir / manifests。这可让您在避免使用import关键字的情况下将顶级代码分成多个文件。还将匹配简单环境的行为。 ”
看来Puppet可以引用整个目录,而不仅仅是特定的清单文件,因此我希望Vagrant为此提供一个准备,并允许我删除“ puppet.manifest_file =” site.pp “行并指向而不是将在其中执行所有* .pp文件的父目录,但是,在Vagrant中删除该行仅会引起对预期的“ default.pp”的抱怨:
人偶供应商:*缺少配置的人偶清单。请指定现有清单的路径:/some/path/puppet_files/manifests/default.pp
所以:
- 首先,我是否理解正确调用多个清单的“新”(非导入)方式,因为要指向目录,该目录中的所有* .pp文件都将在其中执行?
- 其次,Vagrant是否已“赶上”这一新更改,以适应Puppet对“ import”的弃用而对目录的引用?
更新:感谢Shane,在Vagrant的GitHub问题跟踪网站上报告了#2的问题(Vagrant的代码未被捕获以允许指向木马清单目录),并且此后进行了修补:https : //github.com/mitchellh/vagrant /问题/ 4169