Puppet无法找到epp模板

48次阅读
没有评论

问题描述

在使用Puppet 6.2.0时,尝试使用一个EPP模板。他在/etc/puppetlabs/code/modules/profile/manifests/linux/base/dns.pp文件中定义了一个文件资源,并在其中使用了一个EPP模板etc/resolv.conf.epp。但是,当尝试编译目录时,出现了错误:Could not find template 'etc/resolv.conf.epp'。用户想知道为什么这个模块无法找到模板,尽管它位于模块自己的模板目录中。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

解决方案1

根据回答1,你需要在epp调用中包含模块名称。修改dns.pp文件中的content属性,将epp调用修改为moduleName/file.epp的形式。具体步骤如下:
1. 打开/etc/puppetlabs/code/modules/profile/manifests/linux/base/dns.pp文件。
2. 找到content属性,并将epp调用修改为moduleName/file.epp的形式。例如,如果模块名称是profile,模板文件是etc/resolv.conf.epp,则修改后的content属性应为:

content => epp('profile/etc/resolv.conf.epp')
  1. 保存文件并重新编译目录。

解决方案2

如果解决方案1无效,你可以尝试将模板文件移动到模块的根目录下的templates文件夹中。具体步骤如下:
1. 打开/etc/puppetlabs/code/modules/profile/templates/etc/resolv.conf.epp文件。
2. 将模板文件移动到模块的根目录下的templates文件夹中。例如,将模板文件移动到/etc/puppetlabs/code/modules/profile/templates文件夹中。
3. 修改dns.pp文件中的content属性,将epp调用修改为file('moduleName/file.epp')的形式。具体步骤如下:
– 打开/etc/puppetlabs/code/modules/profile/manifests/linux/base/dns.pp文件。
– 找到content属性,并将epp调用修改为file('moduleName/file.epp')的形式。例如,如果模块名称是profile,模板文件是etc/resolv.conf.epp,则修改后的content属性应为:
puppet
content => file('profile/etc/resolv.conf.epp')

4. 保存文件并重新编译目录。

以上是解决Puppet无法找到epp模板的两种解决方案。你可以根据具体情况选择其中一种方法进行尝试。如果问题仍然存在,请确保模板文件的路径和名称正确,并检查模块的目录结构是否正确。

正文完