使用定义的类型来构建数组?

时间:2014-10-17 16:05:04

标签: puppet

我目前有一个看起来像这样的课程:

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数组有什么好方法?

1 个答案:

答案 0 :(得分:1)

使用模板很难实现这样的结构。有两种常见的方法可以解决这个问题。

concat模块

使用puppetlabs-concat模块,您可以使您的文件包含一系列谨慎的代码段。

class mymodule {
    concat { '/my/file': ensure => present }
}

define mymodule::file($content) {
    concat::fragment {
        target  => '/my/file',
        content => $content,
        order   => '50',
    }
}

Hiera

如果您可以使用create_resources构造将资源移至Hiera,则可以轻松提取资源标题并在模板中使用它们。