我正在使用 Vagrant 来快速启动一些初始 Puppet 配置,并且对如何在 puppet 执行工作流中包含/运行多个清单(不仅仅是 site.pp)而不将额外的清单制作成模块并以这种方式包含它们感到困惑。
在我将 Vagrant 指向的 puppet manifests 目录中(见下文),我有两个要执行的清单: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
Run Code Online (Sandbox Code Playgroud)
目前我让 site.pp 成为调用 hierasetup.pp 的清单。我的 site.pp 看起来像这样:
File {
owner => 'root',
group => 'root',
mode => '0644',
}
import "hierasetup.pp"
include jboss
Run Code Online (Sandbox Code Playgroud)
但是我收到关于弃用“导入”的错误:
警告:在 /tmp/vagrant-puppet-1/manifests/site.pp:33 中不推荐使用“import”。请参阅http://links.puppetlabs.com/puppet-import-deprecation (在grammar.ra:610:in `_reduce_190')
根据“要尝试的事情”下引用的 URL,它说“要将节点定义保存在单独的文件中,请指定一个目录作为主清单”。
"推荐:如果您大量使用主清单而不是依赖 ENC,请考虑将清单设置更改为 $confdir/manifests。这可以让您将顶级代码拆分为多个文件,同时避免使用 import 关键字。它也将匹配简单环境的行为。 ”
看来 Puppet 可以引用整个目录,而不仅仅是一个特定的清单文件,因此我希望 Vagrant 会为此做出规定并允许我删除“ puppet.manifest_file = “site.pp ”行并指向将在其中执行所有 *.pp 文件的父目录。但是,在 Vagrant 中删除该行只会产生对预期的“default.pp”的抱怨:
傀儡供应商: * 配置的傀儡清单丢失。请指定现有清单的路径:/some/path/puppet_files/manifests/default.pp
所以:
更新:感谢 Shane,在 Vagrant 的 GitHub 问题跟踪站点上报告了 #2(Vagrant 的代码没有被赶上以允许指向 puppet manifest 目录)的问题,并且已经修补:https : //github.com/mitchellh/vagrant /问题/4169
首先,我是否理解正确调用多个清单的“新”(非导入)方式,因为要指向一个目录,其中将执行其中的所有 *.pp 文件?
是的你是。见这里:
如果您大量使用主清单而不是依赖 ENC,请考虑将清单设置更改为 $confdir/manifests。这使您可以将顶级代码拆分为多个文件,同时避免使用 import 关键字。
此外,manifest
和modulepath
也越来越有利于目录环境和清单目录行为过时了,看看这里:
现在目录环境已经完成,配置文件环境已被弃用。在 puppet.conf 中定义环境块将导致弃用警告,就像在 puppet.conf 中使用 modulepath、manifest 和 config_version 设置一样。
对于很多部署来说,这是一个相当大的变化,但从长远来看应该是一个很好的改进。
其次,Vagrant 是否“赶上了”这一新变化以适应目录的引用以及 Puppet 对“导入”的弃用?
不,它没有;从他们的文档:
manifest_file (string) - 将作为 Puppet 运行入口点的清单文件的名称。这个清单文件应该存在于配置的 manifests_path 中
为了与 Vagrant 一起使用,您现在不得不处理弃用警告,这很不幸。但是,import 直到 4.x 才会被移除,所以这给了 Vagrant 一些时间来迎头赶上。
归档时间: |
|
查看次数: |
3715 次 |
最近记录: |