我无法让我的Puppet清单以我期望的方式找到模板,所以我觉得有人可能会快速回答。我是木偶的新手,所以只是想了解一切的所有位置以及如何正确引用文件。如果我遗失了一些非常明显的事情,我会道歉。
这有效:
file {
$zabbix_agent_conf:
owner => root,
group => root,
mode => 0644,
content => template("/etc/puppet/templates/zabbix/files/zabbix_agent_conf.erb"),
require => Package["zabbix-agent"];
}
这不是:
file {
$zabbix_agent_conf:
owner => root,
group => root,
mode => 0644,
content => template("puppet:///templates/zabbix/zabbix_agent_conf.erb"),
require => Package["zabbix-agent"];
}
我的/etc/puppet/puppet.conf:
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=/etc/puppet/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post
[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY
答案 0 :(得分:4)
到目前为止,您无法将puppet URI方案与模板功能结合使用。根据文件:
请注意,模板的路径不使用相同的语义 puppet:/// URL中的路径。对不一致感到抱歉。 (Source)
此外:
(如果文件不能位于任何模块内,则为模板功能 将回到相对于Puppet的路径搜索 TEMPLATEDIR。但是,不再推荐使用此设置。)(Source)
这意味着为了使用templatedir,模板函数需要一个简单的相对路径:
template("zabbix/zabbix_agent_conf.erb")
不建议使用templatedir。这是有充分理由的。最好在module的公分母下将文件组合在一起,否则事情会很快变得非常混乱。将模块视为将所有彼此属性的木偶资源分组的好方法:清单,文件,模板,扩展和测试。
所以我建议创建一个zabbix模块。将您的puppet代码放在zabbix模块的manifest目录中的init.pp中的zabbix类中。然后,您可以将模板放在zabbix模块的templates目录中,并可以通过以下方式引用它:
template("zabbix/zabbix_agent_conf.erb")
希望这会有所帮助。祝你好运!
答案 1 :(得分:1)
进入模块后,请使用
模板( “$ {MODULE_NAME} /xxx.erb”)
引用您的模板文件(适用于puppet 4.x.不确定以前的版本)。