我使用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 }