我目前有一个看起来像这样的课程:
class mymodule (
$files = [],
) {
file { '/my/file':
ensure => file,
content => template(mymodule/mytemplate.erb)
}
}
一个模板:
files:
<% @files.each do |file| -%>
- <%= file %>
<% end -%>
我想将files
参数移动到它自己的定义中,这样我就可以更容易地将类包含在更接近基数的类中,并定义更接近节点定义的不同文件,如:
mymodule::file { '/my/file': }
mymodule::file { '/my/other_file': }
使用已定义的类型构建files
数组有什么好方法?
答案 0 :(得分:1)
使用模板很难实现这样的结构。有两种常见的方法可以解决这个问题。
使用puppetlabs-concat模块,您可以使您的文件包含一系列谨慎的代码段。
class mymodule {
concat { '/my/file': ensure => present }
}
define mymodule::file($content) {
concat::fragment {
target => '/my/file',
content => $content,
order => '50',
}
}
如果您可以使用create_resources
构造将资源移至Hiera,则可以轻松提取资源标题并在模板中使用它们。