如何从节点中的现有模块扩展文件定义?

我使用example42 mysql模块的旧版本,它定义了mysql.conf文件,但不包含它的内容。 Mmy的目标是只包含mysql模块,并在节点中添加一个内容定义。

class mysql { ... file { "mysql.conf": path => "${mysql::params::configfile}", mode => "${mysql::params::configfile_mode}", owner => "${mysql::params::configfile_owner}", group => "${mysql::params::configfile_group}", ensure => present, require => Package["mysql"], notify => Service["mysql"], } ... } node xyz { include mysql File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")} } 

上面的代码产生一个“只有子类可以覆盖参数”

将内容定义添加到现有文件定义的正确方法是什么?

使用资源收集器 , 在这里描述。 即使不在子类中,资源收集器也可以覆盖资源参数。 它们也更通用,可以使用标签或其他参数来收集资源,而不仅仅是标题。

 node xyz { include mysql File <| title == "mysql.conf" |> { content => template("mymodule/mysql.conf.erb"), } } 

编辑:使用一个子类

另一种select是声明一个子类并将其包含在节点定义中:

 class mysql_custom inherits mysql { File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")} } node xyz { include mysql_custom }