我正在尝试弄清楚 Puppet (3.0) 以及它与内置 Hiera 的关系。因此,这就是我尝试的,一个非常简单的示例(当我设法使简单的层次结构正常工作时,我将创建一个更复杂的层次结构):
# /etc/puppet/hiera.yaml
:backends:
- yaml
:hierarchy:
- common
:yaml:
:datadir: /etc/puppet/hieradata
# /etc/puppet/hieradata/common.yaml
test::param: value
# /etc/puppet/modules/test/manifests/init.pp
class test ($param) { notice($param) }
# /etc/puppet/manifests/site.pp
include test
如果我直接应用它,那就没问题:
$ puppet apply /etc/puppet/manifests/site.pp
Scope(Class[Test]): value
如果我通过木偶大师,那就不好了:
$ puppet agent --test
Could not retrieve catalog from remote server: Error 400 on SERVER: Must pass param to Class[Test] at /etc/puppet/manifests/site.pp:1 on node <nodename>
我错过了什么?
编辑:
我刚离开办公室,但突然想到:我应该重启 puppet master,这样它才能看到新的 hiera.conf。我会在周一尝试;与此同时,如果有人能找出一些不是它的问题,我会很感激 :)
答案1
我是个白痴,问题中的编辑是正确的:重新启动 Puppet Master 后,一切都正常了。
答案2
为了希拉(/etc/puppet/environments/local/hieradata/hostgroups/base/你的主机名/all.yaml)
mySuperVariable:lalala
为了在里面(/etc/puppet/environments/local/manifests/你的主机名/manifest)
类 mimir::init { $myvariable = hiera('mySuperVariable', 'fallbackValue') }
为了模板(/etc/puppet/environments/local/manifests/你的主机名/模板)
无论如何...<%= myvariable%>等等